diff --git a/pom.xml b/pom.xml index 689d5a4..1179c1b 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 cn.citycraft Yum - 1.4 + 1.5 Yum Minecraft 服务器插件管理系统 diff --git a/src/main/java/cn/citycraft/Yum/Yum.java b/src/main/java/cn/citycraft/Yum/Yum.java index 3829cde..2f1298c 100644 --- a/src/main/java/cn/citycraft/Yum/Yum.java +++ b/src/main/java/cn/citycraft/Yum/Yum.java @@ -8,9 +8,19 @@ import java.io.IOException; import org.bukkit.plugin.java.JavaPlugin; import org.mcstats.Metrics; +import cn.citycraft.PluginHelper.commands.HandlerSubCommand; import cn.citycraft.PluginHelper.config.FileConfig; import cn.citycraft.PluginHelper.utils.VersionChecker; -import cn.citycraft.Yum.commands.HandlerCommand; +import cn.citycraft.Yum.commands.CommandDelete; +import cn.citycraft.Yum.commands.CommandInfo; +import cn.citycraft.Yum.commands.CommandInstall; +import cn.citycraft.Yum.commands.CommandList; +import cn.citycraft.Yum.commands.CommandLoad; +import cn.citycraft.Yum.commands.CommandReload; +import cn.citycraft.Yum.commands.CommandRepo; +import cn.citycraft.Yum.commands.CommandUnload; +import cn.citycraft.Yum.commands.CommandUpdate; +import cn.citycraft.Yum.commands.CommandUpgrade; import cn.citycraft.Yum.manager.YumManager; /** @@ -22,6 +32,22 @@ public class Yum extends JavaPlugin { public FileConfig config; public YumManager yumgr; + public void initCommands() { + final HandlerSubCommand cmdhandler = new HandlerSubCommand(this); + cmdhandler.registerCommand(new CommandList(this)); + cmdhandler.registerCommand(new CommandInstall(this)); + cmdhandler.registerCommand(new CommandUpdate(this)); + cmdhandler.registerCommand(new CommandDelete(this)); + cmdhandler.registerCommand(new CommandInfo(this)); + cmdhandler.registerCommand(new CommandRepo(this)); + cmdhandler.registerCommand(new CommandReload(this)); + cmdhandler.registerCommand(new CommandLoad(this)); + cmdhandler.registerCommand(new CommandUnload(this)); + cmdhandler.registerCommand(new CommandUpgrade(this)); + this.getCommand("yum").setExecutor(cmdhandler); + this.getCommand("yum").setTabCompleter(cmdhandler); + } + @Override public void onDisable() { YumManager.repo.cacheToJson(config); @@ -30,9 +56,7 @@ public class Yum extends JavaPlugin { @Override public void onEnable() { - final HandlerCommand cmdhandler = new HandlerCommand(this); - this.getCommand("yum").setExecutor(cmdhandler); - this.getCommand("yum").setTabCompleter(cmdhandler); + this.initCommands(); yumgr = new YumManager(this); YumManager.repo.jsonToCache(config); new VersionChecker(this); diff --git a/src/main/java/cn/citycraft/Yum/api/YumApi.java b/src/main/java/cn/citycraft/Yum/api/YumApi.java index d3e251a..ac0bbda 100644 --- a/src/main/java/cn/citycraft/Yum/api/YumApi.java +++ b/src/main/java/cn/citycraft/Yum/api/YumApi.java @@ -6,7 +6,8 @@ package cn.citycraft.Yum.api; /** * Yum仓库插件API * - * @author 蒋天蓓 2015年8月22日下午4:43:41 + * @author 蒋天蓓 + * @since 2015年8月22日下午4:43:41 */ public class YumApi { diff --git a/src/main/java/cn/citycraft/Yum/commands/BaseCommand.java b/src/main/java/cn/citycraft/Yum/commands/BaseCommand.java deleted file mode 100644 index 14d4429..0000000 --- a/src/main/java/cn/citycraft/Yum/commands/BaseCommand.java +++ /dev/null @@ -1,193 +0,0 @@ -/** - * - */ -package cn.citycraft.Yum.commands; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.bukkit.command.CommandException; -import org.bukkit.command.CommandSender; - -/** - * 基础命令类 - * - * @author 蒋天蓓 - * 2015年8月12日下午12:49:34 - */ -public abstract class BaseCommand { - private final String[] aliases; - private final 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, final String description) { - this(name, description, new String[0]); - } - - public BaseCommand(final String name, final String description, final String... aliases) { - this.name = name; - this.description = description; - this.aliases = aliases; - } - - /** - * 执行命令参数 - * - * @param sender - * - 命令发送者 - * @param label - * - 命令 - * @param args - * - 命令附加参数 - * @throws CommandException - * - 命令异常 - */ - public abstract void execute(CommandSender sender, String label, String[] args) throws CommandException; - - /** - * 获得当前命令的别名 - * - * @return 当前命令的别名 - */ - public List getCommandList() { - final List cmds = new ArrayList(); - 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; - } - - /** - * 检查Sender权限 - * - * @param sender - * - 命令发送者 - * @return 是否有权限执行命令 - */ - public final boolean hasPermission(final CommandSender sender) { - if (permission == null) { - return true; - } - return sender.hasPermission(permission); - } - - /** - * 是否只有玩家才能执行此命令 - * - * @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 minimumArguments - * - 最小参数个数 - */ - public void setMinimumArguments(final int minimumArguments) { - this.minimumArguments = minimumArguments; - } - - /** - * 设置是否只允许玩家执行 - * - * @param onlyPlayerExecutable - * - 是否只允许玩家执行 - */ - public void setOnlyPlayerExecutable(final boolean onlyPlayerExecutable) { - this.onlyPlayerExecutable = onlyPlayerExecutable; - } - - /** - * 设置命令权限 - * - * @param permission - * - 命令权限 - */ - public void setPermission(final String permission) { - this.permission = permission; - } - - /** - * 设置可能的命令参数 - * - * @param possibleArguments - * - 可能的命令参数 - */ - public void setPossibleArguments(final String possibleArguments) { - this.possibleArguments = possibleArguments; - } - -} diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandDelete.java b/src/main/java/cn/citycraft/Yum/commands/CommandDelete.java index fb23202..e5f7d51 100644 --- a/src/main/java/cn/citycraft/Yum/commands/CommandDelete.java +++ b/src/main/java/cn/citycraft/Yum/commands/CommandDelete.java @@ -4,10 +4,12 @@ package cn.citycraft.Yum.commands; import org.bukkit.Bukkit; +import org.bukkit.command.Command; import org.bukkit.command.CommandException; import org.bukkit.command.CommandSender; import org.bukkit.plugin.Plugin; +import cn.citycraft.PluginHelper.commands.BaseCommand; import cn.citycraft.Yum.Yum; import cn.citycraft.Yum.manager.YumManager; @@ -23,14 +25,15 @@ public class CommandDelete extends BaseCommand { * @param name */ public CommandDelete(final Yum main) { - super("delete", "删除插件"); + super("delete", "remove"); this.main = main; setMinimumArguments(1); + setDescription("删除插件"); setPossibleArguments("<插件名称>"); } @Override - public void execute(final CommandSender sender, final String label, final String[] args) throws CommandException { + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { final String pluginname = args[0]; final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname); if (plugin != null) { @@ -42,5 +45,5 @@ public class CommandDelete extends BaseCommand { } else { sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!"); } - }; + } } diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandInfo.java b/src/main/java/cn/citycraft/Yum/commands/CommandInfo.java index 586c165..9994793 100644 --- a/src/main/java/cn/citycraft/Yum/commands/CommandInfo.java +++ b/src/main/java/cn/citycraft/Yum/commands/CommandInfo.java @@ -4,11 +4,13 @@ package cn.citycraft.Yum.commands; import org.apache.commons.lang.StringUtils; +import org.bukkit.command.Command; import org.bukkit.command.CommandException; import org.bukkit.command.CommandSender; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginDescriptionFile; +import cn.citycraft.PluginHelper.commands.BaseCommand; import cn.citycraft.PluginHelper.utils.StringUtil; import cn.citycraft.Yum.Yum; import cn.citycraft.Yum.manager.YumManager; @@ -25,16 +27,15 @@ public class CommandInfo extends BaseCommand { * @param name */ public CommandInfo(final Yum main) { - super("info", "查看插件详情"); + super("info"); this.main = main; + setMinimumArguments(1); + setDescription("查看插件详情"); setPossibleArguments("<插件名称>"); } @Override - public void execute(final CommandSender sender, final String label, final String[] args) throws CommandException { - if (args.length == 0) { - return; - } + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { final String pluginname = args[0]; final Plugin plugin = main.getServer().getPluginManager().getPlugin(pluginname); if (plugin != null) { diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandInstall.java b/src/main/java/cn/citycraft/Yum/commands/CommandInstall.java index 031172b..56272f4 100644 --- a/src/main/java/cn/citycraft/Yum/commands/CommandInstall.java +++ b/src/main/java/cn/citycraft/Yum/commands/CommandInstall.java @@ -4,10 +4,12 @@ package cn.citycraft.Yum.commands; import org.bukkit.Bukkit; +import org.bukkit.command.Command; import org.bukkit.command.CommandException; import org.bukkit.command.CommandSender; import org.bukkit.plugin.Plugin; +import cn.citycraft.PluginHelper.commands.BaseCommand; import cn.citycraft.Yum.Yum; import cn.citycraft.Yum.manager.YumManager; @@ -23,14 +25,15 @@ public class CommandInstall extends BaseCommand { * @param name */ public CommandInstall(final Yum main) { - super("install", "安装插件"); + super("install"); this.main = main; setMinimumArguments(1); + setDescription("安装插件"); setPossibleArguments("<插件名称>"); } @Override - public void execute(final CommandSender sender, final String label, final String[] args) throws CommandException { + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { final String pluginname = args[0]; final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname); if (plugin == null) { @@ -45,8 +48,7 @@ public class CommandInstall extends BaseCommand { } }); } else { - sender.sendMessage("§c插件已安装在服务器 需要更新请使用yum update " + pluginname + "!"); + sender.sendMessage("§c插件" + pluginname + "已安装在服务器 需要更新请使用yum update " + pluginname + "!"); } - - }; + } } diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandList.java b/src/main/java/cn/citycraft/Yum/commands/CommandList.java index 6acf2f0..45762c9 100644 --- a/src/main/java/cn/citycraft/Yum/commands/CommandList.java +++ b/src/main/java/cn/citycraft/Yum/commands/CommandList.java @@ -4,10 +4,12 @@ package cn.citycraft.Yum.commands; import org.bukkit.Bukkit; +import org.bukkit.command.Command; import org.bukkit.command.CommandException; import org.bukkit.command.CommandSender; import org.bukkit.plugin.Plugin; +import cn.citycraft.PluginHelper.commands.BaseCommand; import cn.citycraft.Yum.Yum; import cn.citycraft.Yum.manager.YumManager; @@ -23,12 +25,13 @@ public class CommandList extends BaseCommand { * @param name */ public CommandList(final Yum main) { - super("list", "列出已安装插件列表"); + super("list"); this.main = main; + setDescription("列出已安装插件列表"); } @Override - public void execute(final CommandSender sender, final String label, final String[] args) throws CommandException { + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { sender.sendMessage("§6[Yum仓库]§3服务器已安装插件: "); for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) { sender.sendMessage("§6 - " + YumManager.plugman.getFormattedName(plugin, true)); diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandLoad.java b/src/main/java/cn/citycraft/Yum/commands/CommandLoad.java index a1effbe..9366ebe 100644 --- a/src/main/java/cn/citycraft/Yum/commands/CommandLoad.java +++ b/src/main/java/cn/citycraft/Yum/commands/CommandLoad.java @@ -4,10 +4,12 @@ package cn.citycraft.Yum.commands; import org.bukkit.Bukkit; +import org.bukkit.command.Command; import org.bukkit.command.CommandException; import org.bukkit.command.CommandSender; import org.bukkit.plugin.Plugin; +import cn.citycraft.PluginHelper.commands.BaseCommand; import cn.citycraft.Yum.Yum; import cn.citycraft.Yum.manager.YumManager; @@ -23,14 +25,15 @@ public class CommandLoad extends BaseCommand { * @param name */ public CommandLoad(final Yum main) { - super("load", "载入插件"); + super("load"); this.main = main; setMinimumArguments(1); + setDescription("载入插件"); setPossibleArguments("<插件名称>"); } @Override - public void execute(final CommandSender sender, final String label, final String[] args) throws CommandException { + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { final String pluginname = args[0]; final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname); if (plugin == null) { diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandReload.java b/src/main/java/cn/citycraft/Yum/commands/CommandReload.java index 4a34be4..faf27ec 100644 --- a/src/main/java/cn/citycraft/Yum/commands/CommandReload.java +++ b/src/main/java/cn/citycraft/Yum/commands/CommandReload.java @@ -4,10 +4,12 @@ package cn.citycraft.Yum.commands; import org.bukkit.Bukkit; +import org.bukkit.command.Command; import org.bukkit.command.CommandException; import org.bukkit.command.CommandSender; import org.bukkit.plugin.Plugin; +import cn.citycraft.PluginHelper.commands.BaseCommand; import cn.citycraft.Yum.Yum; import cn.citycraft.Yum.manager.YumManager; @@ -23,14 +25,15 @@ public class CommandReload extends BaseCommand { * @param name */ public CommandReload(final Yum main) { - super("reload", "重载插件"); + super("reload"); this.main = main; setMinimumArguments(1); + setDescription("重载插件"); setPossibleArguments("<插件名称|all|*>"); } @Override - public void execute(final CommandSender sender, final String label, final String[] args) throws CommandException { + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { final String pluginname = args[0]; if (pluginname.equalsIgnoreCase("all") || pluginname.equalsIgnoreCase("*")) { YumManager.plugman.reloadAll(sender); diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandRepo.java b/src/main/java/cn/citycraft/Yum/commands/CommandRepo.java index cd75433..1154d17 100644 --- a/src/main/java/cn/citycraft/Yum/commands/CommandRepo.java +++ b/src/main/java/cn/citycraft/Yum/commands/CommandRepo.java @@ -3,9 +3,11 @@ */ package cn.citycraft.Yum.commands; +import org.bukkit.command.Command; import org.bukkit.command.CommandException; import org.bukkit.command.CommandSender; +import cn.citycraft.PluginHelper.commands.BaseCommand; import cn.citycraft.PluginHelper.utils.StringUtil; import cn.citycraft.Yum.Yum; import cn.citycraft.Yum.manager.YumManager; @@ -22,14 +24,15 @@ public class CommandRepo extends BaseCommand { * @param name */ public CommandRepo(final Yum main) { - super("repo", "插件源命令"); + super("repo"); this.main = main; setMinimumArguments(1); + setDescription("插件源命令"); setPossibleArguments(" <仓库名称>"); } @Override - public void execute(final CommandSender sender, final String label, final String[] args) throws CommandException { + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { final String cmd = args[0]; switch (cmd) { case "add": diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandUnload.java b/src/main/java/cn/citycraft/Yum/commands/CommandUnload.java index 7e925bb..19dd8b9 100644 --- a/src/main/java/cn/citycraft/Yum/commands/CommandUnload.java +++ b/src/main/java/cn/citycraft/Yum/commands/CommandUnload.java @@ -4,10 +4,12 @@ package cn.citycraft.Yum.commands; import org.bukkit.Bukkit; +import org.bukkit.command.Command; import org.bukkit.command.CommandException; import org.bukkit.command.CommandSender; import org.bukkit.plugin.Plugin; +import cn.citycraft.PluginHelper.commands.BaseCommand; import cn.citycraft.Yum.Yum; import cn.citycraft.Yum.manager.YumManager; @@ -23,14 +25,15 @@ public class CommandUnload extends BaseCommand { * @param name */ public CommandUnload(final Yum main) { - super("unload", "卸载插件"); + super("unload"); this.main = main; setMinimumArguments(1); + setDescription("卸载插件"); setPossibleArguments("<插件名称>"); } @Override - public void execute(final CommandSender sender, final String label, final String[] args) throws CommandException { + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { final String pluginname = args[0]; final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname); if (plugin != null) { diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandUpdate.java b/src/main/java/cn/citycraft/Yum/commands/CommandUpdate.java index 82c39cd..05b6b6a 100644 --- a/src/main/java/cn/citycraft/Yum/commands/CommandUpdate.java +++ b/src/main/java/cn/citycraft/Yum/commands/CommandUpdate.java @@ -4,10 +4,12 @@ package cn.citycraft.Yum.commands; import org.bukkit.Bukkit; +import org.bukkit.command.Command; import org.bukkit.command.CommandException; import org.bukkit.command.CommandSender; import org.bukkit.plugin.Plugin; +import cn.citycraft.PluginHelper.commands.BaseCommand; import cn.citycraft.Yum.Yum; import cn.citycraft.Yum.manager.YumManager; @@ -21,14 +23,15 @@ public class CommandUpdate extends BaseCommand { * @param name */ public CommandUpdate(final Yum main) { - super("update", "更新插件"); + super("update"); this.main = main; setMinimumArguments(1); + setDescription("更新插件"); setPossibleArguments("<插件名称> [插件版本]"); } @Override - public void execute(final CommandSender sender, final String label, final String[] args) throws CommandException { + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { final String pluginname = args[0]; final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname); sender.sendMessage("§a开始更新插件: " + pluginname); @@ -44,7 +47,7 @@ public class CommandUpdate extends BaseCommand { } }); } else { - sender.sendMessage("§c插件未安装或已卸载 需要安装请使用yum install " + pluginname + "!"); + sender.sendMessage("§c插件" + pluginname + "未安装或已卸载 需要安装请使用/yum install " + pluginname + "!"); } }; } diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandUpgrade.java b/src/main/java/cn/citycraft/Yum/commands/CommandUpgrade.java index 5ceb359..e69e12f 100644 --- a/src/main/java/cn/citycraft/Yum/commands/CommandUpgrade.java +++ b/src/main/java/cn/citycraft/Yum/commands/CommandUpgrade.java @@ -4,10 +4,12 @@ package cn.citycraft.Yum.commands; import org.bukkit.Bukkit; +import org.bukkit.command.Command; import org.bukkit.command.CommandException; import org.bukkit.command.CommandSender; import org.bukkit.plugin.Plugin; +import cn.citycraft.PluginHelper.commands.BaseCommand; import cn.citycraft.Yum.Yum; import cn.citycraft.Yum.manager.YumManager; @@ -21,13 +23,14 @@ public class CommandUpgrade extends BaseCommand { * @param name */ public CommandUpgrade(final Yum main) { - super("upgrade", "升级插件"); + super("upgrade"); this.main = main; + setDescription("升级插件"); setPossibleArguments("[插件名称]"); } @Override - public void execute(final CommandSender sender, final String label, final String[] args) throws CommandException { + public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException { Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() { @Override public void run() { diff --git a/src/main/java/cn/citycraft/Yum/commands/HandlerCommand.java b/src/main/java/cn/citycraft/Yum/commands/HandlerCommand.java deleted file mode 100644 index 70f8b95..0000000 --- a/src/main/java/cn/citycraft/Yum/commands/HandlerCommand.java +++ /dev/null @@ -1,168 +0,0 @@ -/** - * - */ -package cn.citycraft.Yum.commands; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import org.bukkit.command.Command; -import org.bukkit.command.CommandException; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; -import org.bukkit.entity.Player; -import org.bukkit.util.StringUtil; - -import cn.citycraft.Yum.Yum; -import cn.citycraft.Yum.manager.YumManager; - -/** - * 子命令处理类 - * - * @author 蒋天蓓 2015年8月22日上午8:29:44 - */ -public class HandlerCommand implements CommandExecutor, TabCompleter { - /** - * 命令监听类列表 - */ - private final List commandlist = new ArrayList(); - - /** - * 插件主类 - */ - Yum main;; - /** - * 已注册命令列表(包括别名) - */ - List RegisterCommandList = new ArrayList(); - - /** - * 注册子命令 - * - * @param yum - * - 插件主类 - */ - public HandlerCommand(final Yum yum) { - this.main = yum; - registerCommand(new CommandList(yum)); - registerCommand(new CommandInstall(yum)); - registerCommand(new CommandUpdate(yum)); - registerCommand(new CommandDelete(yum)); - registerCommand(new CommandInfo(yum)); - registerCommand(new CommandRepo(yum)); - registerCommand(new CommandReload(yum)); - registerCommand(new CommandLoad(yum)); - registerCommand(new CommandUnload(yum)); - registerCommand(new CommandUpgrade(yum)); - - RegisterCommandList = getRegisterCommands(); - } - - /** - * 转移数组 - * - * @param args - * - 原数组 - * @param start - * - 数组开始位置 - * @return 转移后的数组字符串 - */ - public static String[] moveStrings(final String[] args, final int start) { - final String[] ret = new String[args.length - start]; - System.arraycopy(args, start, ret, 0, ret.length); - return ret; - } - - /** - * 获得已注册的命令列表 - * - * @return - 返回已注册的命令List - */ - public List getRegisterCommands() { - final List cmds = new ArrayList(); - for (final BaseCommand command : commandlist) { - cmds.addAll(command.getCommandList()); - } - return cmds; - } - - @Override - public boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) { - if (args.length == 0) { - return true; - } - final String subcmd = args[0]; - if (subcmd.equalsIgnoreCase("help")) { - sender.sendMessage("§6=========YUM插件帮助列表========="); - for (final BaseCommand command : commandlist) { - sender.sendMessage(String.format("§6/yum §a%1$s %2$s §6- §b%3$s", command.getName(), command.getPossibleArguments(), command.getDescription())); - } - return true; - } - final String[] subargs = moveStrings(args, 1); - for (final BaseCommand command : commandlist) { - if (command.isValidTrigger(subcmd)) { - if (!command.hasPermission(sender)) { - sender.sendMessage("§c你没有此命令的权限!"); - return true; - } - if (command.isOnlyPlayerExecutable() && !(sender instanceof Player)) { - sender.sendMessage("§c控制台无法使用此命令!"); - return true; - } - if (subargs.length >= command.getMinimumArguments()) { - try { - command.execute(sender, subcmd, subargs); - return true; - } catch (final CommandException e) { - sender.sendMessage(e.getMessage()); - } - } else { - sender.sendMessage("§c错误的参数 §e使用方法 /yum " + command.getName() + command.getPossibleArguments()); - } - } - } - return false; - } - - @Override - public List onTabComplete(final CommandSender sender, final Command command, final String label, final String[] args) { - if (sender.isOp() || sender.hasPermission("yum.admin") || sender.hasPermission("yum." + args[0])) { - final List completions = new ArrayList<>(); - if (args.length == 1) { - final String partialCommand = args[0]; - final List commands = RegisterCommandList; - StringUtil.copyPartialMatches(partialCommand, commands, completions); - } - if (args.length == 2) { - final String partialPlugin = args[1]; - List plugins = null; - if (args[0].equalsIgnoreCase("install")) { - plugins = YumManager.repo.getAllPluginName(); - } else if (args[0].equalsIgnoreCase("repo")) { - plugins = Arrays.asList(new String[] { "add", "list", "clean", "update" }); - } else { - plugins = YumManager.plugman.getPluginNames(false); - } - StringUtil.copyPartialMatches(partialPlugin, plugins, completions); - } - Collections.sort(completions); - return completions; - } - return null; - } - - /** - * 注册命令 - * - * @param command - * - 被注册的命令类 - */ - public void registerCommand(final BaseCommand command) { - commandlist.add(command); - } - -}