mirror of
https://e.coding.net/circlecloud/YumCore.git
synced 2024-11-16 00:48:54 +00:00
feat: 添加默认命令处理
Signed-off-by: 502647092 <admin@yumc.pw>
This commit is contained in:
parent
91e0cc4b0e
commit
a567e2eb03
@ -36,6 +36,10 @@ public class CommandHelp {
|
|||||||
String helpTitle = String.format("§6========= %s §6插件帮助列表=========", prefix);
|
String helpTitle = String.format("§6========= %s §6插件帮助列表=========", prefix);
|
||||||
String helpBody = "§6/%1$s §a%2$s §e%3$s §6- §b%4$s";
|
String helpBody = "§6/%1$s §a%2$s §e%3$s §6- §b%4$s";
|
||||||
String helpFooter = "§6查看更多的帮助页面 §b请输入 /%s help §e1-%s";
|
String helpFooter = "§6查看更多的帮助页面 §b请输入 /%s help §e1-%s";
|
||||||
|
/**
|
||||||
|
* 默认命令
|
||||||
|
*/
|
||||||
|
CommandInfo defCmd;
|
||||||
/**
|
/**
|
||||||
* 已排序的命令列表
|
* 已排序的命令列表
|
||||||
*/
|
*/
|
||||||
@ -53,10 +57,45 @@ public class CommandHelp {
|
|||||||
*/
|
*/
|
||||||
private final Map<String, String[]> cacheHelp = new HashMap<>();
|
private final Map<String, String[]> cacheHelp = new HashMap<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 命令帮助
|
||||||
|
*
|
||||||
|
* @param list
|
||||||
|
* 子命令列表
|
||||||
|
*/
|
||||||
public CommandHelp(final Collection<? extends CommandInfo> list) {
|
public CommandHelp(final Collection<? extends CommandInfo> list) {
|
||||||
|
this(null, list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 命令帮助
|
||||||
|
*
|
||||||
|
* @param defCmd
|
||||||
|
* 默认命令
|
||||||
|
* @param list
|
||||||
|
* 子命令列表
|
||||||
|
*/
|
||||||
|
public CommandHelp(final CommandInfo defCmd, final Collection<? extends CommandInfo> list) {
|
||||||
|
this.defCmd = defCmd;
|
||||||
cmdlist = new LinkedList<>(list);
|
cmdlist = new LinkedList<>(list);
|
||||||
Collections.sort(cmdlist, new CommandComparator());
|
Collections.sort(cmdlist, new CommandComparator());
|
||||||
this.HELPPAGECOUNT = (int) Math.ceil((double) cmdlist.size() / LINES_PER_PAGE);
|
HELPPAGECOUNT = (int) Math.ceil((double) cmdlist.size() / LINES_PER_PAGE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 格式化命令信息
|
||||||
|
*
|
||||||
|
* @param ci
|
||||||
|
* 命令信息
|
||||||
|
* @param label
|
||||||
|
* 命令
|
||||||
|
* @return 格式化后的字串
|
||||||
|
*/
|
||||||
|
public String formatCommand(final CommandInfo ci, final String label) {
|
||||||
|
final String aliases = Arrays.toString(ci.getCommand().aliases());
|
||||||
|
final String cmd = ci.getName() + (aliases.length() == 2 ? "" : "§7" + aliases);
|
||||||
|
final Help help = ci.getHelp();
|
||||||
|
return String.format(helpBody, label, cmd, help.possibleArguments(), help.value());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -85,16 +124,15 @@ public class CommandHelp {
|
|||||||
} else {
|
} else {
|
||||||
// 帮助标题
|
// 帮助标题
|
||||||
helpList.add(helpTitle);
|
helpList.add(helpTitle);
|
||||||
|
if (page == 1 && defCmd != null) {
|
||||||
|
helpList.add(formatCommand(defCmd, label));
|
||||||
|
}
|
||||||
final int start = this.LINES_PER_PAGE * (page - 1);
|
final int start = this.LINES_PER_PAGE * (page - 1);
|
||||||
final int end = start + this.LINES_PER_PAGE;
|
final int end = start + this.LINES_PER_PAGE;
|
||||||
for (int i = start; i < end; i++) {
|
for (int i = start; i < end; i++) {
|
||||||
if (this.cmdlist.size() > i) {
|
if (this.cmdlist.size() > i) {
|
||||||
final CommandInfo ci = cmdlist.get(i);
|
|
||||||
final String aliases = Arrays.toString(ci.getCommand().aliases());
|
|
||||||
final String cmd = ci.getName() + (aliases.length() == 2 ? "" : "§7" + aliases);
|
|
||||||
final Help help = ci.getHelp();
|
|
||||||
// 帮助列表
|
// 帮助列表
|
||||||
helpList.add(String.format(helpBody, label, cmd, help.possibleArguments(), help.value()));
|
helpList.add(formatCommand(cmdlist.get(i), label));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,10 @@ public class CommandManager implements TabExecutor {
|
|||||||
* 插件实例类
|
* 插件实例类
|
||||||
*/
|
*/
|
||||||
JavaPlugin plugin = P.instance;
|
JavaPlugin plugin = P.instance;
|
||||||
|
/**
|
||||||
|
* 默认命令
|
||||||
|
*/
|
||||||
|
CommandInfo defCmd = null;
|
||||||
/**
|
/**
|
||||||
* 命令列表
|
* 命令列表
|
||||||
*/
|
*/
|
||||||
@ -91,6 +95,9 @@ public class CommandManager implements TabExecutor {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
|
public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
|
||||||
if (args.length == 0) {
|
if (args.length == 0) {
|
||||||
|
if (defCmd != null) {
|
||||||
|
return defCmd.execute(new CommandArgument(sender, command, label, args));
|
||||||
|
}
|
||||||
help.send(sender, command, label, args);
|
help.send(sender, command, label, args);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -229,6 +236,10 @@ public class CommandManager implements TabExecutor {
|
|||||||
if (ci != null) {
|
if (ci != null) {
|
||||||
final Class<?>[] params = method.getParameterTypes();
|
final Class<?>[] params = method.getParameterTypes();
|
||||||
if (params.length == 1 && params[0].equals(CommandArgument.class)) {
|
if (params.length == 1 && params[0].equals(CommandArgument.class)) {
|
||||||
|
if (method.getReturnType() == boolean.class) {
|
||||||
|
defCmd = ci;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
cmds.add(ci);
|
cmds.add(ci);
|
||||||
cmdCache.put(ci.getName(), ci);
|
cmdCache.put(ci.getName(), ci);
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user