package cn.citycraft.CTZServer.commands; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public abstract class BaseCommand { private String name; private String[] aliases; public BaseCommand(String name) { this(name, new String[0]); } public BaseCommand(String name, String... aliases) { this.name = name; this.aliases = aliases; } /** * 执行命令参数 * * @param label * - 命令 * @param args * - 命令附加参数 */ public abstract void execute(String label, String[] args); /** * 获得命令列表 * * @return 命令列表 */ public List getCommandList() { List cmds = new ArrayList(); cmds.add(name); cmds.addAll(Arrays.asList(aliases)); return cmds; } /** * 获得命令说明 * * @return */ public abstract String getDescription(); /** * 获得最小参数个数 * * @return 最小参数个数 */ public abstract int getMinimumArguments(); /** * 获取命令名称 * * @return 命令名称 */ public String getName() { return name; } /** * 获得可能的参数 * * @return */ public abstract String getPossibleArguments(); /** * 命令匹配检测 * * @param name * - 命令 * @return 是否匹配 */ public final boolean isValidTrigger(String name) { if (this.name.equalsIgnoreCase(name)) return true; if (aliases != null) for (String alias : aliases) if (alias.equalsIgnoreCase(name)) return true; return false; } }