package com.sijobe.spc.command; import com.sijobe.spc.util.FontColour; import com.sijobe.spc.validation.Parameter; import com.sijobe.spc.validation.ParameterString; import com.sijobe.spc.validation.Parameters; import com.sijobe.spc.wrapper.CommandException; import com.sijobe.spc.wrapper.CommandManager; import com.sijobe.spc.wrapper.CommandSender; import java.util.Collections; import java.util.List; /** * Help command provides help for all of the loaded commands * * @author simo_415 * @version 1.1 */ @Command ( name = "help", description = "Brings up the help message", example = "give", videoURL = "http://www.youtube.com/watch?v=mxU4p_vvjGw", version = "1.1", alias = {"?"} ) public class Help extends StandardCommand { public static final String MESSAGE_HEADING = FontColour.GREEN + "===Help==================="; public static final String MESSAGE_FOOTER = FontColour.GREEN + "=========================="; public static final String MESSAGE_USAGE = FontColour.GREEN + "Usage: " + FontColour.WHITE; public static final String MESSAGE_DESCRIPTION = FontColour.GREEN + "Description: " + FontColour.WHITE; public static final String MESSAGE_EXAMPLE = FontColour.GREEN + "Example: " + FontColour.WHITE; public static final String MESSAGE_VIDEO = FontColour.GREEN + "Video: " + FontColour.WHITE; /** * The parameters of the command */ private static final Parameters PARAMETERS = new Parameters ( new Parameter[] { new ParameterString("[COMMAND_NAME]", true) } ); /** * @see com.sijobe.spc.wrapper.CommandBase#execute(net.minecraft.src.ICommandSender, java.util.List) */ @Override public void execute(CommandSender sender, List<?> params) throws CommandException { if (params.size() == 0) { //--General Help List<String> names = CommandManager.getCommandNames(); Collections.sort(names); String commands = ""; for (String name : names) { if (CommandManager.isCommandEnabled(name) && CommandManager.hasPermission(name, getSenderAsPlayer(sender))) { if (name.startsWith("/")) { commands += "/" + name + ", "; } else { commands += name + ", "; } } } if (commands.length() > 0) { commands = commands.substring(0, commands.length() - 2); } sender.sendMessageToPlayer(MESSAGE_HEADING); sender.sendMessageToPlayer(commands); sender.sendMessageToPlayer("Use " + FontColour.AQUA + "/help COMMAND_NAME" + FontColour.WHITE + " for more information."); sender.sendMessageToPlayer(MESSAGE_FOOTER); } else { //-------------------Specific Help String command = (String)params.get(0); if (!CommandManager.doesCommandExist(command) || !CommandManager.isCommandEnabled(command)) { throw new CommandException("Specified command name " + command + " does not exist or is not enabled."); } String description = CommandManager.getCommandDescription(command); String example = CommandManager.getCommandExample(command); String usage = CommandManager.getCommandUsage(command, sender); String video = CommandManager.getCommandVideo(command); sender.sendMessageToPlayer(MESSAGE_HEADING); sender.sendMessageToPlayer("Help for the " + FontColour.AQUA + command + FontColour.WHITE + " command."); if (description != null) { sender.sendMessageToPlayer(MESSAGE_DESCRIPTION + description); } if (usage != null) { sender.sendMessageToPlayer(MESSAGE_USAGE + usage); } if (example != null) { sender.sendMessageToPlayer(MESSAGE_EXAMPLE + "/" + command + " " + example); } if (video != null) { sender.sendMessageToPlayer(MESSAGE_VIDEO + video); } sender.sendMessageToPlayer(MESSAGE_FOOTER); } } /** * @see com.sijobe.spc.wrapper.CommandBase#getParameters() */ @Override public Parameters getParameters() { return PARAMETERS; } }