mirror of
				https://e.coding.net/circlecloud/YumCore.git
				synced 2025-11-03 23:06:02 +00:00 
			
		
		
		
	@@ -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;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user