89 lines
1.5 KiB
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;
|
|
}
|
|
}
|