diff --git a/src/com/massivecraft/mcore1/cmd/HelpCommand.java b/src/com/massivecraft/mcore1/cmd/HelpCommand.java new file mode 100644 index 00000000..029f82b0 --- /dev/null +++ b/src/com/massivecraft/mcore1/cmd/HelpCommand.java @@ -0,0 +1,53 @@ +package com.massivecraft.mcore1.cmd; + +import java.util.ArrayList; + +import com.massivecraft.mcore1.MPlugin; +import com.massivecraft.mcore1.cmd.MCommand; + +public class HelpCommand extends MCommand +{ + private HelpCommand() + { + super(); + this.addAliases("?", "h", "help"); + this.setDesc(""); + this.addOptionalArg("page","1"); + } + + @Override + public void perform() + { + if (this.commandChain.size() == 0) return; + MCommand parentCommand = this.commandChain.get(this.commandChain.size()-1); + + ArrayList lines = new ArrayList(); + + lines.addAll(p().txt.parse(parentCommand.getHelp())); + + for(MCommand subCommand : parentCommand.getSubCommands()) + { + if (subCommand.visibleTo(sender)) + { + lines.add(subCommand.getUseageTemplate(this.commandChain, true)); + } + } + + Integer pagenumber = this.argAs(0, Integer.class, 1); + if (pagenumber == null) return; + sendMessage(p().txt.getPage(lines, pagenumber, "Help for command \""+parentCommand.getAliases().get(0)+"\"")); + } + + @Override + public MPlugin p() + { + if (this.commandChain.size() == 0) return null; + return this.commandChain.get(this.commandChain.size()-1).p(); + } + + private static HelpCommand instance = new HelpCommand(); + public static HelpCommand getInstance() + { + return instance; + } +} diff --git a/src/com/massivecraft/mcore1/cmd/MCommand.java b/src/com/massivecraft/mcore1/cmd/MCommand.java index 9737977b..f4928062 100644 --- a/src/com/massivecraft/mcore1/cmd/MCommand.java +++ b/src/com/massivecraft/mcore1/cmd/MCommand.java @@ -95,6 +95,13 @@ public abstract class MCommand public String getDescPermission() { return this.descPermission; } public void setDescPermission(String val) { this.descPermission = val; } + // FIELD: help + // This is a multi-line help text for the command. + protected List help = new ArrayList(); + public void setHelp(List val) { this.help = val; } + public void setHelp(String... val) { this.help = Arrays.asList(val); } + public List getHelp() { return this.help; } + // FIELD: visibilityMode protected VisibilityMode visibilityMode; public VisibilityMode getVisibilityMode() { return this.visibilityMode; }