CTZServer/src/main/java/cn/citycraft/CTZServer/commands/BaseCommand.java

89 lines
1.5 KiB
Java

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<String> getCommandList() {
List<String> cmds = new ArrayList<String>();
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;
}
}