package com.intellectualcrafters.plot.commands; import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.object.RunnableVal2; import com.intellectualcrafters.plot.object.RunnableVal3; import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.MathMan; import com.intellectualcrafters.plot.util.StringMan; import com.intellectualcrafters.plot.util.helpmenu.HelpMenu; import com.plotsquared.general.commands.Command; import com.plotsquared.general.commands.CommandDeclaration; @CommandDeclaration(command = "help", description = "Get this help menu", aliases = {"he", "?"}, category = CommandCategory.INFO, usage="help [category|#]", permission="plots.use") public class Help extends Command { public Help(Command parent) { super(parent, true); } @Override public boolean canExecute(PlotPlayer player, boolean message) { return true; } @Override public void execute(PlotPlayer player, String[] args, RunnableVal3<Command, Runnable, Runnable> confirm, RunnableVal2<Command, CommandResult> whenDone) { switch (args.length) { case 0: displayHelp(player, null, 0); return; case 1: if (MathMan.isInteger(args[0])) { try { displayHelp(player, null, Integer.parseInt(args[0])); } catch (NumberFormatException ignored) { displayHelp(player, null, 1); } } else { displayHelp(player, args[0], 1); } return; case 2: if (MathMan.isInteger(args[1])) { try { displayHelp(player, args[0], Integer.parseInt(args[1])); } catch (NumberFormatException ignored) { displayHelp(player, args[0], 1); } } return; default: C.COMMAND_SYNTAX.send(player, getUsage()); } } public void displayHelp(PlotPlayer player, String cat, int page) { CommandCategory catEnum = null; if (cat != null) { if (StringMan.isEqualIgnoreCase(cat, "all")) { catEnum = null; } else { for (CommandCategory c : CommandCategory.values()) { if (StringMan.isEqualIgnoreCaseToAny(cat, c.name(), c.toString())) { catEnum = c; cat = c.name(); break; } } if (catEnum == null) { cat = null; } } } if (cat == null && page == 0) { StringBuilder builder = new StringBuilder(); builder.append(C.HELP_HEADER.s()); for (CommandCategory c : CommandCategory.values()) { builder.append( "\n" + StringMan.replaceAll(C.HELP_INFO_ITEM.s(), "%category%", c.toString().toLowerCase(), "%category_desc%", c.toString())); } builder.append("\n").append(C.HELP_INFO_ITEM.s().replaceAll("%category%", "all").replaceAll("%category_desc%", "Display all commands")); builder.append("\n" + C.HELP_FOOTER.s()); MainUtil.sendMessage(player, builder.toString(), false); return; } page--; new HelpMenu(player).setCategory(catEnum).getCommands().generateMaxPages().generatePage(page, getParent().toString()).render(); } }