diff --git a/pom.xml b/pom.xml
index 9215e05..29bac59 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
cn.citycraft
Yum
- 1.9.6
+ 1.9.7
Yum
Minecraft 服务器插件管理系统
@@ -55,7 +55,7 @@
http://ci.citycraft.cn:8080
- &c修复没有Gson的服务端仓库管理出错的问题...
+ &c去除离线缓存 修复版本更新模块...
Debug
UTF-8
diff --git a/src/main/java/cn/citycraft/Yum/Yum.java b/src/main/java/cn/citycraft/Yum/Yum.java
index fda2702..e3451c8 100644
--- a/src/main/java/cn/citycraft/Yum/Yum.java
+++ b/src/main/java/cn/citycraft/Yum/Yum.java
@@ -14,29 +14,24 @@ import cn.citycraft.Yum.file.commands.FileCommand;
/**
* MC插件仓库
*
- * @author 蒋天蓓 2015年8月21日下午5:14:39
+ * @author 喵♂呜
+ * @since 2015年8月21日下午5:14:39
*/
public class Yum extends JavaPlugin {
- public FileConfig config;
+ public FileConfig config;
- @Override
- public void onDisable() {
- YumAPI.getRepo().cacheToJson(config);
- }
+ @Override
+ public void onEnable() {
+ new YumAPI(this);
+ new YumCommand(this);
+ new FileCommand(this);
+ new VersionChecker(this);
+ YumAPI.updaterepo();
+ }
- @Override
- public void onEnable() {
- new YumAPI(this);
- new YumCommand(this);
- new FileCommand(this);
- YumAPI.getRepo().jsonToCache(config);
- YumAPI.updaterepo();
- new VersionChecker(this);
- }
-
- @Override
- public void onLoad() {
- config = new FileConfig(this);
- }
+ @Override
+ public void onLoad() {
+ config = new FileConfig(this);
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/api/YumAPI.java b/src/main/java/cn/citycraft/Yum/api/YumAPI.java
index 7730c3b..bf4b07d 100644
--- a/src/main/java/cn/citycraft/Yum/api/YumAPI.java
+++ b/src/main/java/cn/citycraft/Yum/api/YumAPI.java
@@ -20,316 +20,318 @@ import cn.citycraft.Yum.manager.RepositoryManager;
/**
* Yum管理中心
*
- * @author 蒋天蓓
- * 2015年9月1日上午10:59:47
+ * @author 喵♂呜
+ * @since 2015年9月1日上午10:59:47
*/
public class YumAPI {
- private static DownloadManager download;
+ private static DownloadManager download;
- private static Plugin main;
+ private static Plugin main;
- private static PluginsManager plugman;
+ private static PluginsManager plugman;
- private static RepositoryManager repo;
+ private static RepositoryManager repo;
- /**
- * 初始化Yum管理中心
- *
- * @param plugin
- * 插件实体
- */
- public YumAPI(final Plugin plugin) {
- YumAPI.main = plugin;
- plugman = new PluginsManager(main);
- download = new DownloadManager(main);
- repo = new RepositoryManager(main);
- }
+ /**
+ * 初始化Yum管理中心
+ *
+ * @param plugin
+ * 插件实体
+ */
+ public YumAPI(final Plugin plugin) {
+ YumAPI.main = plugin;
+ plugman = new PluginsManager(main);
+ download = new DownloadManager(main);
+ repo = new RepositoryManager(main);
+ }
- /**
- * 删除插件
- *
- * @param plugin
- * 插件实体
- */
- public static void delete(final Plugin plugin) {
- plugman.deletePlugin(plugin);
- }
+ /**
+ * 删除插件
+ *
+ * @param plugin
+ * 插件实体
+ */
+ public static void delete(final Plugin plugin) {
+ plugman.deletePlugin(plugin);
+ }
- /**
- * 获得下载管理器
- *
- * @return {@link DownloadManager}
- */
- public static DownloadManager getDownload() {
- return download;
- }
+ /**
+ * 获得下载管理器
+ *
+ * @return {@link DownloadManager}
+ */
+ public static DownloadManager getDownload() {
+ return download;
+ }
- /**
- * 获得插件管理器
- *
- * @return {@link PluginsManager}
- */
- public static PluginsManager getPlugman() {
- return plugman;
- }
+ /**
+ * 获得插件管理器
+ *
+ * @return {@link PluginsManager}
+ */
+ public static PluginsManager getPlugman() {
+ return plugman;
+ }
- /**
- * 获得仓库管理器
- *
- * @return {@link RepositoryManager}
- */
- public static RepositoryManager getRepo() {
- return repo;
- }
+ /**
+ * 获得仓库管理器
+ *
+ * @return {@link RepositoryManager}
+ */
+ public static RepositoryManager getRepo() {
+ return repo;
+ }
- /**
- * 安装新插件
- *
- * @param sender
- * 命令发送者
- * @param pluginname
- * 插件名称
- * @param version
- * 插件版本
- * @return 是否安装成功
- */
- public static boolean install(final CommandSender sender, final String pluginname, final String url) {
- final File pluginFile = new File(Bukkit.getUpdateFolderFile().getParentFile(), pluginname + ".jar");
- if (download.run(sender, url, pluginFile)) {
- return plugman.load(sender, pluginFile);
- }
- return false;
- }
+ /**
+ * 安装新插件
+ *
+ * @param sender
+ * 命令发送者
+ * @param pluginname
+ * 插件名称
+ * @param version
+ * 插件版本
+ * @return 是否安装成功
+ */
+ public static boolean install(final CommandSender sender, final String pluginname, final String url) {
+ final File pluginFile = new File(Bukkit.getUpdateFolderFile().getParentFile(), pluginname + ".jar");
+ if (download.run(sender, url, pluginFile)) {
+ return plugman.load(sender, pluginFile);
+ }
+ return false;
+ }
- /**
- * 安装新插件
- *
- * @param pluginname
- * 插件名称
- * @param version
- * 插件版本
- * @return 是否安装成功
- */
- public static boolean install(final String pluginname, final String url) {
- return install(null, pluginname, url);
- }
+ /**
+ * 安装新插件
+ *
+ * @param pluginname
+ * 插件名称
+ * @param version
+ * 插件版本
+ * @return 是否安装成功
+ */
+ public static boolean install(final String pluginname, final String url) {
+ return install(null, pluginname, url);
+ }
- /**
- * 安装新插件
- *
- * @param sender
- * 命令发送者
- * @param pluginname
- * 插件名称
- * @return 是否安装成功
- */
- public static boolean installfromyum(final CommandSender sender, final String pluginname) {
- return installfromyum(sender, pluginname, null);
- }
+ /**
+ * 安装新插件
+ *
+ * @param sender
+ * 命令发送者
+ * @param pluginname
+ * 插件名称
+ * @return 是否安装成功
+ */
+ public static boolean installfromyum(final CommandSender sender, final String pluginname) {
+ return installfromyum(sender, pluginname, null);
+ }
- /**
- * 安装新插件
- *
- * @param sender
- * 命令发送者
- * @param pluginname
- * 插件名称
- * @param version
- * 插件版本
- * @return 是否安装成功
- */
- public static boolean installfromyum(final CommandSender sender, final String pluginname, final String version) {
- final PluginInfo pi = repo.getPlugin(pluginname);
- if (pi != null) {
- return install(sender, pi.name, pi.getUrl(sender, version));
- }
- return false;
- }
+ /**
+ * 安装新插件
+ *
+ * @param sender
+ * 命令发送者
+ * @param pluginname
+ * 插件名称
+ * @param version
+ * 插件版本
+ * @return 是否安装成功
+ */
+ public static boolean installfromyum(final CommandSender sender, final String pluginname, final String version) {
+ final PluginInfo pi = repo.getPlugin(pluginname);
+ if (pi != null) {
+ return install(sender, pi.name, pi.getUrl(sender, version));
+ }
+ return false;
+ }
- /**
- * 载入插件
- *
- * @param pluginname
- * 插件名称
- */
- public static void load(final File pluginFile) {
- plugman.load(pluginFile);
- }
+ /**
+ * 载入插件
+ *
+ * @param pluginname
+ * 插件名称
+ */
+ public static void load(final File pluginFile) {
+ plugman.load(pluginFile);
+ }
- /**
- * 载入插件
- *
- * @param pluginname
- * 插件名称
- */
- public static void load(final String pluginname) {
- plugman.load(pluginname);
- }
+ /**
+ * 载入插件
+ *
+ * @param pluginname
+ * 插件名称
+ */
+ public static void load(final String pluginname) {
+ plugman.load(pluginname);
+ }
- /**
- * 重载插件
- *
- * @param plugin
- * 插件实体
- */
- public static void reload(final Plugin plugin) {
- plugman.reload(plugin);
- }
+ /**
+ * 重载插件
+ *
+ * @param plugin
+ * 插件实体
+ */
+ public static void reload(final Plugin plugin) {
+ plugman.reload(plugin);
+ }
- /**
- * 卸载插件
- *
- * @param plugin
- * 插件实体
- */
- public static void unload(final Plugin plugin) {
- plugman.unload(plugin);
- }
+ /**
+ * 卸载插件
+ *
+ * @param plugin
+ * 插件实体
+ */
+ public static void unload(final Plugin plugin) {
+ plugman.unload(plugin);
+ }
- /**
- * 更新插件
- *
- * @param sender
- * 命令发送者
- * @param plugin
- * 插件实体
- * @param url
- * 新插件的下载地址
- * @return 是否更新成功
- */
- public static boolean update(final CommandSender sender, final Plugin plugin, final URL url) {
- if (download.run(sender, url, new File(Bukkit.getUpdateFolderFile(), plugman.getPluginFile(plugin).getName()))) {
- sender.sendMessage("§6更新: §e已下载 " + plugin.getName() + " 插件到服务器更新文件夹");
- sender.sendMessage("§6更新: §e插件将在重启后自动更新(或使用§b/yum upgrade§e直接升级)!");
- return true;
- }
- return false;
- }
+ /**
+ * 更新插件
+ *
+ * @param sender
+ * 命令发送者
+ * @param plugin
+ * 插件实体
+ * @param url
+ * 新插件的下载地址
+ * @return 是否更新成功
+ */
+ public static boolean update(final CommandSender sender, final Plugin plugin, final URL url) {
+ if (download.run(sender, url, new File(Bukkit.getUpdateFolderFile(), plugman.getPluginFile(plugin).getName()))) {
+ sender.sendMessage("§6更新: §e已下载 " + plugin.getName() + " 插件到服务器更新文件夹");
+ sender.sendMessage("§6更新: §e插件将在重启后自动更新(或使用§b/yum upgrade§e直接升级)!");
+ return true;
+ }
+ return false;
+ }
- /**
- * 更新插件
- *
- * @param plugin
- * 插件实体
- * @param url
- * 新插件的下载地址
- * @return 是否更新成功
- */
- public static boolean update(final Plugin plugin, final URL url) {
- return update(null, plugin, url);
- }
+ /**
+ * 更新插件
+ *
+ * @param plugin
+ * 插件实体
+ * @param url
+ * 新插件的下载地址
+ * @return 是否更新成功
+ */
+ public static boolean update(final Plugin plugin, final URL url) {
+ return update(null, plugin, url);
+ }
- /**
- * 更新支持Yum的插件
- *
- * @param sender
- * 命令发送者
- */
- public static void updateall(final CommandSender sender) {
- final List ulist = new ArrayList<>();
- try {
- for (final Entry updateplugin : UpdatePlugin.getUpdateList().entrySet()) {
- ulist.add(updateplugin.getValue());
- }
- UpdatePlugin.clearList();
- } catch (final Exception | Error e) {
- try {
- final Map updatelist = UpdatePlugin.getList();
- ulist.addAll(updatelist.keySet());
- UpdatePlugin.getList().clear();
- } catch (final Exception | Error e2) {
- sender.sendMessage("§4错误: §c无法检索全体更新列表!");
- sender.sendMessage("§4异常: §c" + e2.getMessage());
- }
- }
- if (ulist.size() > 0) {
- for (final Plugin updateplugin : ulist) {
- sender.sendMessage("§d一键更新: §a开始更新" + updateplugin.getName() + "!");
- updatefromyum(sender, updateplugin, null, true);
- }
- sender.sendMessage("§d一键更新: §e已下载所有需要升级的插件到 服务器更新 文件夹");
- sender.sendMessage("§d一键更新: §e插件将在重启后自动更新(或使用§b/yum upgrade§e直接升级)!");
- } else {
- sender.sendMessage("§6更新: §e未找到需要更新且可以用Yum处理的插件!");
- }
- }
+ /**
+ * 更新支持Yum的插件
+ *
+ * @param sender
+ * 命令发送者
+ */
+ public static void updateall(final CommandSender sender) {
+ final List ulist = new ArrayList<>();
+ try {
+ for (final Entry updateplugin : UpdatePlugin.getUpdateList().entrySet()) {
+ ulist.add(updateplugin.getValue());
+ }
+ UpdatePlugin.clearList();
+ } catch (final Exception | Error e) {
+ try {
+ final Map updatelist = UpdatePlugin.getList();
+ ulist.addAll(updatelist.keySet());
+ UpdatePlugin.getList().clear();
+ } catch (final Exception | Error e2) {
+ sender.sendMessage("§4错误: §c无法检索全体更新列表!");
+ sender.sendMessage("§4异常: §c" + e2.getMessage());
+ }
+ }
+ if (ulist.size() > 0) {
+ for (final Plugin updateplugin : ulist) {
+ sender.sendMessage("§d一键更新: §a开始更新" + updateplugin.getName() + "!");
+ updatefromyum(sender, updateplugin, null, true);
+ }
+ sender.sendMessage("§d一键更新: §e已下载所有需要升级的插件到 服务器更新 文件夹");
+ sender.sendMessage("§d一键更新: §e插件将在重启后自动更新(或使用§b/yum upgrade§e直接升级)!");
+ } else {
+ sender.sendMessage("§6更新: §e未找到需要更新且可以用Yum处理的插件!");
+ }
+ }
- /**
- * 更新插件
- *
- * @param sender
- * 命令发送者
- * @param plugin
- * 插件实体
- * @return 是否更新成功
- */
- public static boolean updatefromyum(final CommandSender sender, final Plugin plugin) {
- return updatefromyum(sender, plugin, null);
- }
+ /**
+ * 更新插件
+ *
+ * @param sender
+ * 命令发送者
+ * @param plugin
+ * 插件实体
+ * @return 是否更新成功
+ */
+ public static boolean updatefromyum(final CommandSender sender, final Plugin plugin) {
+ return updatefromyum(sender, plugin, null);
+ }
- /**
- * 从Yum内部更新插件
- *
- * @param sender
- * 命令发送者
- * @param plugin
- * 插件实体
- * @param version
- * 插件版本(null则自动获取)
- * @return
- */
- public static boolean updatefromyum(final CommandSender sender, final Plugin plugin, final String version) {
- return updatefromyum(sender, plugin, version, false);
- }
+ /**
+ * 从Yum内部更新插件
+ *
+ * @param sender
+ * 命令发送者
+ * @param plugin
+ * 插件实体
+ * @param version
+ * 插件版本(null则自动获取)
+ * @return
+ */
+ public static boolean updatefromyum(final CommandSender sender, final Plugin plugin, final String version) {
+ return updatefromyum(sender, plugin, version, false);
+ }
- /**
- * 从Yum内部更新插件
- *
- * @param sender
- * 命令发送者
- * @param plugin
- * 插件实体
- * @param version
- * 插件版本(null则自动获取)
- * @param oneKeyUpdate
- * 是否一键更新
- * @return
- */
- public static boolean updatefromyum(final CommandSender sender, final Plugin plugin, final String version, final boolean oneKeyUpdate) {
- final PluginInfo pi = repo.getPlugin(plugin.getName());
- if (pi != null) {
- if (download.run(sender, pi.getUrl(sender, version), new File(Bukkit.getUpdateFolderFile(), plugman.getPluginFile(plugin).getName()))) {
- if (!oneKeyUpdate) {
- sender.sendMessage("§6更新: §e已下载 " + plugin.getName() + " 插件到服务器更新文件夹");
- sender.sendMessage("§6更新: §e插件将在重启后自动更新(或使用§b/yum upgrade§e直接升级)!");
- }
- return true;
- }
- } else {
- sender.sendMessage("§6更新: §c仓库缓存中未找到插件 " + plugin.getName());
- }
- return false;
- }
+ /**
+ * 从Yum内部更新插件
+ *
+ * @param sender
+ * 命令发送者
+ * @param plugin
+ * 插件实体
+ * @param version
+ * 插件版本(null则自动获取)
+ * @param oneKeyUpdate
+ * 是否一键更新
+ * @return
+ */
+ public static boolean updatefromyum(final CommandSender sender, final Plugin plugin, final String version, final boolean oneKeyUpdate) {
+ final PluginInfo pi = repo.getPlugin(plugin.getName());
+ if (pi != null) {
+ final File pFile = new File(Bukkit.getUpdateFolderFile(), plugman.getPluginFile(plugin).getName());
+ if (download.run(sender, pi.getUrl(sender, version), pFile)) {
- /**
- * 更新Yum源数据
- */
- public static void updaterepo() {
- main.getServer().getScheduler().runTaskAsynchronously(main, new Runnable() {
- @Override
- public void run() {
- repo.updateRepositories(Bukkit.getConsoleSender());
- }
- });
- }
+ if (!oneKeyUpdate) {
+ sender.sendMessage("§6更新: §e已下载 " + plugin.getName() + " 插件到服务器更新文件夹");
+ sender.sendMessage("§6更新: §e插件将在重启后自动更新(或使用§b/yum upgrade§e直接升级)!");
+ }
+ return true;
+ }
+ } else {
+ sender.sendMessage("§6更新: §c仓库缓存中未找到插件 " + plugin.getName());
+ }
+ return false;
+ }
- /**
- * @param sender
- * 命令发送者
- * @param plugin
- * 插件实体
- */
- public static void upgrade(final CommandSender sender, final Plugin plugin) {
- plugman.upgrade(sender, plugin);
- }
+ /**
+ * 更新Yum源数据
+ */
+ public static void updaterepo() {
+ main.getServer().getScheduler().runTaskAsynchronously(main, new Runnable() {
+ @Override
+ public void run() {
+ repo.updateRepositories(Bukkit.getConsoleSender());
+ }
+ });
+ }
+
+ /**
+ * @param sender
+ * 命令发送者
+ * @param plugin
+ * 插件实体
+ */
+ public static void upgrade(final CommandSender sender, final Plugin plugin) {
+ plugman.upgrade(sender, plugin);
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandDelete.java b/src/main/java/cn/citycraft/Yum/commands/CommandDelete.java
index 6c03bd3..c0f4f80 100644
--- a/src/main/java/cn/citycraft/Yum/commands/CommandDelete.java
+++ b/src/main/java/cn/citycraft/Yum/commands/CommandDelete.java
@@ -16,32 +16,33 @@ import cn.citycraft.Yum.api.YumAPI;
/**
* 插件删除命令类
*
- * @author 蒋天蓓 2015年8月12日下午2:04:05
+ * @author 喵♂呜
+ * @since 2015年8月12日下午2:04:05
*/
public class CommandDelete extends BaseCommand {
- Yum main;
+ Yum main;
- public CommandDelete(final Yum main) {
- super("del");
- this.main = main;
- setMinimumArguments(1);
- setDescription("删除插件");
- setPossibleArguments("<插件名称>");
- }
+ public CommandDelete(final Yum main) {
+ super("del");
+ this.main = main;
+ setMinimumArguments(1);
+ setDescription("删除插件");
+ setPossibleArguments("<插件名称>");
+ }
- @Override
- 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) {
- final String version = plugin.getDescription().getVersion();
- if (YumAPI.getPlugman().deletePlugin(sender, plugin)) {
- sender.sendMessage("§c删除: §a插件 §6" + pluginname + " §a版本 §d" + version + " §a已从服务器卸载并删除!");
- } else {
- sender.sendMessage("§c删除: §c插件 " + pluginname + " 卸载或删除时发生错误 删除失败!");
- }
- } else {
- sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
- }
- }
+ @Override
+ 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) {
+ final String version = plugin.getDescription().getVersion();
+ if (YumAPI.getPlugman().deletePlugin(sender, plugin)) {
+ sender.sendMessage("§c删除: §a插件 §6" + pluginname + " §a版本 §d" + version + " §a已从服务器卸载并删除!");
+ } else {
+ sender.sendMessage("§c删除: §c插件 " + pluginname + " 卸载或删除时发生错误 删除失败!");
+ }
+ } else {
+ sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
+ }
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandFullDelete.java b/src/main/java/cn/citycraft/Yum/commands/CommandFullDelete.java
index 786e16d..b2f285a 100644
--- a/src/main/java/cn/citycraft/Yum/commands/CommandFullDelete.java
+++ b/src/main/java/cn/citycraft/Yum/commands/CommandFullDelete.java
@@ -16,32 +16,33 @@ import cn.citycraft.Yum.api.YumAPI;
/**
* 插件删除命令类
*
- * @author 蒋天蓓 2015年8月12日下午2:04:05
+ * @author 喵♂呜
+ * @since 2015年8月12日下午2:04:05
*/
public class CommandFullDelete extends BaseCommand {
- Yum main;
+ Yum main;
- public CommandFullDelete(final Yum main) {
- super("fdel");
- this.main = main;
- setMinimumArguments(1);
- setDescription("删除插件以及数据文件夹");
- setPossibleArguments("<插件名称>");
- }
+ public CommandFullDelete(final Yum main) {
+ super("fdel");
+ this.main = main;
+ setMinimumArguments(1);
+ setDescription("删除插件以及数据文件夹");
+ setPossibleArguments("<插件名称>");
+ }
- @Override
- 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) {
- final String version = plugin.getDescription().getVersion();
- if (YumAPI.getPlugman().fullDeletePlugin(sender, plugin)) {
- sender.sendMessage("§c删除: §a插件 §6" + pluginname + " §a版本 §d" + version + " §a已从服务器卸载并删除!");
- } else {
- sender.sendMessage("§c删除: §c插件 " + pluginname + " 卸载或删除时发生错误 删除失败!");
- }
- } else {
- sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
- }
- }
+ @Override
+ 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) {
+ final String version = plugin.getDescription().getVersion();
+ if (YumAPI.getPlugman().fullDeletePlugin(sender, plugin)) {
+ sender.sendMessage("§c删除: §a插件 §6" + pluginname + " §a版本 §d" + version + " §a已从服务器卸载并删除!");
+ } else {
+ sender.sendMessage("§c删除: §c插件 " + pluginname + " 卸载或删除时发生错误 删除失败!");
+ }
+ } 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 1dc224b..6bbac4b 100644
--- a/src/main/java/cn/citycraft/Yum/commands/CommandInfo.java
+++ b/src/main/java/cn/citycraft/Yum/commands/CommandInfo.java
@@ -23,59 +23,60 @@ import cn.citycraft.Yum.api.YumAPI;
/**
* 插件删除命令类
*
- * @author 蒋天蓓 2015年8月12日下午2:04:05
+ * @author 喵♂呜
+ * @since 2015年8月12日下午2:04:05
*/
public class CommandInfo extends BaseCommand {
- Yum main;
+ Yum main;
- /**
- * @param name
- */
- public CommandInfo(final Yum main) {
- super();
- this.main = main;
- setMinimumArguments(1);
- setDescription("查看插件详情");
- setPossibleArguments("<插件名称>");
- }
+ /**
+ * @param name
+ */
+ public CommandInfo(final Yum main) {
+ super();
+ this.main = main;
+ setMinimumArguments(1);
+ setDescription("查看插件详情");
+ setPossibleArguments("<插件名称>");
+ }
- @Override
- 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) {
- final PluginDescriptionFile desc = plugin.getDescription();
- sender.sendMessage("§6插件名称: §3" + plugin.getName());
- sender.sendMessage("§6插件版本: §3" + desc.getVersion());
- sender.sendMessage("§6插件作者: §3" + StringUtils.join(desc.getAuthors(), " "));
- sender.sendMessage("§6插件描述: §3" + (desc.getDescription() == null ? "无" : desc.getDescription()));
- sender.sendMessage("§6插件依赖: §3" + (desc.getDepend().isEmpty() ? "无" : ""));
- StringUtil.sendStringArray(sender, desc.getDepend(), "§6 - §a");
- sender.sendMessage("§6插件软依赖: §3" + (desc.getSoftDepend().isEmpty() ? "无" : ""));
- StringUtil.sendStringArray(sender, desc.getSoftDepend(), "§6 - §a");
- final Map> clist = desc.getCommands();
- if (clist != null) {
- sender.sendMessage("§6插件注册命令: §3" + (clist.isEmpty() ? "无" : ""));
- StringUtil.sendStringArray(sender, clist.keySet(), "§6 - §a");
- }
- final List plist = desc.getPermissions();
- if (plist != null) {
- sender.sendMessage("§6插件注册权限: " + (plist.isEmpty() ? "无" : ""));
- for (final Permission perm : plist) {
- sender.sendMessage("§6 - §a" + perm.getName() + "§6 - §e" + (perm.getDescription().isEmpty() ? "无描述" : perm.getDescription()));
- }
- }
- sender.sendMessage("§6插件物理路径: §3" + YumAPI.getPlugman().getPluginFile(plugin).getAbsolutePath());
- } else {
- sender.sendMessage("§4错误: §c插件 " + pluginname + " 不存在或已卸载!");
- }
- }
+ @Override
+ 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) {
+ final PluginDescriptionFile desc = plugin.getDescription();
+ sender.sendMessage("§6插件名称: §3" + plugin.getName());
+ sender.sendMessage("§6插件版本: §3" + desc.getVersion());
+ sender.sendMessage("§6插件作者: §3" + StringUtils.join(desc.getAuthors(), " "));
+ sender.sendMessage("§6插件描述: §3" + (desc.getDescription() == null ? "无" : desc.getDescription()));
+ sender.sendMessage("§6插件依赖: §3" + (desc.getDepend().isEmpty() ? "无" : ""));
+ StringUtil.sendStringArray(sender, desc.getDepend(), "§6 - §a");
+ sender.sendMessage("§6插件软依赖: §3" + (desc.getSoftDepend().isEmpty() ? "无" : ""));
+ StringUtil.sendStringArray(sender, desc.getSoftDepend(), "§6 - §a");
+ final Map> clist = desc.getCommands();
+ if (clist != null) {
+ sender.sendMessage("§6插件注册命令: §3" + (clist.isEmpty() ? "无" : ""));
+ StringUtil.sendStringArray(sender, clist.keySet(), "§6 - §a");
+ }
+ final List plist = desc.getPermissions();
+ if (plist != null) {
+ sender.sendMessage("§6插件注册权限: " + (plist.isEmpty() ? "无" : ""));
+ for (final Permission perm : plist) {
+ sender.sendMessage("§6 - §a" + perm.getName() + "§6 - §e" + (perm.getDescription().isEmpty() ? "无描述" : perm.getDescription()));
+ }
+ }
+ sender.sendMessage("§6插件物理路径: §3" + YumAPI.getPlugman().getPluginFile(plugin).getAbsolutePath());
+ } else {
+ sender.sendMessage("§4错误: §c插件 " + pluginname + " 不存在或已卸载!");
+ }
+ }
- @Override
- public List onTabComplete(final CommandSender sender, final Command command, final String label, final String[] args) {
- if (!args[0].equalsIgnoreCase("install") && !args[0].equalsIgnoreCase("repo")) {
- return StringUtil.copyPartialMatches(args[1], YumAPI.getPlugman().getPluginNames(false), new ArrayList());
- }
- return null;
- }
+ @Override
+ public List onTabComplete(final CommandSender sender, final Command command, final String label, final String[] args) {
+ if (!args[0].equalsIgnoreCase("install") && !args[0].equalsIgnoreCase("repo")) {
+ return StringUtil.copyPartialMatches(args[1], YumAPI.getPlugman().getPluginNames(false), new ArrayList());
+ }
+ return null;
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandInstall.java b/src/main/java/cn/citycraft/Yum/commands/CommandInstall.java
index dc7168d..9dde41f 100644
--- a/src/main/java/cn/citycraft/Yum/commands/CommandInstall.java
+++ b/src/main/java/cn/citycraft/Yum/commands/CommandInstall.java
@@ -20,47 +20,48 @@ import cn.citycraft.Yum.api.YumAPI;
/**
* 插件安装命令类
*
- * @author 蒋天蓓 2015年8月12日下午2:04:05
+ * @author 喵♂呜
+ * @since 2015年8月12日下午2:04:05
*/
public class CommandInstall extends BaseCommand {
- Yum main;
+ Yum main;
- /**
- * @param name
- */
- public CommandInstall(final Yum main) {
- super("i");
- this.main = main;
- setMinimumArguments(1);
- setDescription("安装插件");
- setPossibleArguments("<插件名称>");
- }
+ /**
+ * @param name
+ */
+ public CommandInstall(final Yum main) {
+ super("i");
+ this.main = main;
+ setMinimumArguments(1);
+ setDescription("安装插件");
+ setPossibleArguments("<插件名称>");
+ }
- @Override
- 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) {
- Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() {
- @Override
- public void run() {
- if (args.length < 2) {
- YumAPI.installfromyum(sender, pluginname);
- } else {
- YumAPI.installfromyum(sender, pluginname, args[1]);
- }
- }
- });
- } else {
- sender.sendMessage("§c插件" + pluginname + "已安装在服务器 需要更新请使用yum update " + pluginname + "!");
- }
- }
+ @Override
+ 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) {
+ Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() {
+ @Override
+ public void run() {
+ if (args.length < 2) {
+ YumAPI.installfromyum(sender, pluginname);
+ } else {
+ YumAPI.installfromyum(sender, pluginname, args[1]);
+ }
+ }
+ });
+ } else {
+ sender.sendMessage("§c插件" + pluginname + "已安装在服务器 需要更新请使用yum update " + pluginname + "!");
+ }
+ }
- @Override
- public List onTabComplete(final CommandSender sender, final Command command, final String label, final String[] args) {
- if (args[0].equalsIgnoreCase("install")) {
- return StringUtil.copyPartialMatches(args[1], YumAPI.getRepo().getAllPluginName(), new ArrayList());
- }
- return null;
- }
+ @Override
+ public List onTabComplete(final CommandSender sender, final Command command, final String label, final String[] args) {
+ if (args[0].equalsIgnoreCase("install")) {
+ return StringUtil.copyPartialMatches(args[1], YumAPI.getRepo().getAllPluginName(), new ArrayList());
+ }
+ return null;
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandList.java b/src/main/java/cn/citycraft/Yum/commands/CommandList.java
index e1d9a72..591ee37 100644
--- a/src/main/java/cn/citycraft/Yum/commands/CommandList.java
+++ b/src/main/java/cn/citycraft/Yum/commands/CommandList.java
@@ -16,25 +16,26 @@ import cn.citycraft.Yum.api.YumAPI;
/**
* 插件查看命令类
*
- * @author 蒋天蓓 2015年8月12日下午2:04:05
+ * @author 喵♂呜
+ * @since 2015年8月12日下午2:04:05
*/
public class CommandList extends BaseCommand {
- Yum main;
+ Yum main;
- /**
- * @param name
- */
- public CommandList(final Yum main) {
- super("l");
- this.main = main;
- setDescription("列出已安装插件列表");
- }
+ /**
+ * @param name
+ */
+ public CommandList(final Yum main) {
+ super("l");
+ this.main = main;
+ setDescription("列出已安装插件列表");
+ }
- @Override
- 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- " + YumAPI.getPlugman().getFormattedName(plugin, true));
- }
- };
+ @Override
+ 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- " + YumAPI.getPlugman().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 586bd63..664a4b9 100644
--- a/src/main/java/cn/citycraft/Yum/commands/CommandLoad.java
+++ b/src/main/java/cn/citycraft/Yum/commands/CommandLoad.java
@@ -16,30 +16,31 @@ import cn.citycraft.Yum.api.YumAPI;
/**
* 插件删除命令类
*
- * @author 蒋天蓓 2015年8月12日下午2:04:05
+ * @author 喵♂呜
+ * @since 2015年8月12日下午2:04:05
*/
public class CommandLoad extends BaseCommand {
- Yum main;
+ Yum main;
- /**
- * @param name
- */
- public CommandLoad(final Yum main) {
- super();
- this.main = main;
- setMinimumArguments(1);
- setDescription("载入插件");
- setPossibleArguments("<插件名称>");
- }
+ /**
+ * @param name
+ */
+ public CommandLoad(final Yum main) {
+ super();
+ this.main = main;
+ setMinimumArguments(1);
+ setDescription("载入插件");
+ setPossibleArguments("<插件名称>");
+ }
- @Override
- 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) {
- YumAPI.getPlugman().load(sender, pluginname);
- } else {
- sender.sendMessage("§c错误: 插件 " + pluginname + " 已加载到服务器!");
- }
- };
+ @Override
+ 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) {
+ YumAPI.getPlugman().load(sender, pluginname);
+ } else {
+ sender.sendMessage("§c错误: 插件 " + pluginname + " 已加载到服务器!");
+ }
+ };
}
diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandReload.java b/src/main/java/cn/citycraft/Yum/commands/CommandReload.java
index 4507c70..3016b97 100644
--- a/src/main/java/cn/citycraft/Yum/commands/CommandReload.java
+++ b/src/main/java/cn/citycraft/Yum/commands/CommandReload.java
@@ -16,34 +16,35 @@ import cn.citycraft.Yum.api.YumAPI;
/**
* 插件删除命令类
*
- * @author 蒋天蓓 2015年8月12日下午2:04:05
+ * @author 喵♂呜
+ * @since 2015年8月12日下午2:04:05
*/
public class CommandReload extends BaseCommand {
- Yum main;
+ Yum main;
- /**
- * @param name
- */
- public CommandReload(final Yum main) {
- super();
- this.main = main;
- setMinimumArguments(1);
- setDescription("重载插件");
- setPossibleArguments("<插件名称|all|*>");
- }
+ /**
+ * @param name
+ */
+ public CommandReload(final Yum main) {
+ super();
+ this.main = main;
+ setMinimumArguments(1);
+ setDescription("重载插件");
+ setPossibleArguments("<插件名称|all|*>");
+ }
- @Override
- 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("*")) {
- YumAPI.getPlugman().reloadAll(sender);
- return;
- }
- final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
- if (plugin != null) {
- YumAPI.getPlugman().reload(sender, plugin);
- } else {
- sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
- }
- };
+ @Override
+ 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("*")) {
+ YumAPI.getPlugman().reloadAll(sender);
+ return;
+ }
+ final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
+ if (plugin != null) {
+ YumAPI.getPlugman().reload(sender, plugin);
+ } else {
+ sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
+ }
+ };
}
diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandRepo.java b/src/main/java/cn/citycraft/Yum/commands/CommandRepo.java
index 3068f17..b7dd82d 100644
--- a/src/main/java/cn/citycraft/Yum/commands/CommandRepo.java
+++ b/src/main/java/cn/citycraft/Yum/commands/CommandRepo.java
@@ -20,89 +20,90 @@ import cn.citycraft.Yum.manager.RepoSerialization.Repositories;
/**
* 插件删除命令类
*
- * @author 蒋天蓓 2015年8月12日下午2:04:05
+ * @author 喵♂呜
+ * @since 2015年8月12日下午2:04:05
*/
public class CommandRepo extends BaseCommand {
- Yum main;
+ Yum main;
- /**
- * @param name
- */
- public CommandRepo(final Yum main) {
- super("r");
- this.main = main;
- setMinimumArguments(1);
- setDescription("插件源命令");
- setPossibleArguments(" <仓库名称>");
- }
+ /**
+ * @param name
+ */
+ public CommandRepo(final Yum main) {
+ super("r");
+ this.main = main;
+ setMinimumArguments(1);
+ setDescription("插件源命令");
+ setPossibleArguments(" <仓库名称>");
+ }
- @Override
- public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
- main.getServer().getScheduler().runTaskAsynchronously(main, new Runnable() {
- @Override
- public void run() {
- final String cmd = args[0];
- switch (cmd) {
- case "add":
- if (args.length == 2) {
- if (YumAPI.getRepo().addRepositories(sender, args[1])) {
- final String reponame = YumAPI.getRepo().getRepoCache(args[1]).name;
- sender.sendMessage("§6仓库: §a源仓库 §e" + reponame + " §a的插件信息已缓存!");
- } else {
- sender.sendMessage("§6仓库: §c源地址未找到仓库信息或当前地址已缓存!");
- }
- } else {
- sender.sendMessage("§6仓库: §c请输入需要添加的源地址!");
- }
- break;
- case "del":
- if (args.length == 2) {
- final Repositories delrepo = YumAPI.getRepo().getRepoCache(args[1]);
- if (delrepo != null) {
- YumAPI.getRepo().delRepositories(sender, args[1]);
- sender.sendMessage("§6仓库: §a源仓库 §e" + delrepo.name + " §c已删除 §a请使用 §b/yum repo update §a更新缓存!");
- } else {
- sender.sendMessage("§6仓库: §c源地址未找到!");
- }
- } else {
- sender.sendMessage("§6仓库: §c请输入需要删除的源地址!");
- }
- break;
- case "delall":
- YumAPI.getRepo().getRepoCache().getRepos().clear();
- sender.sendMessage("§6仓库: §a缓存的仓库信息已清理!");
- break;
- case "list":
- sender.sendMessage("§6仓库: §b缓存的插件信息如下 ");
- StringUtil.sendStringArray(sender, YumAPI.getRepo().getAllPluginsInfo());
- break;
- case "all":
- sender.sendMessage("§6仓库: §b缓存的仓库信息如下 ");
- StringUtil.sendStringArray(sender, YumAPI.getRepo().getRepoCache().getAllRepoInfo());
- break;
- case "clean":
- YumAPI.getRepo().clean();
- sender.sendMessage("§6仓库: §a缓存的插件信息已清理!");
- break;
- case "update":
- YumAPI.getRepo().updateRepositories(sender);
- sender.sendMessage("§6仓库: §a仓库缓存数据已更新!");
- break;
- }
- }
- });
- }
+ @Override
+ public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
+ main.getServer().getScheduler().runTaskAsynchronously(main, new Runnable() {
+ @Override
+ public void run() {
+ final String cmd = args[0];
+ switch (cmd) {
+ case "add":
+ if (args.length == 2) {
+ if (YumAPI.getRepo().addRepositories(sender, args[1])) {
+ final String reponame = YumAPI.getRepo().getRepoCache(args[1]).name;
+ sender.sendMessage("§6仓库: §a源仓库 §e" + reponame + " §a的插件信息已缓存!");
+ } else {
+ sender.sendMessage("§6仓库: §c源地址未找到仓库信息或当前地址已缓存!");
+ }
+ } else {
+ sender.sendMessage("§6仓库: §c请输入需要添加的源地址!");
+ }
+ break;
+ case "del":
+ if (args.length == 2) {
+ final Repositories delrepo = YumAPI.getRepo().getRepoCache(args[1]);
+ if (delrepo != null) {
+ YumAPI.getRepo().delRepositories(sender, args[1]);
+ sender.sendMessage("§6仓库: §a源仓库 §e" + delrepo.name + " §c已删除 §a请使用 §b/yum repo update §a更新缓存!");
+ } else {
+ sender.sendMessage("§6仓库: §c源地址未找到!");
+ }
+ } else {
+ sender.sendMessage("§6仓库: §c请输入需要删除的源地址!");
+ }
+ break;
+ case "delall":
+ YumAPI.getRepo().getRepoCache().getRepos().clear();
+ sender.sendMessage("§6仓库: §a缓存的仓库信息已清理!");
+ break;
+ case "list":
+ sender.sendMessage("§6仓库: §b缓存的插件信息如下 ");
+ StringUtil.sendStringArray(sender, YumAPI.getRepo().getAllPluginsInfo());
+ break;
+ case "all":
+ sender.sendMessage("§6仓库: §b缓存的仓库信息如下 ");
+ StringUtil.sendStringArray(sender, YumAPI.getRepo().getRepoCache().getAllRepoInfo());
+ break;
+ case "clean":
+ YumAPI.getRepo().clean();
+ sender.sendMessage("§6仓库: §a缓存的插件信息已清理!");
+ break;
+ case "update":
+ YumAPI.getRepo().updateRepositories(sender);
+ sender.sendMessage("§6仓库: §a仓库缓存数据已更新!");
+ break;
+ }
+ }
+ });
+ }
- @Override
- public List onTabComplete(final CommandSender sender, final Command command, final String label, final String[] args) {
- if (args[0].equalsIgnoreCase("repo")) {
- if (args.length == 2) {
- return StringUtil.copyPartialMatches(args[1], Arrays.asList(new String[] { "add", "all", "list", "delall", "clean", "update", "del" }), new ArrayList());
- }
- if (args.length == 3 && (args[1] == "add" || args[1] == "del")) {
- return StringUtil.copyPartialMatches(args[2], YumAPI.getRepo().getRepos().keySet(), new ArrayList());
- }
- }
- return null;
- }
+ @Override
+ public List onTabComplete(final CommandSender sender, final Command command, final String label, final String[] args) {
+ if (args[0].equalsIgnoreCase("repo")) {
+ if (args.length == 2) {
+ return StringUtil.copyPartialMatches(args[1], Arrays.asList(new String[] { "add", "all", "list", "delall", "clean", "update", "del" }), new ArrayList());
+ }
+ if (args.length == 3 && (args[1] == "add" || args[1] == "del")) {
+ return StringUtil.copyPartialMatches(args[2], YumAPI.getRepo().getRepos().keySet(), new ArrayList());
+ }
+ }
+ return null;
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandUnload.java b/src/main/java/cn/citycraft/Yum/commands/CommandUnload.java
index a607a77..405b725 100644
--- a/src/main/java/cn/citycraft/Yum/commands/CommandUnload.java
+++ b/src/main/java/cn/citycraft/Yum/commands/CommandUnload.java
@@ -16,30 +16,31 @@ import cn.citycraft.Yum.api.YumAPI;
/**
* 插件删除命令类
*
- * @author 蒋天蓓 2015年8月12日下午2:04:05
+ * @author 喵♂呜
+ * @since 2015年8月12日下午2:04:05
*/
public class CommandUnload extends BaseCommand {
- Yum main;
+ Yum main;
- /**
- * @param name
- */
- public CommandUnload(final Yum main) {
- super();
- this.main = main;
- setMinimumArguments(1);
- setDescription("卸载插件");
- setPossibleArguments("<插件名称>");
- }
+ /**
+ * @param name
+ */
+ public CommandUnload(final Yum main) {
+ super();
+ this.main = main;
+ setMinimumArguments(1);
+ setDescription("卸载插件");
+ setPossibleArguments("<插件名称>");
+ }
- @Override
- 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) {
- YumAPI.getPlugman().unload(sender, plugin);
- } else {
- sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
- }
- };
+ @Override
+ 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) {
+ YumAPI.getPlugman().unload(sender, plugin);
+ } else {
+ sender.sendMessage("§c插件 " + pluginname + " 不存在或已卸载!");
+ }
+ };
}
diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandUpdate.java b/src/main/java/cn/citycraft/Yum/commands/CommandUpdate.java
index 7e77aea..9e19ea0 100644
--- a/src/main/java/cn/citycraft/Yum/commands/CommandUpdate.java
+++ b/src/main/java/cn/citycraft/Yum/commands/CommandUpdate.java
@@ -14,37 +14,49 @@ import cn.citycraft.Yum.Yum;
import cn.citycraft.Yum.api.YumAPI;
/**
- * @author 蒋天蓓 2015年8月12日下午2:04:05
+ * @author 喵♂呜
+ * @since 2015年8月12日下午2:04:05
*/
public class CommandUpdate extends BaseCommand {
- Yum main;
+ Yum main;
- public CommandUpdate(final Yum main) {
- super("u");
- this.main = main;
- setMinimumArguments(1);
- setDescription("更新插件");
- setPossibleArguments("<插件名称> [插件版本]");
- }
+ public CommandUpdate(final Yum main) {
+ super("u");
+ this.main = main;
+ setMinimumArguments(0);
+ setDescription("更新插件或缓存");
+ setPossibleArguments("[插件名称] [插件版本]");
+ }
- @Override
- 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);
- if (plugin != null) {
- Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() {
- @Override
- public void run() {
- if (args.length < 2) {
- YumAPI.updatefromyum(sender, plugin);
- } else {
- YumAPI.updatefromyum(sender, plugin, args[1]);
- }
- }
- });
- } else {
- sender.sendMessage("§c插件" + pluginname + "未安装或已卸载 需要安装请使用/yum install " + pluginname + "!");
- }
- };
+ @Override
+ public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
+ switch (args.length) {
+ case 0:
+ YumAPI.getRepo().updateRepositories(sender);
+ sender.sendMessage("§6仓库: §a仓库缓存数据已更新!");
+ break;
+ case 1:
+ case 2:
+ final String pluginname = args[0];
+ final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
+ sender.sendMessage("§a开始更新插件: " + pluginname);
+ if (plugin != null) {
+ Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() {
+ @Override
+ public void run() {
+ if (args.length < 2) {
+ YumAPI.updatefromyum(sender, plugin);
+ } else {
+ YumAPI.updatefromyum(sender, plugin, args[1]);
+ }
+ }
+ });
+ } else {
+ sender.sendMessage("§c插件" + pluginname + "未安装或已卸载 需要安装请使用/yum install " + pluginname + "!");
+ }
+ break;
+ default:
+ sendHelp(sender, label);
+ }
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandUpdateAll.java b/src/main/java/cn/citycraft/Yum/commands/CommandUpdateAll.java
index 4fbc706..c5e3fdd 100644
--- a/src/main/java/cn/citycraft/Yum/commands/CommandUpdateAll.java
+++ b/src/main/java/cn/citycraft/Yum/commands/CommandUpdateAll.java
@@ -13,25 +13,26 @@ import cn.citycraft.Yum.Yum;
import cn.citycraft.Yum.api.YumAPI;
/**
- * @author 蒋天蓓 2015年8月12日下午2:04:05
+ * @author 喵♂呜
+ * @since 2015年8月12日下午2:04:05
*/
public class CommandUpdateAll extends BaseCommand {
- Yum main;
+ Yum main;
- public CommandUpdateAll(final Yum main) {
- super("ua");
- this.main = main;
- setDescription("更新所有可更新插件");
- }
+ public CommandUpdateAll(final Yum main) {
+ super("ua");
+ this.main = main;
+ setDescription("更新所有可更新插件");
+ }
- @Override
- public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
- sender.sendMessage("§d开始更新服务器可更新插件");
- Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() {
- @Override
- public void run() {
- YumAPI.updateall(sender);
- }
- });
- };
+ @Override
+ public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
+ sender.sendMessage("§d开始更新服务器可更新插件");
+ Bukkit.getScheduler().runTaskAsynchronously(main, new Runnable() {
+ @Override
+ public void run() {
+ YumAPI.updateall(sender);
+ }
+ });
+ };
}
diff --git a/src/main/java/cn/citycraft/Yum/commands/CommandUpgrade.java b/src/main/java/cn/citycraft/Yum/commands/CommandUpgrade.java
index 45af04b..df9fa10 100644
--- a/src/main/java/cn/citycraft/Yum/commands/CommandUpgrade.java
+++ b/src/main/java/cn/citycraft/Yum/commands/CommandUpgrade.java
@@ -14,39 +14,40 @@ import cn.citycraft.Yum.Yum;
import cn.citycraft.Yum.api.YumAPI;
/**
- * @author 蒋天蓓 2015年8月12日下午2:04:05
+ * @author 喵♂呜
+ * @since 2015年8月12日下午2:04:05
*/
public class CommandUpgrade extends BaseCommand {
- Yum main;
+ Yum main;
- /**
- * @param name
- */
- public CommandUpgrade(final Yum main) {
- super("ug");
- this.main = main;
- setDescription("升级插件");
- setPossibleArguments("[插件名称]");
- }
+ /**
+ * @param name
+ */
+ public CommandUpgrade(final Yum main) {
+ super("ug");
+ this.main = main;
+ setDescription("升级插件");
+ setPossibleArguments("[插件名称]");
+ }
- @Override
- 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() {
- if (args.length == 0) {
- YumAPI.getPlugman().upgrade(sender);
- } else {
- final String pluginname = args[0];
- final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
- sender.sendMessage("§a开始升级插件: " + pluginname);
- if (plugin != null) {
- YumAPI.upgrade(sender, plugin);
- } else {
- sender.sendMessage("§c插件未安装或已卸载 需要安装请使用yum install " + pluginname + "!");
- }
- }
- }
- });
- };
+ @Override
+ 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() {
+ if (args.length == 0) {
+ YumAPI.getPlugman().upgrade(sender);
+ } else {
+ final String pluginname = args[0];
+ final Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin(pluginname);
+ sender.sendMessage("§a开始升级插件: " + pluginname);
+ if (plugin != null) {
+ YumAPI.upgrade(sender, plugin);
+ } else {
+ sender.sendMessage("§c插件未安装或已卸载 需要安装请使用yum install " + pluginname + "!");
+ }
+ }
+ }
+ });
+ };
}
diff --git a/src/main/java/cn/citycraft/Yum/commands/YumCommand.java b/src/main/java/cn/citycraft/Yum/commands/YumCommand.java
index f539655..581a818 100644
--- a/src/main/java/cn/citycraft/Yum/commands/YumCommand.java
+++ b/src/main/java/cn/citycraft/Yum/commands/YumCommand.java
@@ -3,21 +3,27 @@ package cn.citycraft.Yum.commands;
import cn.citycraft.PluginHelper.commands.HandlerSubCommand;
import cn.citycraft.Yum.Yum;
+/**
+ * Yum命令基类
+ *
+ * @since 2016年1月9日 上午10:02:24
+ * @author 喵♂呜
+ */
public class YumCommand {
- public YumCommand(final Yum yum) {
- final HandlerSubCommand cmdhandler = new HandlerSubCommand(yum, "yum");
- cmdhandler.setAllCommandOnlyConsole(yum.config.getBoolean("onlyCommandConsole", false));
- cmdhandler.registerCommand(new CommandList(yum));
- cmdhandler.registerCommand(new CommandInstall(yum));
- cmdhandler.registerCommand(new CommandUpdate(yum));
- cmdhandler.registerCommand(new CommandUpdateAll(yum));
- cmdhandler.registerCommand(new CommandDelete(yum));
- cmdhandler.registerCommand(new CommandFullDelete(yum));
- cmdhandler.registerCommand(new CommandInfo(yum));
- cmdhandler.registerCommand(new CommandRepo(yum));
- cmdhandler.registerCommand(new CommandReload(yum));
- cmdhandler.registerCommand(new CommandLoad(yum));
- cmdhandler.registerCommand(new CommandUnload(yum));
- cmdhandler.registerCommand(new CommandUpgrade(yum));
- }
+ public YumCommand(final Yum yum) {
+ final HandlerSubCommand cmdhandler = new HandlerSubCommand(yum, "yum");
+ cmdhandler.setAllCommandOnlyConsole(yum.config.getBoolean("onlyCommandConsole", false));
+ cmdhandler.registerCommand(new CommandList(yum));
+ cmdhandler.registerCommand(new CommandInstall(yum));
+ cmdhandler.registerCommand(new CommandUpdate(yum));
+ cmdhandler.registerCommand(new CommandUpdateAll(yum));
+ cmdhandler.registerCommand(new CommandDelete(yum));
+ cmdhandler.registerCommand(new CommandFullDelete(yum));
+ cmdhandler.registerCommand(new CommandInfo(yum));
+ cmdhandler.registerCommand(new CommandRepo(yum));
+ cmdhandler.registerCommand(new CommandReload(yum));
+ cmdhandler.registerCommand(new CommandLoad(yum));
+ cmdhandler.registerCommand(new CommandUnload(yum));
+ cmdhandler.registerCommand(new CommandUpgrade(yum));
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/file/commands/CommandDelete.java b/src/main/java/cn/citycraft/Yum/file/commands/CommandDelete.java
index 6cc7bf0..7a79114 100644
--- a/src/main/java/cn/citycraft/Yum/file/commands/CommandDelete.java
+++ b/src/main/java/cn/citycraft/Yum/file/commands/CommandDelete.java
@@ -15,32 +15,33 @@ import cn.citycraft.Yum.Yum;
/**
* 插件删除命令类
*
- * @author 蒋天蓓 2015年8月12日下午2:04:05
+ * @author 喵♂呜
+ * @since 2015年8月12日下午2:04:05
*/
public class CommandDelete extends BaseCommand {
- public CommandDelete(final Yum main) {
- super("del");
- setMinimumArguments(1);
- setDescription("删除文件(服务器JAR为根目录)");
- setPossibleArguments("<文件相对目录>");
- }
+ public CommandDelete(final Yum main) {
+ super("del");
+ setMinimumArguments(1);
+ setDescription("删除文件(服务器JAR为根目录)");
+ setPossibleArguments("<文件相对目录>");
+ }
- @Override
- public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
- final String fpath = args[0];
- final File file = new File(fpath);
- if (!file.exists()) {
- sendMessage(sender, "§c文件 " + file.getAbsolutePath() + " 不存在!");
- } else {
- if (file.isDirectory()) {
- sendMessage(sender, "§e" + file.getAbsolutePath() + " §c是一个目录 请使用file rm!");
- return;
- }
- try {
- sendMessage(sender, "§d文件 §e" + file.getAbsolutePath() + " " + (file.delete() ? "§a删除成功!" : "§c删除失败!"));
- } catch (final Exception e) {
- sendMessage(sender, "§d文件 §e" + file.getAbsolutePath() + " 删除失败: " + e.getMessage());
- }
- }
- }
+ @Override
+ public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
+ final String fpath = args[0];
+ final File file = new File(fpath);
+ if (!file.exists()) {
+ sendMessage(sender, "§c文件 " + file.getAbsolutePath() + " 不存在!");
+ } else {
+ if (file.isDirectory()) {
+ sendMessage(sender, "§e" + file.getAbsolutePath() + " §c是一个目录 请使用file rm!");
+ return;
+ }
+ try {
+ sendMessage(sender, "§d文件 §e" + file.getAbsolutePath() + " " + (file.delete() ? "§a删除成功!" : "§c删除失败!"));
+ } catch (final Exception e) {
+ sendMessage(sender, "§d文件 §e" + file.getAbsolutePath() + " 删除失败: " + e.getMessage());
+ }
+ }
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/file/commands/CommandDownLoad.java b/src/main/java/cn/citycraft/Yum/file/commands/CommandDownLoad.java
index 8f9571d..107996c 100644
--- a/src/main/java/cn/citycraft/Yum/file/commands/CommandDownLoad.java
+++ b/src/main/java/cn/citycraft/Yum/file/commands/CommandDownLoad.java
@@ -18,33 +18,34 @@ import cn.citycraft.Yum.manager.DownloadManager;
/**
* 插件删除命令类
*
- * @author 蒋天蓓 2015年8月12日下午2:04:05
+ * @author 喵♂呜
+ * @since 2015年8月12日下午2:04:05
*/
public class CommandDownLoad extends BaseCommand {
- Yum main;
- DownloadManager dl;
+ Yum main;
+ DownloadManager dl;
- public CommandDownLoad(final Yum main) {
- super("d");
- this.main = main;
- dl = YumAPI.getDownload();
- setMinimumArguments(1);
- setDescription("下载文件(默认保存到服务器更新文件夹)");
- setPossibleArguments("<下载地址> [保存文件路径]");
- }
+ public CommandDownLoad(final Yum main) {
+ super("d");
+ this.main = main;
+ dl = YumAPI.getDownload();
+ setMinimumArguments(1);
+ setDescription("下载文件(默认保存到服务器更新文件夹)");
+ setPossibleArguments("<下载地址> [保存文件路径]");
+ }
- @Override
- public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
- String urlstr = args[0];
- if (!urlstr.startsWith("http")) {
- urlstr = "http://" + urlstr;
- }
- File file = null;
- if (args.length == 2) {
- file = new File(args[1]);
- } else {
- file = new File(Bukkit.getUpdateFolderFile(), dl.getFileName(urlstr));
- }
- dl.run(sender, urlstr, file);
- }
+ @Override
+ public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
+ String urlstr = args[0];
+ if (!urlstr.startsWith("http")) {
+ urlstr = "http://" + urlstr;
+ }
+ File file = null;
+ if (args.length == 2) {
+ file = new File(args[1]);
+ } else {
+ file = new File(Bukkit.getUpdateFolderFile(), dl.getFileName(urlstr));
+ }
+ dl.run(sender, urlstr, file);
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/file/commands/CommandLs.java b/src/main/java/cn/citycraft/Yum/file/commands/CommandLs.java
index ef15286..87c2040 100644
--- a/src/main/java/cn/citycraft/Yum/file/commands/CommandLs.java
+++ b/src/main/java/cn/citycraft/Yum/file/commands/CommandLs.java
@@ -15,41 +15,42 @@ import cn.citycraft.Yum.Yum;
/**
* 插件删除命令类
*
- * @author 蒋天蓓 2015年8月12日下午2:04:05
+ * @author 喵♂呜
+ * @since 2015年8月12日下午2:04:05
*/
public class CommandLs extends BaseCommand {
- public CommandLs(final Yum main) {
- super("l");
- setDescription("列出当前目录(服务器JAR为根目录)");
- setPossibleArguments("<相对目录>");
- }
+ public CommandLs(final Yum main) {
+ super("l");
+ setDescription("列出当前目录(服务器JAR为根目录)");
+ setPossibleArguments("<相对目录>");
+ }
- @Override
- public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
- File dir = new File(".");
- if (args.length == 1) {
- dir = new File(args[0]);
- }
- if (!dir.isDirectory()) {
- sendMessage(sender, "§6路径: §e " + dir.getAbsolutePath() + " §c不是一个目录!");
- return;
- }
- final StringBuffer sb = new StringBuffer();
- for (final File file : dir.listFiles()) {
- if (file.isDirectory()) {
- sb.append("§b");
- } else {
- sb.append("§a");
- }
- sb.append(file.getName() + " ");
- }
- final String filelist = sb.toString();
- if (filelist.isEmpty()) {
- sendMessage(sender, "§6目录: §e" + dir.getAbsolutePath() + " §c下没有文件或文件夹!");
- } else {
- sendMessage(sender, "§6目录: §e" + dir.getAbsolutePath() + " §a存在如下文件!");
- sendMessage(sender, sb.toString());
- }
- }
+ @Override
+ public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
+ File dir = new File(".");
+ if (args.length == 1) {
+ dir = new File(args[0]);
+ }
+ if (!dir.isDirectory()) {
+ sendMessage(sender, "§6路径: §e " + dir.getAbsolutePath() + " §c不是一个目录!");
+ return;
+ }
+ final StringBuffer sb = new StringBuffer();
+ for (final File file : dir.listFiles()) {
+ if (file.isDirectory()) {
+ sb.append("§b");
+ } else {
+ sb.append("§a");
+ }
+ sb.append(file.getName() + " ");
+ }
+ final String filelist = sb.toString();
+ if (filelist.isEmpty()) {
+ sendMessage(sender, "§6目录: §e" + dir.getAbsolutePath() + " §c下没有文件或文件夹!");
+ } else {
+ sendMessage(sender, "§6目录: §e" + dir.getAbsolutePath() + " §a存在如下文件!");
+ sendMessage(sender, sb.toString());
+ }
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/file/commands/CommandRename.java b/src/main/java/cn/citycraft/Yum/file/commands/CommandRename.java
index ee00fd4..cfb84df 100644
--- a/src/main/java/cn/citycraft/Yum/file/commands/CommandRename.java
+++ b/src/main/java/cn/citycraft/Yum/file/commands/CommandRename.java
@@ -15,30 +15,31 @@ import cn.citycraft.Yum.Yum;
/**
* 插件删除命令类
*
- * @author 蒋天蓓 2015年8月12日下午2:04:05
+ * @author 喵♂呜
+ * @since 2015年8月12日下午2:04:05
*/
public class CommandRename extends BaseCommand {
- public CommandRename(final Yum main) {
- super("rn");
- setMinimumArguments(2);
- setDescription("重命名文件(服务器JAR为根目录)");
- setPossibleArguments("<文件相对目录> <文件名称>");
- }
+ public CommandRename(final Yum main) {
+ super("rn");
+ setMinimumArguments(2);
+ setDescription("重命名文件(服务器JAR为根目录)");
+ setPossibleArguments("<文件相对目录> <文件名称>");
+ }
- @Override
- public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
- final String fpath = args[0];
- final File file = new File(fpath);
- if (!file.exists()) {
- sendMessage(sender, "§c文件 " + file.getAbsolutePath() + " 不存在!");
- } else {
- try {
- final File newFile = new File(file.getParentFile(), args[1]);
- file.renameTo(newFile);
- sendMessage(sender, "§a文件 §e" + file.getAbsolutePath() + " §a重命名为 §d" + newFile.getAbsolutePath());
- } catch (final Exception e) {
- sendMessage(sender, "§c文件 §e" + file.getAbsolutePath() + " §c重命名失败: " + e.getMessage());
- }
- }
- }
+ @Override
+ public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
+ final String fpath = args[0];
+ final File file = new File(fpath);
+ if (!file.exists()) {
+ sendMessage(sender, "§c文件 " + file.getAbsolutePath() + " 不存在!");
+ } else {
+ try {
+ final File newFile = new File(file.getParentFile(), args[1]);
+ file.renameTo(newFile);
+ sendMessage(sender, "§a文件 §e" + file.getAbsolutePath() + " §a重命名为 §d" + newFile.getAbsolutePath());
+ } catch (final Exception e) {
+ sendMessage(sender, "§c文件 §e" + file.getAbsolutePath() + " §c重命名失败: " + e.getMessage());
+ }
+ }
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/file/commands/CommandRm.java b/src/main/java/cn/citycraft/Yum/file/commands/CommandRm.java
index 8c7b7cb..0fe9275 100644
--- a/src/main/java/cn/citycraft/Yum/file/commands/CommandRm.java
+++ b/src/main/java/cn/citycraft/Yum/file/commands/CommandRm.java
@@ -16,42 +16,43 @@ import cn.citycraft.Yum.Yum;
/**
* 插件删除命令类
*
- * @author 蒋天蓓 2015年8月12日下午2:04:05
+ * @author 喵♂呜
+ * @since 2015年8月12日下午2:04:05
*/
public class CommandRm extends BaseCommand {
- Yum plugin;
+ Yum plugin;
- public CommandRm(final Yum main) {
- super();
- plugin = main;
- setMinimumArguments(1);
- setDescription("删除文件夹(服务器JAR为根目录)");
- setPossibleArguments("<文件相对目录>");
- }
+ public CommandRm(final Yum main) {
+ super();
+ plugin = main;
+ setMinimumArguments(1);
+ setDescription("删除文件夹(服务器JAR为根目录)");
+ setPossibleArguments("<文件相对目录>");
+ }
- @Override
- public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
- final String fpath = args[0];
- final File file = new File(fpath);
- if (!file.exists()) {
- sendMessage(sender, "§c目录 " + file.getAbsolutePath() + " 不存在!");
- } else {
- if (!file.isDirectory()) {
- sendMessage(sender, "§d路径 §e" + file.getAbsolutePath() + " §c是一个文件 请使用file delete!");
- return;
- }
- for (final String name : plugin.config.getStringList("blacklist")) {
- if (file.getAbsolutePath().toLowerCase().endsWith(name)) {
- sendMessage(sender, "§d路径 §e" + file.getAbsolutePath() + " §c不允许被删除!");
- return;
- }
- }
- if (file.listFiles().length != 0 && !(args.length > 1 && args[1].equalsIgnoreCase("-rf"))) {
- sendMessage(sender, "§d目录 §e" + file.getAbsolutePath() + " §c不为空!");
- sendMessage(sender, "§c请使用 §a/file rm " + fpath + " -rf §c强行删除!");
- return;
- }
- sendMessage(sender, "§d目录 §e" + file.getAbsolutePath() + " " + (FileUtil.deleteDir(sender, file) ? "§a删除成功!" : "§c删除失败!"));
- }
- }
+ @Override
+ public void execute(final CommandSender sender, final Command command, final String label, final String[] args) throws CommandException {
+ final String fpath = args[0];
+ final File file = new File(fpath);
+ if (!file.exists()) {
+ sendMessage(sender, "§c目录 " + file.getAbsolutePath() + " 不存在!");
+ } else {
+ if (!file.isDirectory()) {
+ sendMessage(sender, "§d路径 §e" + file.getAbsolutePath() + " §c是一个文件 请使用file delete!");
+ return;
+ }
+ for (final String name : plugin.config.getStringList("blacklist")) {
+ if (file.getAbsolutePath().toLowerCase().endsWith(name)) {
+ sendMessage(sender, "§d路径 §e" + file.getAbsolutePath() + " §c不允许被删除!");
+ return;
+ }
+ }
+ if (file.listFiles().length != 0 && !(args.length > 1 && args[1].equalsIgnoreCase("-rf"))) {
+ sendMessage(sender, "§d目录 §e" + file.getAbsolutePath() + " §c不为空!");
+ sendMessage(sender, "§c请使用 §a/file rm " + fpath + " -rf §c强行删除!");
+ return;
+ }
+ sendMessage(sender, "§d目录 §e" + file.getAbsolutePath() + " " + (FileUtil.deleteDir(sender, file) ? "§a删除成功!" : "§c删除失败!"));
+ }
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/file/commands/FileCommand.java b/src/main/java/cn/citycraft/Yum/file/commands/FileCommand.java
index b483932..4274bba 100644
--- a/src/main/java/cn/citycraft/Yum/file/commands/FileCommand.java
+++ b/src/main/java/cn/citycraft/Yum/file/commands/FileCommand.java
@@ -3,14 +3,20 @@ package cn.citycraft.Yum.file.commands;
import cn.citycraft.PluginHelper.commands.HandlerSubCommand;
import cn.citycraft.Yum.Yum;
+/**
+ * File命令基类
+ *
+ * @since 2016年1月9日 上午10:02:39
+ * @author 喵♂呜
+ */
public class FileCommand {
- public FileCommand(final Yum yum) {
- final HandlerSubCommand cmdhandler = new HandlerSubCommand(yum, "file");
- cmdhandler.setAllCommandOnlyConsole(yum.config.getBoolean("onlyFileCommandConsole", true));
- cmdhandler.registerCommand(new CommandDownLoad(yum));
- cmdhandler.registerCommand(new CommandDelete(yum));
- cmdhandler.registerCommand(new CommandRename(yum));
- cmdhandler.registerCommand(new CommandRm(yum));
- cmdhandler.registerCommand(new CommandLs(yum));
- }
+ public FileCommand(final Yum yum) {
+ final HandlerSubCommand cmdhandler = new HandlerSubCommand(yum, "file");
+ cmdhandler.setAllCommandOnlyConsole(yum.config.getBoolean("onlyFileCommandConsole", true));
+ cmdhandler.registerCommand(new CommandDownLoad(yum));
+ cmdhandler.registerCommand(new CommandDelete(yum));
+ cmdhandler.registerCommand(new CommandRename(yum));
+ cmdhandler.registerCommand(new CommandRm(yum));
+ cmdhandler.registerCommand(new CommandLs(yum));
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/manager/DownloadManager.java b/src/main/java/cn/citycraft/Yum/manager/DownloadManager.java
index df8ac81..aff31af 100644
--- a/src/main/java/cn/citycraft/Yum/manager/DownloadManager.java
+++ b/src/main/java/cn/citycraft/Yum/manager/DownloadManager.java
@@ -9,199 +9,207 @@ import java.net.URL;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.Plugin;
+import org.bukkit.plugin.PluginDescriptionFile;
/**
* 下载管理类
*
- * @author 蒋天蓓
- * 2015年8月21日下午6:08:09
+ * @author 喵♂呜
+ * @since 2015年8月21日下午6:08:09
*/
public class DownloadManager {
- Plugin plugin;
+ Plugin plugin;
- public DownloadManager(final Plugin main) {
- this.plugin = main;
- }
+ public DownloadManager(final Plugin main) {
+ this.plugin = main;
+ }
- /**
- * 从地址获得文件名称
- *
- * @param url
- * - 地址
- * @return 文件名称
- */
- public String getFileName(final String url) {
- final int end = url.lastIndexOf('/');
- return url.substring(end + 1);
- }
+ /**
+ * 从地址获得文件名称
+ *
+ * @param url
+ * - 地址
+ * @return 文件名称
+ */
+ public String getFileName(final String url) {
+ final int end = url.lastIndexOf('/');
+ return url.substring(end + 1);
+ }
- /**
- * 从地址获得文件名称
- *
- * @param url
- * - 地址
- * @return 文件名称
- */
- public String getFileName(final URL url) {
- return getFileName(url.getFile());
- }
+ /**
+ * 从地址获得文件名称
+ *
+ * @param url
+ * - 地址
+ * @return 文件名称
+ */
+ public String getFileName(final URL url) {
+ return getFileName(url.getFile());
+ }
- /**
- * 从网络下载文件
- *
- * @param sender
- * - 命令发送者
- * @param urlstring
- * - 下载地址
- * @return 是否成功
- */
- public boolean run(final CommandSender sender, final String urlstring) {
- return run(sender, urlstring, new File("plugins", getFileName(urlstring)));
- }
+ /**
+ * 从网络下载文件
+ *
+ * @param sender
+ * - 命令发送者
+ * @param urlstring
+ * - 下载地址
+ * @return 是否成功
+ */
+ public boolean run(final CommandSender sender, final String urlstring) {
+ return run(sender, urlstring, new File("plugins", getFileName(urlstring)));
+ }
- /**
- * 从网络下载文件
- *
- * @param sender
- * - 命令发送者
- * @param urlstring
- * - 下载地址
- * @param file
- * - 保存文件
- * @return 是否成功
- */
- public boolean run(final CommandSender sender, final String urlstring, final File file) {
- try {
- final URL url = new URL(urlstring);
- return run(sender, url, file);
- } catch (final MalformedURLException e) {
- sender.sendMessage("§4错误: §c无法识别的URL地址...");
- sender.sendMessage("§4地址: §c" + urlstring);
- return false;
- }
- }
+ /**
+ * 从网络下载文件
+ *
+ * @param sender
+ * - 命令发送者
+ * @param urlstring
+ * - 下载地址
+ * @param file
+ * - 保存文件
+ * @return 是否成功
+ */
+ public boolean run(final CommandSender sender, final String urlstring, final File file) {
+ try {
+ final URL url = new URL(urlstring);
+ return run(sender, url, file);
+ } catch (final MalformedURLException e) {
+ sender.sendMessage("§4错误: §c无法识别的URL地址...");
+ sender.sendMessage("§4地址: §c" + urlstring);
+ return false;
+ }
+ }
- /**
- * 从网络下载文件
- *
- * @param sender
- * - 命令发送者
- * @param url
- * - 下载地址
- * @param file
- * - 保存文件
- * @return 是否成功
- */
- public boolean run(CommandSender sender, final URL url, final File file) {
- BufferedInputStream in = null;
- FileOutputStream fout = null;
- if (sender == null) {
- sender = Bukkit.getConsoleSender();
- }
- try {
- sender.sendMessage("§6开始下载: §3" + getFileName(url));
- sender.sendMessage("§6下载地址: §3" + url.toString());
- final int fileLength = url.openConnection().getContentLength();
- if (fileLength < 0) {
- sender.sendMessage("§6下载: §c文件 " + file.getName() + " 获取长度错误(可能是网络问题)!");
- sender.sendMessage("§6文件: §c" + file.getName() + " 下载失败!");
- return false;
- }
- sender.sendMessage("§6文件长度: §3" + fileLength);
- in = new BufferedInputStream(url.openStream());
- if (!file.getParentFile().exists()) {
- file.getParentFile().mkdirs();
- sender.sendMessage("§6创建新目录: §d" + file.getParentFile().getAbsolutePath());
- }
- if (file.exists()) {
- file.delete();
- }
- file.createNewFile();
- sender.sendMessage("§6创建新文件: §d" + file.getAbsolutePath());
- fout = new FileOutputStream(file);
- final byte[] data = new byte[1024];
- long downloaded = 0L;
- int count;
- long time = System.currentTimeMillis();
- while ((count = in.read(data)) != -1) {
- downloaded += count;
- fout.write(data, 0, count);
- final int percent = (int) (downloaded * 100L / fileLength);
- if (percent % 10 == 0) {
- if (System.currentTimeMillis() - time > 500) {
- sender.sendMessage(String.format("§6已下载: §a" + getPer(percent / 10) + " %s%%", percent));
- time = System.currentTimeMillis();
- }
- }
- }
- sender.sendMessage("§6文件: §a " + file.getName() + " 下载完成!");
- return true;
- } catch (final Exception ex) {
- sender.sendMessage("§6异常: §c" + ex.getMessage());
- sender.sendMessage("§6文件: §c" + file.getName() + " 下载失败!");
- return false;
- } finally {
- try {
- if (in != null) {
- in.close();
- }
- if (fout != null) {
- fout.close();
- }
- } catch (final Exception ex) {
- }
- }
- }
+ /**
+ * 从网络下载文件
+ *
+ * @param sender
+ * - 命令发送者
+ * @param url
+ * - 下载地址
+ * @param file
+ * - 保存文件
+ * @return 是否成功
+ */
+ public boolean run(CommandSender sender, final URL url, final File file) {
+ BufferedInputStream in = null;
+ FileOutputStream fout = null;
+ if (sender == null) {
+ sender = Bukkit.getConsoleSender();
+ }
+ try {
+ sender.sendMessage("§6开始下载: §3" + getFileName(url));
+ sender.sendMessage("§6下载地址: §3" + url.toString());
+ final int fileLength = url.openConnection().getContentLength();
+ if (fileLength < 0) {
+ sender.sendMessage("§6下载: §c文件 " + file.getName() + " 获取长度错误(可能是网络问题)!");
+ sender.sendMessage("§6文件: §c" + file.getName() + " 下载失败!");
+ return false;
+ }
+ sender.sendMessage("§6文件长度: §3" + fileLength);
+ in = new BufferedInputStream(url.openStream());
+ if (!file.getParentFile().exists()) {
+ file.getParentFile().mkdirs();
+ sender.sendMessage("§6创建新目录: §d" + file.getParentFile().getAbsolutePath());
+ }
+ if (file.exists()) {
+ file.delete();
+ }
+ file.createNewFile();
+ sender.sendMessage("§6创建新文件: §d" + file.getAbsolutePath());
+ fout = new FileOutputStream(file);
+ final byte[] data = new byte[1024];
+ long downloaded = 0L;
+ int count;
+ long time = System.currentTimeMillis();
+ while ((count = in.read(data)) != -1) {
+ downloaded += count;
+ fout.write(data, 0, count);
+ final int percent = (int) (downloaded * 100L / fileLength);
+ if (percent % 10 == 0) {
+ if (System.currentTimeMillis() - time > 500) {
+ sender.sendMessage(String.format("§6已下载: §a" + getPer(percent / 10) + " %s%%", percent));
+ time = System.currentTimeMillis();
+ }
+ }
+ }
+ String pVer = null;
+ try {
+ final PluginDescriptionFile desc = plugin.getPluginLoader().getPluginDescription(file);
+ pVer = desc.getVersion();
+ } catch (final Exception e) {
+ pVer = "";
+ }
+ sender.sendMessage("§6" + (pVer.isEmpty() ? "文件" : "插件") + ": §b" + file.getName() + (pVer.isEmpty() ? "" : " 版本 §e" + pVer) + " §a下载完成!");
+ return true;
+ } catch (final Exception ex) {
+ sender.sendMessage("§6异常: §c" + ex.getMessage());
+ sender.sendMessage("§6文件: §c" + file.getName() + " 下载失败!");
+ return false;
+ } finally {
+ try {
+ if (in != null) {
+ in.close();
+ }
+ if (fout != null) {
+ fout.close();
+ }
+ } catch (final Exception ex) {
+ }
+ }
+ }
- /**
- * 从网络下载文件
- *
- * @param urlstring
- * - 下载地址
- * @return 是否成功
- */
- public boolean run(final String urlstring) {
- return run(null, urlstring);
- }
+ /**
+ * 从网络下载文件
+ *
+ * @param urlstring
+ * - 下载地址
+ * @return 是否成功
+ */
+ public boolean run(final String urlstring) {
+ return run(null, urlstring);
+ }
- /**
- * 从网络下载文件
- *
- * @param urlstring
- * - 下载地址
- * @param file
- * - 保存文件
- * @return 是否成功
- */
- public boolean run(final String urlstring, final File file) {
- return run(null, urlstring, file);
- }
+ /**
+ * 从网络下载文件
+ *
+ * @param urlstring
+ * - 下载地址
+ * @param file
+ * - 保存文件
+ * @return 是否成功
+ */
+ public boolean run(final String urlstring, final File file) {
+ return run(null, urlstring, file);
+ }
- /**
- * 从网络下载文件
- *
- * @param url
- * - 下载地址
- * @param file
- * - 保存文件
- * @return 是否成功
- */
- public boolean run(final URL url, final File file) {
- return run(null, url, file);
- }
+ /**
+ * 从网络下载文件
+ *
+ * @param url
+ * - 下载地址
+ * @param file
+ * - 保存文件
+ * @return 是否成功
+ */
+ public boolean run(final URL url, final File file) {
+ return run(null, url, file);
+ }
- private String getPer(final int per) {
- final StringBuilder sb = new StringBuilder();
- for (int i = 0; i < 11; i++) {
- if (per > i) {
- sb.append("==");
- } else if (per == i) {
- sb.append("> ");
- } else {
- sb.append(" ");
- }
- }
- return sb.toString();
- }
+ private String getPer(final int per) {
+ final StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < 11; i++) {
+ if (per > i) {
+ sb.append("==");
+ } else if (per == i) {
+ sb.append("> ");
+ } else {
+ sb.append(" ");
+ }
+ }
+ return sb.toString();
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/manager/PluginInfo.java b/src/main/java/cn/citycraft/Yum/manager/PluginInfo.java
index 133946e..1f86cb9 100644
--- a/src/main/java/cn/citycraft/Yum/manager/PluginInfo.java
+++ b/src/main/java/cn/citycraft/Yum/manager/PluginInfo.java
@@ -10,113 +10,113 @@ import cn.citycraft.Yum.manager.RepoSerialization.TagInfo;
import cn.citycraft.Yum.manager.RepoSerialization.URLType;
public class PluginInfo {
- public static final String NMSVersion = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
+ public static final String NMSVersion = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
- public String branch;
- public String name;
- public Plugin plugin;
- public String pom;
- public URLType type;
- public String repo;
- public String url;
+ public String branch;
+ public String name;
+ public Plugin plugin;
+ public String pom;
+ public URLType type;
+ public String repo;
+ public String url;
- /**
- * 获得下载直链
- *
- * @param sender
- * 命令发送者
- * @param version
- * 版本
- * @return 下载直链
- */
- public String getDirectUrl() {
- return url;
- }
+ /**
+ * 获得下载直链
+ *
+ * @param sender
+ * 命令发送者
+ * @param version
+ * 版本
+ * @return 下载直链
+ */
+ public String getDirectUrl() {
+ return url;
+ }
- /**
- * 获得下载直链
- *
- * @param sender
- * 命令发送者
- * @param version
- * 版本
- * @return 下载直链
- */
- public String getDirectUrl(final String version) {
- return url.replace("[version]", version);
- }
+ /**
+ * 获得下载直链
+ *
+ * @param sender
+ * 命令发送者
+ * @param version
+ * 版本
+ * @return 下载直链
+ */
+ public String getDirectUrl(final String version) {
+ return url.replace("[version]", version);
+ }
- /**
- * 获得文件名称
- *
- * @return 文件名称
- */
- public String getFileName() {
- return getFileName(plugin.version);
- }
+ /**
+ * 获得文件名称
+ *
+ * @return 文件名称
+ */
+ public String getFileName() {
+ return getFileName(plugin.version);
+ }
- /**
- * 获得文件名称
- *
- * @param version
- * 插件版本
- * @return 文件名称
- */
- public String getFileName(final String version) {
- return String.format("%1$s-%2$s.jar", plugin.artifactId, version);
- }
+ /**
+ * 获得文件名称
+ *
+ * @param version
+ * 插件版本
+ * @return 文件名称
+ */
+ public String getFileName(final String version) {
+ return String.format("%1$s-%2$s.jar", plugin.artifactId, version);
+ }
- /**
- * 获取Maven仓库指定插件的下载地址
- *
- * @param sender
- * - 命令发送者
- * @param version
- * - 需要更新的版本
- * @return 更新地址
- */
- public String getMavenUrl(final String ver) {
- return String.format(url + (url.endsWith("/") ? "" : "/") + "%1$s/%2$s/%3$s/%2$s-%3$s.jar",
- plugin.groupId.replace(".", "/"),
- plugin.artifactId,
- (ver == null || ver.isEmpty()) ? plugin.version : ver);
- }
+ /**
+ * 获取Maven仓库指定插件的下载地址
+ *
+ * @param sender
+ * - 命令发送者
+ * @param version
+ * - 需要更新的版本
+ * @return 更新地址
+ */
+ public String getMavenUrl(final String ver) {
+ return String.format(url + (url.endsWith("/") ? "" : "/") + "%1$s/%2$s/%3$s/%2$s-%3$s.jar",
+ plugin.groupId.replace(".", "/"),
+ plugin.artifactId,
+ (ver == null || ver.isEmpty()) ? plugin.version : ver);
+ }
- public String getUrl(final CommandSender sender, final String version) {
- String ver = version;
- if (ver == null) {
- if (plugin.tags != null) {
- PluginHelperLogger.getLogger().debug("发现存在TAG标签 开始检索: " + NMSVersion);
- for (final TagInfo tagInfo : plugin.tags) {
- if (tagInfo.tag.equalsIgnoreCase(NMSVersion)) {
- sender.sendMessage("§6版本: §b从Tag标签中获取 §e" + NMSVersion + " §b的最新版本...");
- ver = tagInfo.version;
- if (tagInfo.type == URLType.DirectUrl) {
- return tagInfo.url;
- }
- break;
- }
- }
- } else if (pom != null && !pom.isEmpty()) {
- pom = pom.replace("[name]", name).replace("[branch]", branch);
- sender.sendMessage("§6版本: §b尝试从在线POM文件获取最新版本...");
- ver = IOUtil.getXMLTag(pom, "version", plugin.version);
- if (ver != null) {
- sender.sendMessage("§6版本: §a成功获取到最新版本 §e" + ver + " §a...");
- }
- }
- }
- if (ver == null) {
- ver = plugin.version;
- sender.sendMessage("§6版本: §a使用缓存的版本 §e" + ver + " §a...");
- }
- switch (type) {
- case DirectUrl:
- return getDirectUrl(ver);
- case Maven:
- return getMavenUrl(ver);
- default:
- return null;
- }
- }
+ public String getUrl(final CommandSender sender, final String version) {
+ String ver = version;
+ if (ver == null) {
+ if (plugin.tags != null) {
+ PluginHelperLogger.getLogger().debug("发现存在TAG标签 开始检索: " + NMSVersion);
+ for (final TagInfo tagInfo : plugin.tags) {
+ if (tagInfo.tag.equalsIgnoreCase(NMSVersion)) {
+ sender.sendMessage("§6版本: §b从Tag标签中获取 §e" + NMSVersion + " §b的最新版本...");
+ ver = tagInfo.version;
+ if (tagInfo.type == URLType.DirectUrl) {
+ return tagInfo.url;
+ }
+ break;
+ }
+ }
+ } else if (pom != null && !pom.isEmpty()) {
+ pom = pom.replace("[name]", name).replace("[branch]", branch);
+ sender.sendMessage("§6版本: §b尝试从在线POM文件获取最新版本...");
+ ver = IOUtil.getXMLTag(pom, "version", null);
+ if (ver != null) {
+ sender.sendMessage("§6版本: §a成功获取到最新版本 §e" + ver + " §a...");
+ }
+ }
+ }
+ if (ver == null) {
+ ver = plugin.version;
+ sender.sendMessage("§6版本: §d使用缓存的版本 §e" + ver + " §a...");
+ }
+ switch (type) {
+ case DirectUrl:
+ return getDirectUrl(ver);
+ case Maven:
+ return getMavenUrl(ver);
+ default:
+ return null;
+ }
+ }
}
\ No newline at end of file
diff --git a/src/main/java/cn/citycraft/Yum/manager/PluginsManager.java b/src/main/java/cn/citycraft/Yum/manager/PluginsManager.java
index fff49a2..637915d 100644
--- a/src/main/java/cn/citycraft/Yum/manager/PluginsManager.java
+++ b/src/main/java/cn/citycraft/Yum/manager/PluginsManager.java
@@ -37,654 +37,655 @@ import cn.citycraft.PluginHelper.utils.StringUtil;
/**
* 插件管理类
*
- * @author 蒋天蓓 2015年8月21日下午7:03:26
+ * @author 喵♂呜
+ * @since 2015年8月21日下午7:03:26
*/
public class PluginsManager {
- private final Set ignoreList = new HashSet<>();
- private final Plugin main;
+ private final Set ignoreList = new HashSet<>();
+ private final Plugin main;
- public PluginsManager(final Plugin plugin) {
- this.main = plugin;
- }
+ public PluginsManager(final Plugin plugin) {
+ this.main = plugin;
+ }
- /**
- * 添加到忽略列表
- *
- * @param name
- * - 插件名称
- * @return 是否成功
- */
- public boolean addIgnore(final String name) {
- return ignoreList.add(name);
- }
+ /**
+ * 添加到忽略列表
+ *
+ * @param name
+ * - 插件名称
+ * @return 是否成功
+ */
+ public boolean addIgnore(final String name) {
+ return ignoreList.add(name);
+ }
- /**
- * 删除插件
- *
- * @param sender
- * - 命令发送者
- * @param plugin
- * - 插件
- * @return 是否成功
- */
- public boolean deletePlugin(final CommandSender sender, final Plugin plugin) {
- return unload(sender, plugin) && getPluginFile(plugin).delete();
- }
+ /**
+ * 删除插件
+ *
+ * @param sender
+ * - 命令发送者
+ * @param plugin
+ * - 插件
+ * @return 是否成功
+ */
+ public boolean deletePlugin(final CommandSender sender, final Plugin plugin) {
+ return unload(sender, plugin) && getPluginFile(plugin).delete();
+ }
- /**
- * 删除插件
- *
- * @param plugin
- * - 插件
- * @return 是否成功
- */
- public boolean deletePlugin(final Plugin plugin) {
- return deletePlugin(Bukkit.getConsoleSender(), plugin);
- }
+ /**
+ * 删除插件
+ *
+ * @param plugin
+ * - 插件
+ * @return 是否成功
+ */
+ public boolean deletePlugin(final Plugin plugin) {
+ return deletePlugin(Bukkit.getConsoleSender(), plugin);
+ }
- /**
- * 关闭插件
- *
- * @param plugin
- * - 插件
- */
- public void disable(final Plugin plugin) {
- if ((plugin != null) && (plugin.isEnabled())) {
- Bukkit.getPluginManager().disablePlugin(plugin);
- }
- }
+ /**
+ * 关闭插件
+ *
+ * @param plugin
+ * - 插件
+ */
+ public void disable(final Plugin plugin) {
+ if ((plugin != null) && (plugin.isEnabled())) {
+ Bukkit.getPluginManager().disablePlugin(plugin);
+ }
+ }
- /**
- * 关闭所有插件
- */
- public void disableAll() {
- for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
- if (!isIgnored(plugin)) {
- disable(plugin);
- }
- }
- }
+ /**
+ * 关闭所有插件
+ */
+ public void disableAll() {
+ for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
+ if (!isIgnored(plugin)) {
+ disable(plugin);
+ }
+ }
+ }
- /**
- * 启用插件
- *
- * @param plugin
- * - 插件
- */
- public void enable(final Plugin plugin) {
- if ((plugin != null) && (!plugin.isEnabled())) {
- Bukkit.getPluginManager().enablePlugin(plugin);
- }
- }
+ /**
+ * 启用插件
+ *
+ * @param plugin
+ * - 插件
+ */
+ public void enable(final Plugin plugin) {
+ if ((plugin != null) && (!plugin.isEnabled())) {
+ Bukkit.getPluginManager().enablePlugin(plugin);
+ }
+ }
- /**
- * 启用所有插件
- */
- public void enableAll() {
- for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
- if (!isIgnored(plugin)) {
- enable(plugin);
- }
- }
- }
+ /**
+ * 启用所有插件
+ */
+ public void enableAll() {
+ for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
+ if (!isIgnored(plugin)) {
+ enable(plugin);
+ }
+ }
+ }
- /**
- * 删除插件(包括数据)
- *
- * @param sender
- * - 命令发送者
- * @param plugin
- * - 插件
- * @return 是否成功
- */
- public boolean fullDeletePlugin(final CommandSender sender, final Plugin plugin) {
- return unload(sender, plugin) && getPluginFile(plugin).delete() && FileUtil.deleteDir(sender, plugin.getDataFolder());
- }
+ /**
+ * 删除插件(包括数据)
+ *
+ * @param sender
+ * - 命令发送者
+ * @param plugin
+ * - 插件
+ * @return 是否成功
+ */
+ public boolean fullDeletePlugin(final CommandSender sender, final Plugin plugin) {
+ return unload(sender, plugin) && getPluginFile(plugin).delete() && FileUtil.deleteDir(sender, plugin.getDataFolder());
+ }
- /**
- * 获得格式化的插件名称
- *
- * @param plugin
- * - 插件
- * @return 格式化的插件名称
- */
- public String getFormattedName(final Plugin plugin) {
- return getFormattedName(plugin, false);
- }
+ /**
+ * 获得格式化的插件名称
+ *
+ * @param plugin
+ * - 插件
+ * @return 格式化的插件名称
+ */
+ public String getFormattedName(final Plugin plugin) {
+ return getFormattedName(plugin, false);
+ }
- /**
- * 获得格式化的插件名称(可带版本)
- *
- * @param plugin
- * - 插件
- * @param includeVersions
- * - 是否包括版本
- * @return 格式化的插件名称
- */
- public String getFormattedName(final Plugin plugin, final boolean includeVersions) {
- final ChatColor color = plugin.isEnabled() ? ChatColor.GREEN : ChatColor.RED;
- String pluginName = color + plugin.getName();
- if (includeVersions) {
- pluginName = pluginName + " (" + plugin.getDescription().getVersion() + ")";
- }
- return pluginName;
- }
+ /**
+ * 获得格式化的插件名称(可带版本)
+ *
+ * @param plugin
+ * - 插件
+ * @param includeVersions
+ * - 是否包括版本
+ * @return 格式化的插件名称
+ */
+ public String getFormattedName(final Plugin plugin, final boolean includeVersions) {
+ final ChatColor color = plugin.isEnabled() ? ChatColor.GREEN : ChatColor.RED;
+ String pluginName = color + plugin.getName();
+ if (includeVersions) {
+ pluginName = pluginName + " (" + plugin.getDescription().getVersion() + ")";
+ }
+ return pluginName;
+ }
- /**
- * 通过名称获得插件
- *
- * @param name
- * - 名称
- * @return 插件
- */
- public Plugin getPluginByName(final String name) {
- return Bukkit.getPluginManager().getPlugin(name);
- }
+ /**
+ * 通过名称获得插件
+ *
+ * @param name
+ * - 名称
+ * @return 插件
+ */
+ public Plugin getPluginByName(final String name) {
+ return Bukkit.getPluginManager().getPlugin(name);
+ }
- /**
- * 通过名称获得插件(处理带空格的插件)
- *
- * @param name
- * - 名称
- * @return 插件
- */
- public Plugin getPluginByName(final String[] args, final int start) {
- return getPluginByName(StringUtil.consolidateStrings(args, start));
- }
+ /**
+ * 通过名称获得插件(处理带空格的插件)
+ *
+ * @param name
+ * - 名称
+ * @return 插件
+ */
+ public Plugin getPluginByName(final String[] args, final int start) {
+ return getPluginByName(StringUtil.consolidateStrings(args, start));
+ }
- /**
- * 获得插件绝对路径
- *
- * @param plugin
- * - 插件
- * @return 插件的绝对路径
- */
- public File getPluginFile(final Plugin plugin) {
- File file = null;
- final ClassLoader cl = plugin.getClass().getClassLoader();
- if ((cl instanceof URLClassLoader)) {
- @SuppressWarnings("resource")
- final URLClassLoader ucl = (URLClassLoader) cl;
- final URL url = ucl.getURLs()[0];
- try {
- file = new File(URLDecoder.decode(url.getFile(), "UTF-8"));
- } catch (final UnsupportedEncodingException e) {
- }
- }
- return file;
- }
+ /**
+ * 获得插件绝对路径
+ *
+ * @param plugin
+ * - 插件
+ * @return 插件的绝对路径
+ */
+ public File getPluginFile(final Plugin plugin) {
+ File file = null;
+ final ClassLoader cl = plugin.getClass().getClassLoader();
+ if ((cl instanceof URLClassLoader)) {
+ @SuppressWarnings("resource")
+ final URLClassLoader ucl = (URLClassLoader) cl;
+ final URL url = ucl.getURLs()[0];
+ try {
+ file = new File(URLDecoder.decode(url.getFile(), "UTF-8"));
+ } catch (final UnsupportedEncodingException e) {
+ }
+ }
+ return file;
+ }
- public List getPluginNames(final boolean fullName) {
- final List plugins = new ArrayList();
- for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
- plugins.add(fullName ? plugin.getDescription().getFullName() : plugin.getName());
- }
- return plugins;
- }
+ public List getPluginNames(final boolean fullName) {
+ final List plugins = new ArrayList();
+ for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
+ plugins.add(fullName ? plugin.getDescription().getFullName() : plugin.getName());
+ }
+ return plugins;
+ }
- /**
- * 获得插件版本
- *
- * @param name
- * - 插件名称
- * @return 插件版本
- */
- public String getPluginVersion(final String name) {
- final Plugin plugin = getPluginByName(name);
- if ((plugin != null) && (plugin.getDescription() != null)) {
- return plugin.getDescription().getVersion();
- }
- return null;
- }
+ /**
+ * 获得插件版本
+ *
+ * @param name
+ * - 插件名称
+ * @return 插件版本
+ */
+ public String getPluginVersion(final String name) {
+ final Plugin plugin = getPluginByName(name);
+ if ((plugin != null) && (plugin.getDescription() != null)) {
+ return plugin.getDescription().getVersion();
+ }
+ return null;
+ }
- /**
- * 获得插件命令
- *
- * @param plugin
- * - 插件
- * @return 插件命令
- */
- public String getUsages(final Plugin plugin) {
- final List parsedCommands = new ArrayList();
+ /**
+ * 获得插件命令
+ *
+ * @param plugin
+ * - 插件
+ * @return 插件命令
+ */
+ public String getUsages(final Plugin plugin) {
+ final List parsedCommands = new ArrayList();
- final Map> commands = plugin.getDescription().getCommands();
+ final Map> commands = plugin.getDescription().getCommands();
- if (commands != null) {
- final Iterator>> commandsIt = commands.entrySet().iterator();
- while (commandsIt.hasNext()) {
- final Entry> thisEntry = commandsIt.next();
- if (thisEntry != null) {
- parsedCommands.add(thisEntry.getKey());
- }
- }
- }
- if (parsedCommands.isEmpty()) {
- return null;
- }
- return Joiner.on(", ").join(parsedCommands);
- }
+ if (commands != null) {
+ final Iterator>> commandsIt = commands.entrySet().iterator();
+ while (commandsIt.hasNext()) {
+ final Entry> thisEntry = commandsIt.next();
+ if (thisEntry != null) {
+ parsedCommands.add(thisEntry.getKey());
+ }
+ }
+ }
+ if (parsedCommands.isEmpty()) {
+ return null;
+ }
+ return Joiner.on(", ").join(parsedCommands);
+ }
- /**
- * 判断插件是否在忽略列表
- *
- * @param plugin
- * - 插件
- * @return 是否
- */
- public boolean isIgnored(final Plugin plugin) {
- return isIgnored(plugin.getName());
- }
+ /**
+ * 判断插件是否在忽略列表
+ *
+ * @param plugin
+ * - 插件
+ * @return 是否
+ */
+ public boolean isIgnored(final Plugin plugin) {
+ return isIgnored(plugin.getName());
+ }
- /**
- * 判断插件是否在忽略列表
- *
- * @param plugin
- * - 插件名称
- * @return 是否
- */
- public boolean isIgnored(final String plugin) {
- for (final String name : ignoreList) {
- if (name.equalsIgnoreCase(plugin)) {
- return true;
- }
- }
- return false;
- }
+ /**
+ * 判断插件是否在忽略列表
+ *
+ * @param plugin
+ * - 插件名称
+ * @return 是否
+ */
+ public boolean isIgnored(final String plugin) {
+ for (final String name : ignoreList) {
+ if (name.equalsIgnoreCase(plugin)) {
+ return true;
+ }
+ }
+ return false;
+ }
- /**
- * 载入插件
- *
- * @param sender
- * - 命令发送者
- * @param pluginFile
- * - 插件文件
- * @return 是否成功
- */
- public boolean load(final CommandSender sender, final File pluginFile) {
- Plugin target = null;
- final String name = pluginFile.getName();
- try {
- target = Bukkit.getPluginManager().loadPlugin(pluginFile);
- } catch (final InvalidDescriptionException e) {
- sender.sendMessage("§4异常: §c" + e.getMessage());
- sender.sendMessage("§4插件: §c" + name + " 的 plugin.yml 文件存在错误!");
- return false;
- } catch (final UnsupportedClassVersionError e) {
- sender.sendMessage("§4异常: §c" + e.getMessage());
- sender.sendMessage("§c服务器或JAVA的版本低于插件: " + name + " 所需要的版本!!");
- return false;
- } catch (final InvalidPluginException e) {
- sender.sendMessage("§4异常: §c" + e.getMessage());
- sender.sendMessage("§4文件: §c" + name + " 不是一个可载入的插件!");
- sender.sendMessage("§4注意: §cMOD服重载插件3次以上需重启服务器");
- return false;
- } catch (final UnknownDependencyException e) {
- sender.sendMessage("§4异常: §c服务器未安装必须依赖: " + e.getMessage());
- sender.sendMessage("§4插件: §c" + name + " 载入失败 缺少部分依赖项目!");
- return false;
- }
- if (target == null) {
- sender.sendMessage("§4异常: §c服务器类加载器载入插件失败!");
- return false;
- }
- target.onLoad();
- Bukkit.getPluginManager().enablePlugin(target);
- sender.sendMessage("§6载入: §a插件 §b" + target.getName() + " §a版本 §d" + target.getDescription().getVersion() + " §a已成功载入到服务器!");
- return true;
- }
+ /**
+ * 载入插件
+ *
+ * @param sender
+ * - 命令发送者
+ * @param pluginFile
+ * - 插件文件
+ * @return 是否成功
+ */
+ public boolean load(final CommandSender sender, final File pluginFile) {
+ Plugin target = null;
+ final String name = pluginFile.getName();
+ try {
+ target = Bukkit.getPluginManager().loadPlugin(pluginFile);
+ } catch (final InvalidDescriptionException e) {
+ sender.sendMessage("§4异常: §c" + e.getMessage());
+ sender.sendMessage("§4插件: §c" + name + " 的 plugin.yml 文件存在错误!");
+ return false;
+ } catch (final UnsupportedClassVersionError e) {
+ sender.sendMessage("§4异常: §c" + e.getMessage());
+ sender.sendMessage("§c服务器或JAVA的版本低于插件: " + name + " 所需要的版本!!");
+ return false;
+ } catch (final InvalidPluginException e) {
+ sender.sendMessage("§4异常: §c" + e.getMessage());
+ sender.sendMessage("§4文件: §c" + name + " 不是一个可载入的插件!");
+ sender.sendMessage("§4注意: §cMOD服重载插件3次以上需重启服务器");
+ return false;
+ } catch (final UnknownDependencyException e) {
+ sender.sendMessage("§4异常: §c服务器未安装必须依赖: " + e.getMessage());
+ sender.sendMessage("§4插件: §c" + name + " 载入失败 缺少部分依赖项目!");
+ return false;
+ }
+ if (target == null) {
+ sender.sendMessage("§4异常: §c服务器类加载器载入插件失败!");
+ return false;
+ }
+ target.onLoad();
+ Bukkit.getPluginManager().enablePlugin(target);
+ sender.sendMessage("§6载入: §a插件 §b" + target.getName() + " §a版本 §d" + target.getDescription().getVersion() + " §a已成功载入到服务器!");
+ return true;
+ }
- /**
- * 载入插件
- *
- * @param sender
- * - 命令发送者
- * @param name
- * - 插件名称
- * @return 是否成功
- */
- public boolean load(CommandSender sender, final String name) {
- String filename = null;
- if (sender == null) {
- sender = Bukkit.getConsoleSender();
- }
- if (!name.endsWith(".jar")) {
- filename = name + ".jar";
- }
- final File pluginDir = new File("plugins");
- final File updateDir = new File(pluginDir, "update");
- if (!pluginDir.isDirectory()) {
- sender.sendMessage("§6载入: §c插件目录不存在或IO错误!");
- return false;
- }
+ /**
+ * 载入插件
+ *
+ * @param sender
+ * - 命令发送者
+ * @param name
+ * - 插件名称
+ * @return 是否成功
+ */
+ public boolean load(CommandSender sender, final String name) {
+ String filename = null;
+ if (sender == null) {
+ sender = Bukkit.getConsoleSender();
+ }
+ if (!name.endsWith(".jar")) {
+ filename = name + ".jar";
+ }
+ final File pluginDir = new File("plugins");
+ final File updateDir = new File(pluginDir, "update");
+ if (!pluginDir.isDirectory()) {
+ sender.sendMessage("§6载入: §c插件目录不存在或IO错误!");
+ return false;
+ }
- File pluginFile = new File(pluginDir, filename);
+ File pluginFile = new File(pluginDir, filename);
- if (!pluginFile.isFile() && !new File(updateDir, filename).isFile()) {
- pluginFile = null;
- for (final File file : pluginDir.listFiles()) {
- if (file.getName().endsWith(".jar")) {
- try {
- final PluginDescriptionFile desc = main.getPluginLoader().getPluginDescription(file);
- if (desc.getName().equalsIgnoreCase(name)) {
- pluginFile = file;
- break;
- }
- } catch (final InvalidDescriptionException e) {
- }
- }
- }
- if (pluginFile == null) {
- sender.sendMessage("§6载入: §c在插件目录和更新目录均未找到 §b" + name + " §c插件 请确认文件是否存在!");
- return false;
- }
- }
- return load(sender, pluginFile);
- }
+ if (!pluginFile.isFile() && !new File(updateDir, filename).isFile()) {
+ pluginFile = null;
+ for (final File file : pluginDir.listFiles()) {
+ if (file.getName().endsWith(".jar")) {
+ try {
+ final PluginDescriptionFile desc = main.getPluginLoader().getPluginDescription(file);
+ if (desc.getName().equalsIgnoreCase(name)) {
+ pluginFile = file;
+ break;
+ }
+ } catch (final InvalidDescriptionException e) {
+ }
+ }
+ }
+ if (pluginFile == null) {
+ sender.sendMessage("§6载入: §c在插件目录和更新目录均未找到 §b" + name + " §c插件 请确认文件是否存在!");
+ return false;
+ }
+ }
+ return load(sender, pluginFile);
+ }
- /**
- * 载入插件
- *
- * @param pluginFile
- * - 插件名称
- * @return 是否成功
- */
- public boolean load(final File pluginFile) {
- return load(Bukkit.getConsoleSender(), pluginFile);
- }
+ /**
+ * 载入插件
+ *
+ * @param pluginFile
+ * - 插件名称
+ * @return 是否成功
+ */
+ public boolean load(final File pluginFile) {
+ return load(Bukkit.getConsoleSender(), pluginFile);
+ }
- /**
- * 载入插件
- *
- * @param name
- * - 插件名称
- * @return 是否成功
- */
- public boolean load(final String name) {
- return load(Bukkit.getConsoleSender(), name);
- }
+ /**
+ * 载入插件
+ *
+ * @param name
+ * - 插件名称
+ * @return 是否成功
+ */
+ public boolean load(final String name) {
+ return load(Bukkit.getConsoleSender(), name);
+ }
- /**
- * 删除重载插件
- *
- * @param sender
- * - 命令发送者
- * @param plugin
- * - 插件
- * @return 是否成功
- */
- public boolean reload(final CommandSender sender, final Plugin plugin) {
- if (plugin != null) {
- return unload(sender, plugin) && load(sender, plugin.getName());
- }
- return false;
- }
+ /**
+ * 删除重载插件
+ *
+ * @param sender
+ * - 命令发送者
+ * @param plugin
+ * - 插件
+ * @return 是否成功
+ */
+ public boolean reload(final CommandSender sender, final Plugin plugin) {
+ if (plugin != null) {
+ return unload(sender, plugin) && load(sender, plugin.getName());
+ }
+ return false;
+ }
- /**
- * 删除重载插件
- *
- * @param sender
- * - 命令发送者
- * @param main
- * - 插件
- * @return 是否成功
- */
- public boolean reload(final CommandSender sender, final String name) {
- if (name != null) {
- return unload(sender, name) && load(sender, name);
- }
- return false;
- }
+ /**
+ * 删除重载插件
+ *
+ * @param sender
+ * - 命令发送者
+ * @param main
+ * - 插件
+ * @return 是否成功
+ */
+ public boolean reload(final CommandSender sender, final String name) {
+ if (name != null) {
+ return unload(sender, name) && load(sender, name);
+ }
+ return false;
+ }
- /**
- * 重载插件
- *
- * @param plugin
- * - 插件
- * @return 是否成功
- */
- public boolean reload(final Plugin plugin) {
- return reload(Bukkit.getConsoleSender(), plugin);
- }
+ /**
+ * 重载插件
+ *
+ * @param plugin
+ * - 插件
+ * @return 是否成功
+ */
+ public boolean reload(final Plugin plugin) {
+ return reload(Bukkit.getConsoleSender(), plugin);
+ }
- /**
- * 重载所有插件
- */
- public void reloadAll() {
- for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
- if (!isIgnored(plugin)) {
- reload(plugin);
- }
- }
- }
+ /**
+ * 重载所有插件
+ */
+ public void reloadAll() {
+ for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
+ if (!isIgnored(plugin)) {
+ reload(plugin);
+ }
+ }
+ }
- /**
- * 重载所有插件
- */
- public void reloadAll(final CommandSender sender) {
- for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
- if (!isIgnored(plugin)) {
- reload(sender, plugin);
- }
- }
- }
+ /**
+ * 重载所有插件
+ */
+ public void reloadAll(final CommandSender sender) {
+ for (final Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
+ if (!isIgnored(plugin)) {
+ reload(sender, plugin);
+ }
+ }
+ }
- /**
- * 从忽略列表移除
- *
- * @param name
- * - 插件名称
- * @return 是否成功
- */
- public boolean removeIgnore(final String name) {
- return ignoreList.remove(name);
- }
+ /**
+ * 从忽略列表移除
+ *
+ * @param name
+ * - 插件名称
+ * @return 是否成功
+ */
+ public boolean removeIgnore(final String name) {
+ return ignoreList.remove(name);
+ }
- /**
- * 卸载插件
- *
- * @param sender
- * - 命令发送者
- * @param plugin
- * - 插件
- * @return 是否成功
- */
- public boolean unload(final CommandSender sender, final Plugin plugin) {
- return unload(sender, plugin.getName());
- }
+ /**
+ * 卸载插件
+ *
+ * @param sender
+ * - 命令发送者
+ * @param plugin
+ * - 插件
+ * @return 是否成功
+ */
+ public boolean unload(final CommandSender sender, final Plugin plugin) {
+ return unload(sender, plugin.getName());
+ }
- /**
- * 卸载插件
- *
- * @param sender
- * - 命令发送者
- * @param name
- * - 插件名称
- * @return 是否成功
- */
- @SuppressWarnings("unchecked")
- public boolean unload(CommandSender sender, final String name) {
- if (sender == null) {
- sender = Bukkit.getConsoleSender();
- }
- final PluginManager pluginManager = Bukkit.getPluginManager();
- SimpleCommandMap commandMap = null;
- List plugins = null;
- Map lookupNames = null;
- Map knownCommands = null;
- // ###移除类加载器后会导致插件无法载入###
- // Map fileAssociations = null;
- if (pluginManager == null) {
- sender.sendMessage("§4异常: §c插件管理类反射获取失败!");
- return false;
- }
- try {
- final Field pluginsField = pluginManager.getClass().getDeclaredField("plugins");
- pluginsField.setAccessible(true);
- plugins = (List) pluginsField.get(pluginManager);
+ /**
+ * 卸载插件
+ *
+ * @param sender
+ * - 命令发送者
+ * @param name
+ * - 插件名称
+ * @return 是否成功
+ */
+ @SuppressWarnings("unchecked")
+ public boolean unload(CommandSender sender, final String name) {
+ if (sender == null) {
+ sender = Bukkit.getConsoleSender();
+ }
+ final PluginManager pluginManager = Bukkit.getPluginManager();
+ SimpleCommandMap commandMap = null;
+ List plugins = null;
+ Map lookupNames = null;
+ Map knownCommands = null;
+ // ###移除类加载器后会导致插件无法载入###
+ // Map fileAssociations = null;
+ if (pluginManager == null) {
+ sender.sendMessage("§4异常: §c插件管理类反射获取失败!");
+ return false;
+ }
+ try {
+ final Field pluginsField = pluginManager.getClass().getDeclaredField("plugins");
+ pluginsField.setAccessible(true);
+ plugins = (List) pluginsField.get(pluginManager);
- final Field lookupNamesField = pluginManager.getClass().getDeclaredField("lookupNames");
- lookupNamesField.setAccessible(true);
- lookupNames = (Map) lookupNamesField.get(pluginManager);
+ final Field lookupNamesField = pluginManager.getClass().getDeclaredField("lookupNames");
+ lookupNamesField.setAccessible(true);
+ lookupNames = (Map) lookupNamesField.get(pluginManager);
- final Field commandMapField = pluginManager.getClass().getDeclaredField("commandMap");
- commandMapField.setAccessible(true);
- commandMap = (SimpleCommandMap) commandMapField.get(pluginManager);
+ final Field commandMapField = pluginManager.getClass().getDeclaredField("commandMap");
+ commandMapField.setAccessible(true);
+ commandMap = (SimpleCommandMap) commandMapField.get(pluginManager);
- final Field knownCommandsField = commandMap.getClass().getDeclaredField("knownCommands");
- knownCommandsField.setAccessible(true);
- knownCommands = (Map) knownCommandsField.get(commandMap);
+ final Field knownCommandsField = commandMap.getClass().getDeclaredField("knownCommands");
+ knownCommandsField.setAccessible(true);
+ knownCommands = (Map) knownCommandsField.get(commandMap);
- // ###移除类加载器后会导致插件无法载入###
- // final Field fileAssociationsField = pluginManager.getClass().getDeclaredField("fileAssociations");
- // fileAssociationsField.setAccessible(true);
- // fileAssociations = (Map) fileAssociationsField.get(pluginManager);
- } catch (final Exception e) {
- sender.sendMessage("§4异常: §c" + e.getMessage() + " 插件 §b" + name + " §c卸载失败!");
- return false;
- }
- String pluginVersion = "";
- for (final Plugin next : pluginManager.getPlugins()) {
- if (next.getName().equals(name)) {
- pluginManager.disablePlugin(next);
- if ((plugins != null) && (plugins.contains(next))) {
- pluginVersion = next.getDescription().getVersion();
- plugins.remove(next);
- sender.sendMessage("§6卸载: §a从服务器插件列表删除 §b" + name + " §a的实例!");
- }
+ // ###移除类加载器后会导致插件无法载入###
+ // final Field fileAssociationsField = pluginManager.getClass().getDeclaredField("fileAssociations");
+ // fileAssociationsField.setAccessible(true);
+ // fileAssociations = (Map) fileAssociationsField.get(pluginManager);
+ } catch (final Exception e) {
+ sender.sendMessage("§4异常: §c" + e.getMessage() + " 插件 §b" + name + " §c卸载失败!");
+ return false;
+ }
+ String pluginVersion = "";
+ for (final Plugin next : pluginManager.getPlugins()) {
+ if (next.getName().equals(name)) {
+ pluginManager.disablePlugin(next);
+ if ((plugins != null) && (plugins.contains(next))) {
+ pluginVersion = next.getDescription().getVersion();
+ plugins.remove(next);
+ sender.sendMessage("§6卸载: §a从服务器插件列表删除 §b" + name + " §a的实例!");
+ }
- if ((lookupNames != null) && (lookupNames.containsKey(name))) {
- lookupNames.remove(name);
- sender.sendMessage("§6卸载: §a从插件查找列表删除 §b" + name + " §a的实例!");
- }
+ if ((lookupNames != null) && (lookupNames.containsKey(name))) {
+ lookupNames.remove(name);
+ sender.sendMessage("§6卸载: §a从插件查找列表删除 §b" + name + " §a的实例!");
+ }
- if (commandMap != null) {
- for (final Iterator> it = knownCommands.entrySet().iterator(); it.hasNext();) {
- final Map.Entry entry = it.next();
- if ((entry.getValue() instanceof PluginCommand)) {
- final PluginCommand command = (PluginCommand) entry.getValue();
- if (command.getPlugin() == next) {
- command.unregister(commandMap);
- it.remove();
- }
- }
- }
- sender.sendMessage("§6卸载: §a注销插件 §b" + name + " §a的所有命令!");
- }
- final ClassLoader cl = next.getClass().getClassLoader();
- try {
- ((URLClassLoader) cl).close();
- } catch (final IOException ex) {
- }
- // ###移除类加载器后会导致插件无法载入###
- // if (fileAssociations != null) {
- // for (final Iterator> filter = fileAssociations.entrySet().iterator(); filter.hasNext();) {
- // final Entry entry = filter.next();
- // final Matcher match = entry.getKey().matcher(getPluginFile(next).getName());
- // if (match.find()) {
- // filter.remove();
- // sender.sendMessage("§6卸载: §a移除插件 §b" + name + " §a的类加载器!");
- // }
- // }
- // }
- System.gc();
- }
- }
- if (!pluginVersion.isEmpty()) {
- sender.sendMessage("§6卸载: §a插件 §b" + name + " §a版本 §d" + pluginVersion + " §a已成功卸载!");
- return true;
- }
- return false;
- }
+ if (commandMap != null) {
+ for (final Iterator> it = knownCommands.entrySet().iterator(); it.hasNext();) {
+ final Map.Entry entry = it.next();
+ if ((entry.getValue() instanceof PluginCommand)) {
+ final PluginCommand command = (PluginCommand) entry.getValue();
+ if (command.getPlugin() == next) {
+ command.unregister(commandMap);
+ it.remove();
+ }
+ }
+ }
+ sender.sendMessage("§6卸载: §a注销插件 §b" + name + " §a的所有命令!");
+ }
+ final ClassLoader cl = next.getClass().getClassLoader();
+ try {
+ ((URLClassLoader) cl).close();
+ } catch (final IOException ex) {
+ }
+ // ###移除类加载器后会导致插件无法载入###
+ // if (fileAssociations != null) {
+ // for (final Iterator> filter = fileAssociations.entrySet().iterator(); filter.hasNext();) {
+ // final Entry entry = filter.next();
+ // final Matcher match = entry.getKey().matcher(getPluginFile(next).getName());
+ // if (match.find()) {
+ // filter.remove();
+ // sender.sendMessage("§6卸载: §a移除插件 §b" + name + " §a的类加载器!");
+ // }
+ // }
+ // }
+ System.gc();
+ }
+ }
+ if (!pluginVersion.isEmpty()) {
+ sender.sendMessage("§6卸载: §a插件 §b" + name + " §a版本 §d" + pluginVersion + " §a已成功卸载!");
+ return true;
+ }
+ return false;
+ }
- /**
- * 卸载插件
- *
- * @param plugin
- * - 卸载插件
- * @return 是否成功
- */
- public boolean unload(final Plugin plugin) {
- return unload(Bukkit.getConsoleSender(), plugin);
- }
+ /**
+ * 卸载插件
+ *
+ * @param plugin
+ * - 卸载插件
+ * @return 是否成功
+ */
+ public boolean unload(final Plugin plugin) {
+ return unload(Bukkit.getConsoleSender(), plugin);
+ }
- /**
- * 重载update文件夹的插件
- *
- * @return 是否成功
- */
- public boolean upgrade(final CommandSender sender) {
- sender.sendMessage("§6升级: §a开始升级 服务器更新 目录下的所有插件!");
- return upgrade(sender, null, null);
- }
+ /**
+ * 重载update文件夹的插件
+ *
+ * @return 是否成功
+ */
+ public boolean upgrade(final CommandSender sender) {
+ sender.sendMessage("§6升级: §a开始升级 服务器更新 目录下的所有插件!");
+ return upgrade(sender, null, null);
+ }
- /**
- * 重载update文件夹的插件
- *
- * @param sender
- * - 命令发送者
- * @param directory
- * - 更新目录
- * @return 是否成功
- */
- public boolean upgrade(final CommandSender sender, final File directory, final Plugin plugin) {
- boolean result = false;
- final PluginLoader loader = main.getPluginLoader();
- File updateDirectory;
- if (directory == null || !directory.isDirectory()) {
- updateDirectory = Bukkit.getServer().getUpdateFolderFile();
- } else {
- updateDirectory = directory;
- }
- try {
- sender.sendMessage("§6升级: §b从 §d" + updateDirectory.getCanonicalPath() + " §b文件夹检索插件插件!");
- } catch (SecurityException | IOException e1) {
- sender.sendMessage("§4异常: §c文件夹 §d" + updateDirectory.getName() + " §c权限不足或IO错误!");
- return false;
- }
- for (final File file : updateDirectory.listFiles()) {
- PluginDescriptionFile description = null;
- try {
- description = loader.getPluginDescription(file);
- final String name = description.getName();
- if (plugin != null && !name.equals(plugin.getName())) {
- continue;
- }
- result = true;
- if (!unload(sender, name)) {
- sender.sendMessage("§6升级: §d开始安装 §b" + name + " §d插件!");
- FileUtil.copyFile(file, new File(Bukkit.getUpdateFolderFile().getParentFile(), File.separatorChar + file.getName()));
- } else {
- sender.sendMessage("§6升级: §a开始升级 §b" + name + " §a插件!");
- }
- load(sender, name);
- } catch (final InvalidDescriptionException e) {
- sender.sendMessage("§4异常: §c" + e.getMessage());
- sender.sendMessage("§4文件: §c" + file.getName() + " 的plugin.yml文件存在错误!");
- }
- if (file.exists()) {
- file.delete();
- }
- }
- sender.sendMessage("§6升级: §a所有插件升级完毕!");
- return result;
- }
+ /**
+ * 重载update文件夹的插件
+ *
+ * @param sender
+ * - 命令发送者
+ * @param directory
+ * - 更新目录
+ * @return 是否成功
+ */
+ public boolean upgrade(final CommandSender sender, final File directory, final Plugin plugin) {
+ boolean result = false;
+ final PluginLoader loader = main.getPluginLoader();
+ File updateDirectory;
+ if (directory == null || !directory.isDirectory()) {
+ updateDirectory = Bukkit.getServer().getUpdateFolderFile();
+ } else {
+ updateDirectory = directory;
+ }
+ try {
+ sender.sendMessage("§6升级: §b从 §d" + updateDirectory.getCanonicalPath() + " §b文件夹检索插件插件!");
+ } catch (SecurityException | IOException e1) {
+ sender.sendMessage("§4异常: §c文件夹 §d" + updateDirectory.getName() + " §c权限不足或IO错误!");
+ return false;
+ }
+ for (final File file : updateDirectory.listFiles()) {
+ PluginDescriptionFile description = null;
+ try {
+ description = loader.getPluginDescription(file);
+ final String name = description.getName();
+ if (plugin != null && !name.equals(plugin.getName())) {
+ continue;
+ }
+ result = true;
+ if (!unload(sender, name)) {
+ sender.sendMessage("§6升级: §d开始安装 §b" + name + " §d插件!");
+ FileUtil.copyFile(file, new File(Bukkit.getUpdateFolderFile().getParentFile(), File.separatorChar + file.getName()));
+ } else {
+ sender.sendMessage("§6升级: §a开始升级 §b" + name + " §a插件!");
+ }
+ load(sender, name);
+ } catch (final InvalidDescriptionException e) {
+ sender.sendMessage("§4异常: §c" + e.getMessage());
+ sender.sendMessage("§4文件: §c" + file.getName() + " 的plugin.yml文件存在错误!");
+ }
+ if (file.exists()) {
+ file.delete();
+ }
+ }
+ sender.sendMessage("§6升级: §a所有插件升级完毕!");
+ return result;
+ }
- /**
- * 重载update文件夹的插件
- *
- * @return 是否成功
- */
- public boolean upgrade(final CommandSender sender, final Plugin plugin) {
- return upgrade(sender, null, plugin);
- }
+ /**
+ * 重载update文件夹的插件
+ *
+ * @return 是否成功
+ */
+ public boolean upgrade(final CommandSender sender, final Plugin plugin) {
+ return upgrade(sender, null, plugin);
+ }
- /**
- * 重载update文件夹的插件
- *
- * @return 是否成功
- */
- public boolean upgrade(final File directory) {
- Bukkit.getConsoleSender().sendMessage("§6升级: §a开始升级 §d" + directory.getName() + " §a目录下的所有插件!");
- return upgrade(Bukkit.getConsoleSender(), directory, null);
- }
+ /**
+ * 重载update文件夹的插件
+ *
+ * @return 是否成功
+ */
+ public boolean upgrade(final File directory) {
+ Bukkit.getConsoleSender().sendMessage("§6升级: §a开始升级 §d" + directory.getName() + " §a目录下的所有插件!");
+ return upgrade(Bukkit.getConsoleSender(), directory, null);
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/manager/RepoCache.java b/src/main/java/cn/citycraft/Yum/manager/RepoCache.java
index 6e76b91..453b790 100644
--- a/src/main/java/cn/citycraft/Yum/manager/RepoCache.java
+++ b/src/main/java/cn/citycraft/Yum/manager/RepoCache.java
@@ -6,72 +6,77 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import cn.citycraft.PluginHelper.PluginHelperLogger;
import cn.citycraft.PluginHelper.jsonresult.JsonHandle;
import cn.citycraft.PluginHelper.utils.IOUtil;
import cn.citycraft.Yum.manager.RepoSerialization.Repositories;
public class RepoCache {
- Map plugins = new HashMap();
- Map repos = new HashMap();
+ PluginHelperLogger logger = PluginHelperLogger.getLogger();
+ Map plugins = new HashMap();
+ Map repos = new HashMap();
- public static RepoCache fromJson(final String json) {
- return JsonHandle.fromJson(json, RepoCache.class);
- }
+ public static RepoCache fromJson(final String json) {
+ return JsonHandle.fromJson(json, RepoCache.class);
+ }
- public void addPlugins(final String name, final PluginInfo info) {
- plugins.put(name, info);
- }
+ public void addPlugins(final String name, final PluginInfo info) {
+ plugins.put(name, info);
+ }
- public Repositories addRepo(final String repo) {
- if (repos.containsKey(repo) || repo.isEmpty()) {
- return null;
- }
- final Repositories reposes = getRepo(repo);
- if (reposes == null) {
- return null;
- }
- repos.put(repo, reposes);
- return reposes;
- }
+ public Repositories addRepo(final String repo) {
+ if (repos.containsKey(repo) || repo.isEmpty()) {
+ logger.debug("源地址为空或已存在 " + repo);
+ return null;
+ }
+ final Repositories reposes = getRepo(repo);
+ if (reposes == null) {
+ return null;
+ }
+ repos.put(repo, reposes);
+ return reposes;
+ }
- public List getAllRepoInfo() {
- final List repoinfo = new ArrayList();
- for (final Entry repo : repos.entrySet()) {
- repoinfo.add(String.format("§d仓库: §e%s §6- §3%s", repo.getValue().name, repo.getKey()));
- }
- return repoinfo;
- }
+ public List getAllRepoInfo() {
+ final List repoinfo = new ArrayList();
+ for (final Entry repo : repos.entrySet()) {
+ repoinfo.add(String.format("§d仓库: §e%s §6- §3%s", repo.getValue().name, repo.getKey()));
+ }
+ return repoinfo;
+ }
- public Map getPlugins() {
- return plugins;
- }
+ public Map getPlugins() {
+ return plugins;
+ }
- public Repositories getRepo(final String repo) {
- final String json = IOUtil.getData(repo);
- if (json == null || json.isEmpty()) {
- return null;
- }
- final Repositories reposes = JsonHandle.fromJson(json, Repositories.class);
- if (reposes == null || reposes.repos.isEmpty()) {
- return null;
- }
- return reposes;
- }
+ public Repositories getRepo(final String repo) {
+ final String json = IOUtil.getData(repo);
+ if (json == null || json.isEmpty()) {
+ logger.debug("源地址获取数据为空 " + repo);
+ return null;
+ }
+ final Repositories reposes = JsonHandle.fromJson(json, Repositories.class);
+ if (reposes == null || reposes.repos.isEmpty()) {
+ logger.debug("源地址解析Json为空 " + repo);
+ return null;
+ }
+ return reposes;
+ }
- public Map getRepos() {
- return repos;
- }
+ public Map getRepos() {
+ return repos;
+ }
- public boolean removeRepo(final String repo) {
- if (repo.isEmpty() || !repos.containsKey(repo)) {
- return false;
- }
- repos.remove(repo);
- return true;
- }
+ public boolean removeRepo(final String repo) {
+ if (repo.isEmpty() || !repos.containsKey(repo)) {
+ return false;
+ }
+ repos.remove(repo);
+ return true;
+ }
- @Override
- public String toString() {
- return JsonHandle.toJson(this);
- }
+ @Override
+ public String toString() {
+ return JsonHandle.toJson(this);
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/manager/RepoSerialization.java b/src/main/java/cn/citycraft/Yum/manager/RepoSerialization.java
index 65c1de9..7a6b794 100644
--- a/src/main/java/cn/citycraft/Yum/manager/RepoSerialization.java
+++ b/src/main/java/cn/citycraft/Yum/manager/RepoSerialization.java
@@ -9,51 +9,51 @@ import java.util.List;
/**
* 源仓库序列化类
*
- * @author 蒋天蓓
- * 2015年8月31日下午7:41:53
+ * @author 喵♂呜
+ * @since 2015年8月31日下午7:41:53
*/
public class RepoSerialization {
- public class PackageInfo {
- public String name;
- public List plugins = new ArrayList<>();
- public String pom;
- public String url;
- public URLType type;
- }
+ public class PackageInfo {
+ public String name;
+ public List plugins = new ArrayList<>();
+ public String pom;
+ public String url;
+ public URLType type;
+ }
- public class Plugin {
- public String artifactId;
- public String branch;
- public String description;
- public String groupId;
- public String name;
- public String url;
- public String pom;
- public List tags;
- public String version;
- public URLType type;
- }
+ public class Plugin {
+ public String artifactId;
+ public String branch;
+ public String description;
+ public String groupId;
+ public String name;
+ public String url;
+ public String pom;
+ public List tags;
+ public String version;
+ public URLType type;
+ }
- public class Repositories {
- public String name;
- public List repos;
- }
+ public class Repositories {
+ public String name;
+ public List repos;
+ }
- public class Repository {
- public String id;
- public URLType type;
- public String url;
- }
+ public class Repository {
+ public String id;
+ public URLType type;
+ public String url;
+ }
- public class TagInfo {
- public String tag;
- public String version;
- public URLType type;
- public String url;
- }
+ public class TagInfo {
+ public String tag;
+ public String version;
+ public URLType type;
+ public String url;
+ }
- public enum URLType {
- Maven,
- DirectUrl;
- }
+ public enum URLType {
+ Maven,
+ DirectUrl;
+ }
}
diff --git a/src/main/java/cn/citycraft/Yum/manager/RepositoryManager.java b/src/main/java/cn/citycraft/Yum/manager/RepositoryManager.java
index 15ddb65..54f10ec 100644
--- a/src/main/java/cn/citycraft/Yum/manager/RepositoryManager.java
+++ b/src/main/java/cn/citycraft/Yum/manager/RepositoryManager.java
@@ -11,9 +11,8 @@ import java.util.Map.Entry;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
-import org.bukkit.configuration.file.FileConfiguration;
-import cn.citycraft.PluginHelper.config.FileConfig;
+import cn.citycraft.PluginHelper.PluginHelperLogger;
import cn.citycraft.PluginHelper.jsonresult.JsonHandle;
import cn.citycraft.PluginHelper.utils.IOUtil;
import cn.citycraft.PluginHelper.utils.StringUtil;
@@ -27,218 +26,204 @@ import cn.citycraft.Yum.manager.RepoSerialization.URLType;
/**
* 仓库管理类
*
- * @author 蒋天蓓
+ * @author 喵♂呜
+ * @since 2016年1月9日 上午10:02:57
*/
public class RepositoryManager {
- org.bukkit.plugin.Plugin main;
- RepoCache repocache;
+ PluginHelperLogger logger = PluginHelperLogger.getLogger();
+ org.bukkit.plugin.Plugin main;
+ RepoCache repocache;
- public RepositoryManager(final org.bukkit.plugin.Plugin plugin) {
- this.main = plugin;
- repocache = new RepoCache();
- }
+ public RepositoryManager(final org.bukkit.plugin.Plugin plugin) {
+ this.main = plugin;
+ repocache = new RepoCache();
+ }
- public boolean addPackage(final CommandSender sender, final String urlstring) {
- final String json = IOUtil.getData(urlstring);
- if (json == null || json.isEmpty()) {
- return false;
- }
- final PackageInfo pkg = jsonToPackage(json);
- if (pkg == null) {
- return false;
- }
- updatePackage(sender, pkg);
- return true;
- }
+ public boolean addPackage(final CommandSender sender, final String urlstring) {
+ final String json = IOUtil.getData(urlstring);
+ if (json == null || json.isEmpty()) {
+ return false;
+ }
+ final PackageInfo pkg = jsonToPackage(json);
+ if (pkg == null) {
+ return false;
+ }
+ updatePackage(sender, pkg);
+ return true;
+ }
- public boolean addRepositories(final CommandSender sender, final String urlstring) {
- final String url = handerRepoUrl(urlstring);
- final Repositories repo = repocache.addRepo(url);
- if (repo == null) {
- return false;
- }
- return updateRepositories(sender, repo);
- }
+ public boolean addRepositories(final CommandSender sender, final String urlstring) {
+ final String url = handerRepoUrl(urlstring);
+ final Repositories repo = repocache.addRepo(url);
+ if (repo == null) {
+ return false;
+ }
+ return updateRepositories(sender, repo);
+ }
- public void cacheToJson(final FileConfig config) {
- config.set("reposcache", repocache.toString());
- config.save();
- }
+ public void clean() {
+ repocache.getPlugins().clear();
+ }
- public void clean() {
- repocache.getPlugins().clear();
- }
+ public boolean delRepositories(final CommandSender sender, final String urlstring) {
+ return repocache.removeRepo(handerRepoUrl(urlstring));
+ }
- public boolean delRepositories(final CommandSender sender, final String urlstring) {
- return repocache.removeRepo(handerRepoUrl(urlstring));
- }
+ public List getAllPlugin() {
+ final List li = new ArrayList();
+ for (final Entry plugin : repocache.getPlugins().entrySet()) {
+ li.add(plugin.getValue());
+ }
+ return li;
+ }
- public List getAllPlugin() {
- final List li = new ArrayList();
- for (final Entry plugin : repocache.getPlugins().entrySet()) {
- li.add(plugin.getValue());
- }
- return li;
- }
+ public List getAllPluginName() {
+ final List li = new ArrayList();
+ for (final Entry plugin : repocache.getPlugins().entrySet()) {
+ li.add(plugin.getValue().name);
+ }
+ return li;
+ }
- public List getAllPluginName() {
- final List li = new ArrayList();
- for (final Entry plugin : repocache.getPlugins().entrySet()) {
- li.add(plugin.getValue().name);
- }
- return li;
- }
+ public List getAllPluginsInfo() {
+ final List li = new ArrayList();
+ li.add("§d仓库名称 §a插件名称 §e插件描述");
+ for (final Entry pi : repocache.getPlugins().entrySet()) {
+ final Plugin plugin = pi.getValue().plugin;
+ li.add(String.format("§d%s §a%s §6- §e%s", pi.getValue().repo, pi.getValue().name, plugin.description));
+ if (plugin.tags != null) {
+ li.add(" §b┗Tags §c标签 §a版本 §e类型");
+ final List taglist = plugin.tags;
+ for (int i = 0; i < taglist.size(); i++) {
+ final TagInfo tag = taglist.get(i);
+ li.add(" §b" + (i == taglist.size() - 1 ? "┗ " : "┣ ") + String.format("§c%s §a%s §e%s", tag.tag, tag.version, tag.type != null ? tag.type : URLType.Maven));
+ }
+ }
+ }
+ return li;
+ }
- public List getAllPluginsInfo() {
- final List li = new ArrayList();
- li.add("§d仓库名称 §a插件名称 §e插件描述");
- for (final Entry pi : repocache.getPlugins().entrySet()) {
- final Plugin plugin = pi.getValue().plugin;
- li.add(String.format("§d%s §a%s §6- §e%s", pi.getValue().repo, pi.getValue().name, plugin.description));
- if (plugin.tags != null) {
- li.add(" §b┗Tags §c标签 §a版本 §e类型");
- final List taglist = plugin.tags;
- for (int i = 0; i < taglist.size(); i++) {
- final TagInfo tag = taglist.get(i);
- li.add(" §b" + (i == taglist.size() - 1 ? "┗ " : "┣ ") + String.format("§c%s §a%s §e%s", tag.tag, tag.version, tag.type != null ? tag.type : URLType.Maven));
- }
- }
- }
- return li;
- }
+ public PluginInfo getPlugin(final String name) {
+ for (final Entry plugin : repocache.getPlugins().entrySet()) {
+ if (plugin.getValue().name.equalsIgnoreCase(name)) {
+ return plugin.getValue();
+ }
+ }
+ return null;
+ }
- public PluginInfo getPlugin(final String name) {
- for (final Entry plugin : repocache.getPlugins().entrySet()) {
- if (plugin.getValue().name.equalsIgnoreCase(name)) {
- return plugin.getValue();
- }
- }
- return null;
- }
+ public List getPluginInfo(final String name) {
+ final List li = new ArrayList();
+ for (final Entry plugin : repocache.getPlugins().entrySet()) {
+ if (plugin.getValue().name.equalsIgnoreCase(name)) {
+ li.add(plugin.getValue());
+ }
+ }
+ return li;
+ }
- public List getPluginInfo(final String name) {
- final List li = new ArrayList();
- for (final Entry plugin : repocache.getPlugins().entrySet()) {
- if (plugin.getValue().name.equalsIgnoreCase(name)) {
- li.add(plugin.getValue());
- }
- }
- return li;
- }
+ public PluginInfo getPluginInfo(final String groupId, final String artifactId) {
+ return repocache.getPlugins().get(groupId + "." + artifactId);
+ }
- public PluginInfo getPluginInfo(final String groupId, final String artifactId) {
- return repocache.getPlugins().get(groupId + "." + artifactId);
- }
+ public Map getPlugins() {
+ return repocache.getPlugins();
+ }
- public Map getPlugins() {
- return repocache.getPlugins();
- }
+ public RepoCache getRepoCache() {
+ return repocache;
+ }
- public RepoCache getRepoCache() {
- return repocache;
- }
+ public Repositories getRepoCache(final String urlstring) {
+ return repocache.repos.get(handerRepoUrl(urlstring));
+ }
- public Repositories getRepoCache(final String urlstring) {
- return repocache.repos.get(handerRepoUrl(urlstring));
- }
+ public Map getRepos() {
+ return repocache.getRepos();
+ }
- public Map getRepos() {
- return repocache.getRepos();
- }
+ public boolean getRepositories(final CommandSender sender, final String urlstring) {
+ final int urllength = urlstring.length();
+ final String url = urlstring.substring(0, urlstring.endsWith("/") ? urllength - 1 : urllength);
+ handerRepoUrl(url);
+ final Repositories repo = repocache.addRepo(urlstring);
+ if (repo == null) {
+ return false;
+ }
+ return updateRepositories(sender, repo);
+ }
- public boolean getRepositories(final CommandSender sender, final String urlstring) {
- final int urllength = urlstring.length();
- final String url = urlstring.substring(0, urlstring.endsWith("/") ? urllength - 1 : urllength);
- handerRepoUrl(url);
- final Repositories repo = repocache.addRepo(urlstring);
- if (repo == null) {
- return false;
- }
- return updateRepositories(sender, repo);
- }
+ public PackageInfo jsonToPackage(final String json) {
+ try {
+ return JsonHandle.fromJson(json, PackageInfo.class);
+ } catch (final Exception e) {
+ return null;
+ }
+ }
- public boolean jsonToCache(final FileConfiguration config) {
- try {
- final String reposcache = config.getString("reposcache");
- if (reposcache != null && !reposcache.isEmpty()) {
- repocache = RepoCache.fromJson(reposcache);
- return true;
- }
- } catch (final Exception e) {
- }
- return false;
- }
+ public Repositories jsonToRepositories(final String json) {
+ return JsonHandle.fromJson(json, Repositories.class);
+ }
- public PackageInfo jsonToPackage(final String json) {
- try {
- return JsonHandle.fromJson(json, PackageInfo.class);
- } catch (final Exception e) {
- return null;
- }
- }
+ public void updatePackage(final CommandSender sender, final PackageInfo pkg) {
+ for (final Plugin plugin : pkg.plugins) {
+ final PluginInfo pi = new PluginInfo();
+ pi.name = StringUtil.getNotNull(plugin.name, plugin.artifactId);
+ pi.branch = StringUtil.getNotNull(plugin.branch, "master");
+ pi.pom = StringUtil.getNotNull(plugin.pom, pkg.pom);
+ pi.url = StringUtil.getNotNull(plugin.url, pkg.url);
+ pi.type = plugin.type != null ? plugin.type : pkg.type;
+ pi.type = pi.type != null ? pi.type : URLType.Maven;
+ pi.plugin = plugin;
+ pi.repo = pkg.name;
+ repocache.getPlugins().put(plugin.groupId + "." + plugin.artifactId, pi);
+ }
+ sender.sendMessage("§6仓库: §e" + pkg.name + " §a更新成功!");
+ }
- public Repositories jsonToRepositories(final String json) {
- return JsonHandle.fromJson(json, Repositories.class);
- }
+ public boolean updateRepositories(final CommandSender sender) {
+ repocache.getPlugins().clear();
+ if (repocache.getRepos().isEmpty()) {
+ repocache.addRepo("https://coding.net/u/502647092/p/YumData/git/raw/master/yumcenter/repo.info");
+ }
+ final Iterator> keys = repocache.getRepos().entrySet().iterator();
+ while (keys.hasNext()) {
+ final Entry string = keys.next();
+ final Repositories repo = repocache.getRepo(string.getKey());
+ if (updateRepositories(sender, repo)) {
+ sender.sendMessage("§6源: §e" + repo.name + " §a更新成功!");
+ } else {
+ sender.sendMessage("§6源: §e" + string.getKey() + " §c未找到任何仓库信息 已删除!");
+ keys.remove();
+ }
+ }
+ return true;
+ }
- public void updatePackage(final CommandSender sender, final PackageInfo pkg) {
- for (final Plugin plugin : pkg.plugins) {
- final PluginInfo pi = new PluginInfo();
- pi.name = StringUtil.getNotNull(plugin.name, plugin.artifactId);
- pi.branch = StringUtil.getNotNull(plugin.branch, "master");
- pi.pom = StringUtil.getNotNull(plugin.pom, pkg.pom);
- pi.url = StringUtil.getNotNull(plugin.url, pkg.url);
- pi.type = plugin.type != null ? plugin.type : pkg.type;
- pi.type = pi.type != null ? pi.type : URLType.Maven;
- pi.plugin = plugin;
- pi.repo = pkg.name;
- repocache.getPlugins().put(plugin.groupId + "." + plugin.artifactId, pi);
- }
- sender.sendMessage("§6仓库: §e" + pkg.name + " §a更新成功!");
- }
+ public boolean updateRepositories(CommandSender sender, final Repositories repocenter) {
+ if (sender == null) {
+ sender = Bukkit.getConsoleSender();
+ }
+ if (repocenter == null || repocenter.repos.isEmpty()) {
+ logger.debug("源地址为Null或源列表为空!");
+ return false;
+ }
+ for (final Repository repo : repocenter.repos) {
+ addPackage(sender, repo.url);
+ }
+ return true;
+ }
- public boolean updateRepositories(final CommandSender sender) {
- repocache.getPlugins().clear();
- if (repocache.getRepos().isEmpty()) {
- repocache.addRepo("https://coding.net/u/502647092/p/YumData/git/raw/master/yumcenter/repo.info");
- }
- final Iterator> keys = repocache.getRepos().entrySet().iterator();
- while (keys.hasNext()) {
- final Entry string = keys.next();
- final Repositories repo = repocache.getRepo(string.getKey());
- if (updateRepositories(sender, repo)) {
- sender.sendMessage("§6源: §e" + repo.name + " §a更新成功!");
- } else {
- sender.sendMessage("§6源: §e" + string.getKey() + " §c未找到任何仓库信息 已删除!");
- keys.remove();
- }
- }
- return true;
- }
-
- public boolean updateRepositories(CommandSender sender, final Repositories repocenter) {
- if (sender == null) {
- sender = Bukkit.getConsoleSender();
- }
- if (repocenter == null || repocenter.repos.isEmpty()) {
- return false;
- }
- for (final Repository repo : repocenter.repos) {
- addPackage(sender, repo.url);
- }
- return true;
- }
-
- private String handerRepoUrl(String url) {
- final int urllength = url.length();
- url = url.substring(0, url.endsWith("/") ? urllength - 1 : urllength);
- if (!url.startsWith("http://")) {
- url = "http://" + url;
- }
- if (!url.endsWith("repo.info")) {
- url = url + "/repo.info";
- }
- return url;
- }
+ private String handerRepoUrl(String url) {
+ final int urllength = url.length();
+ url = url.substring(0, url.endsWith("/") ? urllength - 1 : urllength);
+ if (!url.startsWith("http://")) {
+ url = "http://" + url;
+ }
+ if (!url.endsWith("repo.info")) {
+ url = url + "/repo.info";
+ }
+ return url;
+ }
}