package me.desht.scrollingmenusign.commands;
import java.util.Arrays;
import java.util.List;
import me.desht.dhutils.MiscUtil;
import me.desht.scrollingmenusign.SMSMenu;
import me.desht.scrollingmenusign.SMSPersistence;
import me.desht.scrollingmenusign.ScrollingMenuSign;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.Plugin;
public class ReloadCommand extends SMSAbstractCommand {
public ReloadCommand() {
super("sms reload");
setPermissionNode("scrollingmenusign.commands.reload");
setUsage("/sms reload [menus] [macros] [config]");
}
@Override
public boolean execute(Plugin plugin, CommandSender sender, String[] args) {
boolean loadMenus = false;
boolean loadViews = false;
boolean loadMacros = false;
boolean loadConfig = false;
boolean loadAll = false;
boolean loadVariables = false;
boolean loadFonts = false;
if (args.length == 0) {
loadAll = true;
} else {
for (String arg : args) {
if (arg.startsWith("me")) {
loadMenus = true;
} else if (arg.startsWith("ma")) {
loadMacros = true;
} else if (arg.startsWith("c")) {
loadConfig = true;
} else if (arg.startsWith("va")) {
loadVariables = true;
} else if (arg.startsWith("vi")) {
loadViews = true;
} else if (arg.startsWith("fo")) {
loadFonts = true;
}
}
}
if (loadAll || loadConfig) {
plugin.reloadConfig();
((ScrollingMenuSign) plugin).getConfigCache().processConfig(plugin.getConfig());
}
if (loadAll || loadMenus) {
SMSPersistence.loadMenus();
SMSPersistence.loadViews();
}
if (loadViews && !loadMenus) {
SMSPersistence.loadViews();
}
if (loadAll || loadMacros) {
SMSPersistence.loadMacros();
}
if (loadAll || loadVariables) {
SMSPersistence.loadVariables();
}
if (loadAll || loadFonts) {
ScrollingMenuSign.getInstance().setupCustomFonts();
}
((ScrollingMenuSign) plugin).getMenuManager().updateAllMenus();
MiscUtil.statusMessage(sender, "Reload complete.");
return true;
}
@Override
public List<String> onTabComplete(Plugin plugin, CommandSender sender, String[] args) {
if (args.length >= 1) {
List<String> opts = Arrays.asList("menus", "macros", "config", "views", "vars", "fonts");
return filterPrefix(sender, opts, args[args.length - 1]);
} else {
showUsage(sender);
return noCompletions(sender);
}
}
}