180 lines
3.5 KiB
Java
180 lines
3.5 KiB
Java
package cn.citycraft.CTZServer.commands;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
|
|
import org.bukkit.command.CommandException;
|
|
|
|
/**
|
|
* 基础命令类
|
|
*
|
|
* @author 蒋天蓓
|
|
* 2015年8月12日下午12:49:34
|
|
*/
|
|
public abstract class BaseCommand {
|
|
private final String[] aliases;
|
|
private String description = "无";
|
|
private int minimumArguments = 0;
|
|
private final String name;
|
|
private boolean onlyPlayerExecutable = false;
|
|
private String permission;
|
|
private String possibleArguments = "";
|
|
|
|
public BaseCommand(final String name) {
|
|
this(name, new String[0]);
|
|
}
|
|
|
|
public BaseCommand(final String name, final String... aliases) {
|
|
this.name = name;
|
|
this.aliases = aliases;
|
|
}
|
|
|
|
/**
|
|
* 执行命令参数
|
|
*
|
|
* @param sender
|
|
* - 命令发送者
|
|
* @param label
|
|
* - 命令
|
|
* @param args
|
|
* - 命令附加参数
|
|
* @throws CommandException
|
|
* - 命令异常
|
|
*/
|
|
public abstract void execute(String label, String[] args);
|
|
|
|
public List<String> getCommandList() {
|
|
final List<String> cmds = new ArrayList<String>();
|
|
cmds.add(name);
|
|
cmds.addAll(Arrays.asList(aliases));
|
|
return cmds;
|
|
}
|
|
|
|
/**
|
|
* 获得命令描述
|
|
*
|
|
* @return 命令描述
|
|
*/
|
|
public String getDescription() {
|
|
return description;
|
|
}
|
|
|
|
/**
|
|
* 获得最小参数个数
|
|
*
|
|
* @return 最小参数个数
|
|
*/
|
|
public int getMinimumArguments() {
|
|
return minimumArguments;
|
|
}
|
|
|
|
/**
|
|
* 获取命令名称
|
|
*
|
|
* @return 命令名称
|
|
*/
|
|
public String getName() {
|
|
return name;
|
|
}
|
|
|
|
/**
|
|
* 获得命令权限
|
|
*
|
|
* @return 目录命令权限
|
|
*/
|
|
public String getPermission() {
|
|
return permission;
|
|
}
|
|
|
|
/**
|
|
* 获得可能的参数
|
|
*
|
|
* @return
|
|
*/
|
|
public String getPossibleArguments() {
|
|
return possibleArguments;
|
|
}
|
|
|
|
/**
|
|
* 是否只有玩家才能执行此命令
|
|
*
|
|
* @return 是否为玩家命令
|
|
*/
|
|
public boolean isOnlyPlayerExecutable() {
|
|
return onlyPlayerExecutable;
|
|
}
|
|
|
|
/**
|
|
* 命令匹配检测
|
|
*
|
|
* @param name
|
|
* - 命令
|
|
* @return 是否匹配
|
|
*/
|
|
public final boolean isValidTrigger(final String name) {
|
|
if (this.name.equalsIgnoreCase(name)) {
|
|
return true;
|
|
}
|
|
if (aliases != null) {
|
|
for (final String alias : aliases) {
|
|
if (alias.equalsIgnoreCase(name)) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* 设置命令的描述信息
|
|
*
|
|
* @param description
|
|
* - 命令描述
|
|
*/
|
|
public void setDescription(final String description) {
|
|
this.description = description;
|
|
}
|
|
|
|
/**
|
|
* 设置命令的最小参数个数
|
|
*
|
|
* @param minimumArguments
|
|
* - 最小参数个数
|
|
*/
|
|
public void setMinimumArguments(final int minimumArguments) {
|
|
this.minimumArguments = minimumArguments;
|
|
}
|
|
|
|
/**
|
|
* 设置是否只允许玩家执行
|
|
*
|
|
* @param onlyPlayerExecutable
|
|
* - 是否只允许玩家执行
|
|
*/
|
|
public void setOnlyPlayerExecutable() {
|
|
this.onlyPlayerExecutable = true;
|
|
}
|
|
|
|
/**
|
|
* 设置命令权限
|
|
*
|
|
* @param permission
|
|
* - 命令权限
|
|
*/
|
|
public void setPermission(final String permission) {
|
|
this.permission = permission;
|
|
}
|
|
|
|
/**
|
|
* 设置可能的命令参数
|
|
*
|
|
* @param possibleArguments
|
|
* - 可能的命令参数
|
|
*/
|
|
public void setPossibleArguments(final String possibleArguments) {
|
|
this.possibleArguments = possibleArguments;
|
|
}
|
|
|
|
}
|