diff --git a/pom.xml b/pom.xml
index a0fb493..e3a1b87 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
pw.yumc
Yum
- 2.7.7
+ 2.7.8
Yum
Minecraft 服务器插件管理系统
@@ -65,14 +65,10 @@
§6- §c修复§eBukkitDev§c下载地址跳转问题...;
§6- §c修复§eBukkitDev§c下载为空时的异常...;
- DEBUG
+ DEV
UTF-8
-
- spigot-repo
- https://hub.spigotmc.org/nexus/content/groups/public/
-
yumc-repo
http://repo.yumc.pw/content/groups/public/
@@ -86,17 +82,11 @@
-
- org.spigotmc
- spigot-api
- jar
- 1.10.2-R0.1-SNAPSHOT
-
pw.yumc
YumCore
jar
- 1.1
+ 1.5
pw.yumc
diff --git a/src/main/java/pw/yumc/Yum/Yum.java b/src/main/java/pw/yumc/Yum/Yum.java
index d878f11..ba68f63 100644
--- a/src/main/java/pw/yumc/Yum/Yum.java
+++ b/src/main/java/pw/yumc/Yum/Yum.java
@@ -64,7 +64,6 @@ public class Yum extends JavaPlugin {
new Statistics();
new SubscribeTask();
YumAPI.updateRepo(Bukkit.getConsoleSender());
- YumAPI.updateCheck(Bukkit.getConsoleSender());
}
@Override
diff --git a/src/main/java/pw/yumc/Yum/api/YumAPI.java b/src/main/java/pw/yumc/Yum/api/YumAPI.java
index c0969ff..8375be4 100644
--- a/src/main/java/pw/yumc/Yum/api/YumAPI.java
+++ b/src/main/java/pw/yumc/Yum/api/YumAPI.java
@@ -2,8 +2,6 @@ package pw.yumc.Yum.api;
import java.io.File;
import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
@@ -35,9 +33,6 @@ public class YumAPI {
/**
* 初始化Yum管理中心
- *
- * @param plugin
- * 插件实体
*/
public YumAPI() {
YumAPI.main = P.instance;
@@ -84,19 +79,6 @@ public class YumAPI {
return repo;
}
- public static List getUpdateList(CommandSender sender) {
- List ulist = new ArrayList<>();
- // try {
- // for (Entry updateplugin : UpdatePlugin.getUpdateList().entrySet()) {
- // ulist.add(updateplugin.getValue());
- // }
- // } catch (Exception | Error e) {
- // sender.sendMessage("§4错误: §c无法检索全体更新列表!");
- // sender.sendMessage("§4异常: §c" + e.getMessage());
- // }
- return ulist;
- }
-
/**
* 注入性能监控器
*
@@ -118,14 +100,11 @@ public class YumAPI {
* 命令发送者
* @param pluginname
* 插件名称
- * @param version
- * 插件版本
* @return 是否安装成功
*/
public static boolean install(CommandSender sender, String pluginname, String url) {
File pluginFile = new File(Bukkit.getUpdateFolderFile().getParentFile(), pluginname + ".jar");
- if (download.run(sender, url, pluginFile)) { return plugman.load(sender, pluginFile); }
- return false;
+ return download.run(sender, url, pluginFile) && plugman.load(sender, pluginFile);
}
/**
@@ -133,8 +112,6 @@ public class YumAPI {
*
* @param pluginname
* 插件名称
- * @param version
- * 插件版本
* @return 是否安装成功
*/
public static boolean install(String pluginname, String url) {
@@ -174,9 +151,6 @@ public class YumAPI {
/**
* 载入插件
- *
- * @param pluginname
- * 插件名称
*/
public static void load(File pluginFile) {
plugman.load(pluginFile);
@@ -204,9 +178,6 @@ public class YumAPI {
/**
* 取消注入
- *
- * @param plugin
- * 插件
*/
public static void uninject() {
for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
@@ -271,64 +242,6 @@ public class YumAPI {
return update(null, plugin, url);
}
- /**
- * 更新支持Yum的插件
- *
- * @param sender
- * 命令发送者
- */
- public static void updateAll(final CommandSender sender) {
- main.getServer().getScheduler().runTaskAsynchronously(main, new Runnable() {
- @Override
- public void run() {
- if (runlock) {
- sender.sendMessage("§d一键更新: §c一键更新运行中 请稍候重试...");
- return;
- }
- runlock = true;
- int failed = 0;
- List ulist = getUpdateList(sender);
- if (ulist.size() > 0) {
- sender.sendMessage("§d开始更新服务器可更新插件");
- for (Plugin updateplugin : ulist) {
- sender.sendMessage("§d一键更新: §a开始更新" + updateplugin.getName() + "!");
- if (!updateFromYum(sender, updateplugin, null, true)) {
- failed++;
- }
- }
- if (failed != 0) {
- sender.sendMessage("§d一键更新: §c升级过程中 §4" + failed + " §c个插件更新失败!");
- }
- sender.sendMessage("§d一键更新: §e已下载所有需要升级的插件到 服务器更新 文件夹");
- sender.sendMessage("§d一键更新: §e插件将在重启后自动更新(或使用§b/yum upgrade§e直接升级)!");
- updateCheck(sender);
- } else {
- sender.sendMessage("§6更新: §e未找到需要更新且可以用Yum处理的插件!");
- }
- runlock = false;
- }
- });
- }
-
- /**
- * 检查是否有可更新插件
- *
- * @param sender
- * 命令发送者
- */
- public static void updateCheck(final CommandSender sender) {
- PKit.runTaskLaterAsync(new Runnable() {
- @Override
- public void run() {
- List ulist = getUpdateList(sender);
- if (ulist.size() > 0) {
- sender.sendMessage(
- "§6[§bYum§6]§e自动更新: §a发现 §e" + ulist.size() + " §a个可更新插件 请使用 §b/yum ua §a更新所有插件!");
- }
- }
- }, 60);
- }
-
/**
* 更新插件
*
diff --git a/src/main/java/pw/yumc/Yum/commands/FileCommand.java b/src/main/java/pw/yumc/Yum/commands/FileCommand.java
index bd56b5f..3746858 100644
--- a/src/main/java/pw/yumc/Yum/commands/FileCommand.java
+++ b/src/main/java/pw/yumc/Yum/commands/FileCommand.java
@@ -3,7 +3,6 @@ package pw.yumc.Yum.commands;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.file.Files;
@@ -14,12 +13,12 @@ import org.bukkit.command.CommandSender;
import pw.yumc.Yum.Yum;
import pw.yumc.Yum.api.YumAPI;
-import pw.yumc.YumCore.commands.CommandManager;
+import pw.yumc.YumCore.commands.CommandSub;
import pw.yumc.YumCore.commands.annotation.Async;
import pw.yumc.YumCore.commands.annotation.Cmd;
import pw.yumc.YumCore.commands.annotation.Help;
-import pw.yumc.YumCore.commands.annotation.KeyValue;
-import pw.yumc.YumCore.commands.interfaces.CommandExecutor;
+import pw.yumc.YumCore.commands.annotation.Option;
+import pw.yumc.YumCore.commands.interfaces.Executor;
import pw.yumc.YumCore.kit.FileKit;
/**
@@ -28,7 +27,7 @@ import pw.yumc.YumCore.kit.FileKit;
* @since 2016年1月9日 上午10:02:39
* @author 喵♂呜
*/
-public class FileCommand implements CommandExecutor {
+public class FileCommand implements Executor {
private static String prefix = "§6[§bYum §a文件管理§6] ";
private static String file_not_found = prefix + "§b%s §c文件未找到!";
@@ -50,13 +49,13 @@ public class FileCommand implements CommandExecutor {
public FileCommand(Yum yum) {
plugin = yum;
- new CommandManager("file", this, PluginTabComplete.instence);
+ new CommandSub("file", this, PluginTabComplete.instence);
}
@Cmd(aliases = "cp", minimumArguments = 2)
@Help(value = "复制文件", possibleArguments = "<源文件> <目标目录>")
@Async
- public void copy(CommandSender sender, @KeyValue(key = "check") File src, File des) throws FileNotFoundException, IOException {
+ public void copy(CommandSender sender, @Option(value = "check") File src, File des) throws IOException {
if (src.isDirectory()) {
sender.sendMessage(String.format(file_is_dir, src.getPath()));
return;
diff --git a/src/main/java/pw/yumc/Yum/commands/MonitorCommand.java b/src/main/java/pw/yumc/Yum/commands/MonitorCommand.java
index 03bdd29..a9b1485 100644
--- a/src/main/java/pw/yumc/Yum/commands/MonitorCommand.java
+++ b/src/main/java/pw/yumc/Yum/commands/MonitorCommand.java
@@ -27,11 +27,11 @@ import pw.yumc.Yum.inject.ListenerInjector;
import pw.yumc.Yum.inject.TaskInjector;
import pw.yumc.Yum.managers.MonitorManager;
import pw.yumc.Yum.managers.MonitorManager.MonitorInfo;
-import pw.yumc.YumCore.commands.CommandManager;
+import pw.yumc.YumCore.commands.CommandSub;
import pw.yumc.YumCore.commands.annotation.Async;
import pw.yumc.YumCore.commands.annotation.Cmd;
import pw.yumc.YumCore.commands.annotation.Help;
-import pw.yumc.YumCore.commands.interfaces.CommandExecutor;
+import pw.yumc.YumCore.commands.interfaces.Executor;
import pw.yumc.YumCore.kit.PKit;
import pw.yumc.YumCore.kit.StrKit;
import pw.yumc.YumCore.reflect.Reflect;
@@ -41,7 +41,7 @@ import pw.yumc.YumCore.reflect.Reflect;
* @since 2016年7月6日 下午5:13:32
* @author 喵♂呜
*/
-public class MonitorCommand implements CommandExecutor {
+public class MonitorCommand implements Executor {
public static Throwable lastError = null;
private String prefix = "§6[§bYum §a能耗监控§6] ";
@@ -70,7 +70,7 @@ public class MonitorCommand implements CommandExecutor {
private double um = 1000000.00;
public MonitorCommand(Yum yum) {
- new CommandManager("monitor", this, PluginTabComplete.instence);
+ new CommandSub("monitor", this, PluginTabComplete.instence);
}
@Cmd(aliases = "c", minimumArguments = 1)
@@ -105,17 +105,9 @@ public class MonitorCommand implements CommandExecutor {
CommandInjector injected = (CommandInjector) executor;
if (injected.count != 0) {
double avgTime = injected.totalTime / um / injected.count;
- sender.sendMessage(String.format(avgTime < 10 ? milist : miwlist,
- command.getValue().getName(),
- injected.totalTime / um,
- injected.count,
- avgTime));
+ sender.sendMessage(String.format(avgTime < 10 ? milist : miwlist, command.getValue().getName(), injected.totalTime / um, injected.count, avgTime));
} else {
- sender.sendMessage(String.format(milist,
- command.getValue().getName(),
- injected.totalTime / um,
- injected.count,
- 0D));
+ sender.sendMessage(String.format(milist, command.getValue().getName(), injected.totalTime / um, injected.count, 0D));
}
}
}
@@ -167,11 +159,7 @@ public class MonitorCommand implements CommandExecutor {
sender.sendMessage(mieprefix);
for (String event : MonitorManager.sortMapByValue(eventTotalTime).keySet()) {
double avgTime = eventTotalTime.get(event) / um / eventCount.get(event);
- sender.sendMessage(String.format(avgTime < 10 ? milist : miwlist,
- event,
- eventTotalTime.get(event) / um,
- eventCount.get(event),
- avgTime));
+ sender.sendMessage(String.format(avgTime < 10 ? milist : miwlist, event, eventTotalTime.get(event) / um, eventCount.get(event), avgTime));
}
}
@@ -204,13 +192,7 @@ public class MonitorCommand implements CommandExecutor {
break;
}
MonitorInfo mi = MonitorManager.getMonitorInfo(entry.getKey());
- sender.sendMessage(String.format(laglist,
- size,
- entry.getKey(),
- getPer(sender, mi.monitor),
- mi.cmd,
- mi.event,
- mi.task));
+ sender.sendMessage(String.format(laglist, size, entry.getKey(), getPer(sender, mi.monitor), mi.cmd, mi.event, mi.task));
}
}
@@ -269,17 +251,9 @@ public class MonitorCommand implements CommandExecutor {
TaskInjector executor = (TaskInjector) task;
if (executor.count != 0) {
double avgTime = executor.totalTime / um / executor.count;
- sender.sendMessage(String.format(avgTime < 10 ? milist : miwlist,
- getClassName(executor.getOriginalTask().getClass()),
- executor.totalTime / um,
- executor.count,
- avgTime));
+ sender.sendMessage(String.format(avgTime < 10 ? milist : miwlist, getClassName(executor.getOriginalTask().getClass()), executor.totalTime / um, executor.count, avgTime));
} else {
- sender.sendMessage(String.format(milist,
- getClassName(executor.getOriginalTask().getClass()),
- executor.totalTime / um,
- executor.count,
- 0D));
+ sender.sendMessage(String.format(milist, getClassName(executor.getOriginalTask().getClass()), executor.totalTime / um, executor.count, 0D));
}
}
}
@@ -301,8 +275,7 @@ public class MonitorCommand implements CommandExecutor {
}
private String getClassName(Class> clazz) {
- return StrKit.isBlank(clazz.getSimpleName()) ? clazz.getName().substring(clazz.getName().lastIndexOf(".") + 1)
- : clazz.getSimpleName();
+ return StrKit.isBlank(clazz.getSimpleName()) ? clazz.getName().substring(clazz.getName().lastIndexOf(".") + 1) : clazz.getSimpleName();
}
private String getPer(CommandSender sender, double per) {
diff --git a/src/main/java/pw/yumc/Yum/commands/NetCommand.java b/src/main/java/pw/yumc/Yum/commands/NetCommand.java
index 3114637..713e42b 100644
--- a/src/main/java/pw/yumc/Yum/commands/NetCommand.java
+++ b/src/main/java/pw/yumc/Yum/commands/NetCommand.java
@@ -8,13 +8,13 @@ import org.bukkit.command.CommandSender;
import pw.yumc.Yum.Yum;
import pw.yumc.Yum.managers.ConfigManager;
-import pw.yumc.YumCore.commands.CommandManager;
+import pw.yumc.YumCore.commands.CommandSub;
import pw.yumc.YumCore.commands.annotation.Async;
import pw.yumc.YumCore.commands.annotation.Cmd;
import pw.yumc.YumCore.commands.annotation.Help;
-import pw.yumc.YumCore.commands.interfaces.CommandExecutor;
+import pw.yumc.YumCore.commands.interfaces.Executor;
-public class NetCommand implements CommandExecutor {
+public class NetCommand implements Executor {
public static HashMap netlist = new HashMap<>();
private String prefix = "§6[§bYum §a网络管理§6] ";
@@ -28,7 +28,7 @@ public class NetCommand implements CommandExecutor {
private String p_n_f = prefix + "§c插件 §b%s §c不存在!";
public NetCommand(Yum yum) {
- new CommandManager("net", this, PluginTabComplete.instence);
+ new CommandSub("net", this, PluginTabComplete.instence);
}
public static void addNetCount(String pname) {
diff --git a/src/main/java/pw/yumc/Yum/commands/PluginTabComplete.java b/src/main/java/pw/yumc/Yum/commands/PluginTabComplete.java
index a05cd93..e490462 100644
--- a/src/main/java/pw/yumc/Yum/commands/PluginTabComplete.java
+++ b/src/main/java/pw/yumc/Yum/commands/PluginTabComplete.java
@@ -4,10 +4,11 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import org.bukkit.command.CommandSender;
+
import pw.yumc.Yum.api.YumAPI;
-import pw.yumc.YumCore.commands.CommandArgument;
import pw.yumc.YumCore.commands.annotation.Tab;
-import pw.yumc.YumCore.commands.interfaces.CommandExecutor;
+import pw.yumc.YumCore.commands.interfaces.Executor;
import pw.yumc.YumCore.kit.StrKit;
/**
@@ -15,29 +16,20 @@ import pw.yumc.YumCore.kit.StrKit;
* @since 2016年7月7日 上午8:36:47
* @author 喵♂呜
*/
-public class PluginTabComplete implements CommandExecutor {
+public class PluginTabComplete implements Executor {
public static PluginTabComplete instence = new PluginTabComplete();
@Tab
- public List listtab(CommandArgument e) {
- String[] args = e.getArgs();
+ public List listtab(CommandSender sender, String label, String[] args) {
if (args[0].equalsIgnoreCase("install") || args[0].equalsIgnoreCase("i")) {
return StrKit.copyPartialMatches(args[1], YumAPI.getRepo().getAllPluginName(), new ArrayList());
} else if (args[0].equalsIgnoreCase("repo") || args[0].equalsIgnoreCase("r")) {
- if (args.length == 2) { return StrKit.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 StrKit.copyPartialMatches(args[2],
- YumAPI.getRepo().getRepos().keySet(),
- new ArrayList()); }
+ if (args.length == 2) { return StrKit.copyPartialMatches(args[1], Arrays.asList("add", "all", "list", "delall", "clean", "update", "del"), new ArrayList()); }
+ if (args.length == 3 && ("add".equals(args[1]) || "del".equals(args[1]))) { return StrKit.copyPartialMatches(args[2], YumAPI.getRepo().getRepos().keySet(), new ArrayList()); }
} else if (args[0].equalsIgnoreCase("bukkitrepo") || args[0].equalsIgnoreCase("br")) {
- return StrKit.copyPartialMatches(args[1],
- Arrays.asList(new String[] { "look", "install" }),
- new ArrayList());
+ return StrKit.copyPartialMatches(args[1], Arrays.asList("look", "install"), new ArrayList());
} else {
- return StrKit.copyPartialMatches(args[1],
- YumAPI.getPlugman().getPluginNames(false),
- new ArrayList());
+ return StrKit.copyPartialMatches(args[args.length - 1], YumAPI.getPlugman().getPluginNames(false), new ArrayList());
}
return null;
}
diff --git a/src/main/java/pw/yumc/Yum/commands/YumCommand.java b/src/main/java/pw/yumc/Yum/commands/YumCommand.java
index cc669ba..497e4e8 100644
--- a/src/main/java/pw/yumc/Yum/commands/YumCommand.java
+++ b/src/main/java/pw/yumc/Yum/commands/YumCommand.java
@@ -11,9 +11,6 @@ import java.util.Map.Entry;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.Listener;
-import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.permissions.Permission;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginDescriptionFile;
@@ -27,15 +24,14 @@ import pw.yumc.Yum.models.BukkitDev.Files;
import pw.yumc.Yum.models.BukkitDev.Projects;
import pw.yumc.Yum.models.RepoSerialization.Repositories;
import pw.yumc.YumCore.callback.CallBack.One;
-import pw.yumc.YumCore.commands.CommandManager;
+import pw.yumc.YumCore.commands.CommandSub;
import pw.yumc.YumCore.commands.annotation.Async;
import pw.yumc.YumCore.commands.annotation.Cmd;
import pw.yumc.YumCore.commands.annotation.Help;
import pw.yumc.YumCore.commands.annotation.Sort;
-import pw.yumc.YumCore.commands.interfaces.CommandExecutor;
+import pw.yumc.YumCore.commands.interfaces.Executor;
import pw.yumc.YumCore.kit.FileKit;
import pw.yumc.YumCore.kit.HttpKit;
-import pw.yumc.YumCore.kit.PKit;
import pw.yumc.YumCore.kit.ZipKit;
import pw.yumc.YumCore.tellraw.Tellraw;
@@ -45,7 +41,7 @@ import pw.yumc.YumCore.tellraw.Tellraw;
* @since 2016年1月9日 上午10:02:24
* @author 喵♂呜
*/
-public class YumCommand implements Listener, CommandExecutor {
+public class YumCommand implements Executor {
private String prefix = "§6[§bYum §a插件管理§6] ";
private String searchlimit = prefix + "§c为保证搜索速度和准确性 关键词必须大于 3 个字符!";
@@ -77,87 +73,82 @@ public class YumCommand implements Listener, CommandExecutor {
public YumCommand(Yum yum) {
main = yum;
- Bukkit.getPluginManager().registerEvents(this, yum);
- new CommandManager("yum", this, PluginTabComplete.instence);
+ new CommandSub("yum", this, PluginTabComplete.instence);
}
+ @Async
@Cmd(aliases = "br", minimumArguments = 2)
@Help(value = "从BukkitDev查看安装插件", possibleArguments = "<操作符> <项目ID|项目名称> [地址]")
- public void bukkitrepo(final CommandSender sender, final String opt, final String id, final String url) {
- PKit.runTaskAsync(new Runnable() {
- @Override
- public void run() {
- switch (opt) {
- case "look": {
- sender.sendMessage(String.format(fsearching, id));
- List lf = Files.parseList(HttpKit.get(String.format(BukkitDev.PLUGIN, id)));
- if (lf.isEmpty()) {
- sender.sendMessage(String.format(not_found_id_from_bukkit, id));
- return;
- }
- sender.sendMessage(filelistprefix);
- for (int i = 0; i < lf.size() || i < 8; i++) {
- Files f = lf.get(i);
- Tellraw tr = Tellraw.create();
- tr.text(String.format(filelist, f.name, f.gameVersion, f.releaseType));
- tr.then(" ");
- tr.then(install).command(String.format("/yum br ai %s %s", f.name, f.downloadUrl));
- tr.tip(install_tip);
- tr.send(sender);
- }
- break;
- }
- case "ai": {
- if (url == null) { return; }
- File file = new File(Bukkit.getUpdateFolderFile(), YumAPI.getDownload().getFileName(url));
- YumAPI.getDownload().run(sender, url, file, new One() {
- @Override
- public void run(File file) {
- if (file.getName().endsWith(".zip")) {
- try {
- ZipKit.unzip(file, Bukkit.getUpdateFolderFile(), ".jar");
- file.delete();
- } catch (IOException e) {
- sender.sendMessage(unzip_error);
- }
- }
- YumAPI.upgrade(sender);
- }
- });
- break;
- }
- case "i":
- case "install": {
- sender.sendMessage(String.format(fsearching, id));
- List lf = Files.parseList(HttpKit.get(String.format(BukkitDev.PLUGIN, id)));
- if (lf.isEmpty()) {
- sender.sendMessage(String.format(not_found_id_from_bukkit, id));
- return;
- }
- Files f = lf.get(0);
- String url = f.downloadUrl;
- File file = new File(Bukkit.getUpdateFolderFile(), YumAPI.getDownload().getFileName(url));
- YumAPI.getDownload().run(sender, url, file, new One() {
- @Override
- public void run(File file) {
- if (file.getName().endsWith(".zip")) {
- try {
- ZipKit.unzip(file, Bukkit.getUpdateFolderFile(), ".jar");
- } catch (IOException e) {
- sender.sendMessage(unzip_error);
- }
- }
- YumAPI.upgrade(sender);
- }
- });
- break;
- }
- default:
- break;
-
- }
+ public void bukkitrepo(final CommandSender sender, final String opt, final String id, String url) {
+ switch (opt) {
+ case "look": {
+ sender.sendMessage(String.format(fsearching, id));
+ List lf = Files.parseList(HttpKit.get(String.format(BukkitDev.PLUGIN, id)));
+ if (lf.isEmpty()) {
+ sender.sendMessage(String.format(not_found_id_from_bukkit, id));
+ return;
}
- });
+ sender.sendMessage(filelistprefix);
+ for (int i = 0; i < lf.size() || i < 8; i++) {
+ Files f = lf.get(i);
+ Tellraw tr = Tellraw.create();
+ tr.text(String.format(filelist, f.name, f.gameVersion, f.releaseType));
+ tr.then(" ");
+ tr.then(install).command(String.format("/yum br ai %s %s", f.name, f.downloadUrl));
+ tr.tip(install_tip);
+ tr.send(sender);
+ }
+ break;
+ }
+ case "ai": {
+ if (url == null) { return; }
+ File file = new File(Bukkit.getUpdateFolderFile(), YumAPI.getDownload().getFileName(url));
+ YumAPI.getDownload().run(sender, url, file, new One() {
+ @Override
+ public void run(File file) {
+ if (file.getName().endsWith(".zip")) {
+ try {
+ ZipKit.unzip(file, Bukkit.getUpdateFolderFile(), ".jar");
+ file.delete();
+ } catch (IOException e) {
+ sender.sendMessage(unzip_error);
+ }
+ }
+ YumAPI.upgrade(sender);
+ }
+ });
+ break;
+ }
+ case "i":
+ case "install": {
+ sender.sendMessage(String.format(fsearching, id));
+ List lf = Files.parseList(HttpKit.get(String.format(BukkitDev.PLUGIN, id)));
+ if (lf.isEmpty()) {
+ sender.sendMessage(String.format(not_found_id_from_bukkit, id));
+ return;
+ }
+ Files f = lf.get(0);
+ url = f.downloadUrl;
+ File file = new File(Bukkit.getUpdateFolderFile(), YumAPI.getDownload().getFileName(url));
+ YumAPI.getDownload().run(sender, url, file, new One() {
+ @Override
+ public void run(File file) {
+ if (file.getName().endsWith(".zip")) {
+ try {
+ ZipKit.unzip(file, Bukkit.getUpdateFolderFile(), ".jar");
+ } catch (IOException e) {
+ sender.sendMessage(unzip_error);
+ }
+ }
+ YumAPI.upgrade(sender);
+ }
+ });
+ break;
+ }
+ default:
+ break;
+
+ }
}
@Cmd(aliases = "del", minimumArguments = 1)
@@ -200,8 +191,7 @@ public class YumCommand implements Listener, CommandExecutor {
Plugin plugin = (JavaPlugin) field.get(clazz.getClassLoader());
Bukkit.dispatchCommand(sender, "yum info " + plugin.getName());
} catch (ClassNotFoundException | NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e2) {
- sender.sendMessage("§4错误: 无法找到类 " + classname + " 所对应的插件信息 异常:" + e2.getClass().getSimpleName() + " "
- + e2.getMessage() + "!");
+ sender.sendMessage("§4错误: 无法找到类 " + classname + " 所对应的插件信息 异常:" + e2.getClass().getSimpleName() + " " + e2.getMessage() + "!");
}
}
@@ -253,8 +243,7 @@ public class YumCommand implements Listener, CommandExecutor {
if (plist != null) {
sender.sendMessage("§6插件注册权限: " + (plist.isEmpty() ? "无" : ""));
for (Permission perm : plist) {
- sender.sendMessage("§6 - §a" + perm.getName() + "§6 - §e"
- + (perm.getDescription().isEmpty() ? "无描述" : perm.getDescription()));
+ sender.sendMessage("§6 - §a" + perm.getName() + "§6 - §e" + (perm.getDescription().isEmpty() ? "无描述" : perm.getDescription()));
}
}
sender.sendMessage("§6插件物理路径: §3" + YumAPI.getPlugman().getPluginFile(plugin).getAbsolutePath());
@@ -318,13 +307,6 @@ public class YumCommand implements Listener, CommandExecutor {
}
}
- @EventHandler
- public void onAdminJoin(PlayerJoinEvent e) {
- if (e.getPlayer().isOp()) {
- YumAPI.updateCheck(e.getPlayer());
- }
- }
-
@Cmd(aliases = "re")
@Help(value = "重载插件", possibleArguments = "<插件名称|all|*>")
@Sort(5)
@@ -469,13 +451,6 @@ public class YumCommand implements Listener, CommandExecutor {
}
}
- @Cmd(aliases = "ua")
- @Help("更新所有可更新插件")
- @Sort(14)
- public void updateall(CommandSender sender) {
- YumAPI.updateAll(sender);
- }
-
@Cmd(aliases = "ug")
@Help(value = "升级或安装插件", possibleArguments = "[插件名称]")
@Sort(15)
@@ -488,8 +463,7 @@ public class YumCommand implements Listener, CommandExecutor {
if (plugin != null) {
YumAPI.upgrade(sender, plugin);
} else {
- sender.sendMessage(
- "§c错误: §b插件 " + pluginname + " §c未安装或已卸载 需要安装请使用 §b/yum install " + pluginname + "!");
+ sender.sendMessage("§c错误: §b插件 " + pluginname + " §c未安装或已卸载 需要安装请使用 §b/yum install " + pluginname + "!");
}
}
}
diff --git a/src/main/java/pw/yumc/Yum/inject/CommandInjector.java b/src/main/java/pw/yumc/Yum/inject/CommandInjector.java
index 954e6b4..558c2ee 100644
--- a/src/main/java/pw/yumc/Yum/inject/CommandInjector.java
+++ b/src/main/java/pw/yumc/Yum/inject/CommandInjector.java
@@ -87,7 +87,7 @@ public class CommandInjector implements TabExecutor {
}
}
}
- } catch (Throwable e) {
+ } catch (Throwable ignored) {
}
}
@@ -111,13 +111,7 @@ public class CommandInjector implements TabExecutor {
long lagms = lag / MonitorManager.um;
long avglagms = totalTime / count / MonitorManager.um;
if (Bukkit.isPrimaryThread() && lagms > MonitorManager.lagTime && avglagms > MonitorManager.lagTime) {
- MonitorManager.lagTip(String.format(warn,
- sender.getName(),
- plugin.getName(),
- label,
- StrKit.join(args, " "),
- lagms,
- avglagms));
+ MonitorManager.lagTip(String.format(warn, sender.getName(), plugin.getName(), label, StrKit.join(args, " "), lagms, avglagms));
}
MonitorManager.addCmd(plugin.getName(), lag);
return result;
@@ -127,8 +121,7 @@ public class CommandInjector implements TabExecutor {
}
MonitorCommand.lastError = e;
MonitorManager.sendError(sender, plugin, e);
- MonitorManager.printThrowable(
- String.format(err, sender.getName(), plugin.getName(), label, StrKit.join(args, " ")), e);
+ MonitorManager.printThrowable(String.format(err, sender.getName(), plugin.getName(), label, StrKit.join(args, " ")), e);
}
return false;
}
diff --git a/src/main/java/pw/yumc/Yum/inject/ListenerInjector.java b/src/main/java/pw/yumc/Yum/inject/ListenerInjector.java
index 8b6067a..a8221f8 100644
--- a/src/main/java/pw/yumc/Yum/inject/ListenerInjector.java
+++ b/src/main/java/pw/yumc/Yum/inject/ListenerInjector.java
@@ -76,7 +76,7 @@ public class ListenerInjector implements EventExecutor {
Reflect.on(listener).set("executor", ((ListenerInjector) executor).getOriginalExecutor());
}
}
- } catch (Throwable e) {
+ } catch (Throwable ignored) {
}
}
@@ -98,8 +98,7 @@ public class ListenerInjector implements EventExecutor {
}
long lagms = lag / MonitorManager.um;
long avglagms = eventTotalTime.get(en) / eventCount.get(en) / MonitorManager.um;
- if (avglagms > MonitorManager.lagTime && lagms > MonitorManager.lagTime
- && !ConfigManager.i().getMonitorIgnoreList().contains(plugin.getName())) {
+ if (avglagms > MonitorManager.lagTime && lagms > MonitorManager.lagTime && !ConfigManager.i().getMonitorIgnoreList().contains(plugin.getName())) {
MonitorManager.lagTip(String.format(warn, plugin.getName(), event.getEventName(), lagms, avglagms));
}
MonitorManager.addEvent(plugin.getName(), lag);
diff --git a/src/main/java/pw/yumc/Yum/inject/TaskInjector.java b/src/main/java/pw/yumc/Yum/inject/TaskInjector.java
index f40df3c..ce35277 100644
--- a/src/main/java/pw/yumc/Yum/inject/TaskInjector.java
+++ b/src/main/java/pw/yumc/Yum/inject/TaskInjector.java
@@ -69,7 +69,7 @@ public class TaskInjector implements Runnable {
}
}
}
- } catch (Throwable e) {
+ } catch (Throwable ignored) {
}
}
diff --git a/src/main/java/pw/yumc/Yum/listeners/PluginNetworkListener.java b/src/main/java/pw/yumc/Yum/listeners/PluginNetworkListener.java
index 2cee3fc..2278d87 100644
--- a/src/main/java/pw/yumc/Yum/listeners/PluginNetworkListener.java
+++ b/src/main/java/pw/yumc/Yum/listeners/PluginNetworkListener.java
@@ -42,6 +42,9 @@ public class PluginNetworkListener implements Listener {
return;
}
if (plugin != null) {
+ if (ConfigManager.i().isNetworkDebug() && ConfigManager.i().getNetWorkDebug().contains(plugin.getName())) {
+ new Exception().printStackTrace();
+ }
NetCommand.addNetCount(plugin.getName());
if (ConfigManager.i().getNetworkBlackList().contains(plugin.getName())) {
breakNetwork(e);
diff --git a/src/main/java/pw/yumc/Yum/managers/ConfigManager.java b/src/main/java/pw/yumc/Yum/managers/ConfigManager.java
index 594c858..bab7df6 100644
--- a/src/main/java/pw/yumc/Yum/managers/ConfigManager.java
+++ b/src/main/java/pw/yumc/Yum/managers/ConfigManager.java
@@ -109,6 +109,10 @@ public class ConfigManager {
return thread.getBoolean("ThreadSafe", true);
}
+ public List getNetWorkDebug() {
+ return network.getStringList("Debug");
+ }
+
public void reload() {
setop.reload();
network.reload();
diff --git a/src/main/java/pw/yumc/Yum/managers/MonitorManager.java b/src/main/java/pw/yumc/Yum/managers/MonitorManager.java
index f12074a..d70f14d 100644
--- a/src/main/java/pw/yumc/Yum/managers/MonitorManager.java
+++ b/src/main/java/pw/yumc/Yum/managers/MonitorManager.java
@@ -63,7 +63,7 @@ public class MonitorManager {
public static void elog(String message) {
if (log_to_file) {
- elog.logSender(message);
+ elog.console(message);
} else {
Log.console(message);
}
@@ -91,7 +91,7 @@ public class MonitorManager {
public static void log(String message) {
if (log_to_file) {
- mlog.logSender(message);
+ mlog.console(message);
} else {
Log.console(message);
}
@@ -143,7 +143,7 @@ public class MonitorManager {
/**
* 使用 Map按value进行排序
*
- * @param map
+ * @param oriMap
* @return
*/
public static Map sortMapByValue(Map oriMap) {
@@ -152,7 +152,7 @@ public class MonitorManager {
List> entryList = new ArrayList<>(oriMap.entrySet());
Collections.sort(entryList, new MonitorComparator());
Iterator> iter = entryList.iterator();
- Entry tmpEntry = null;
+ Entry tmpEntry;
while (iter.hasNext()) {
tmpEntry = iter.next();
sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
diff --git a/src/main/java/pw/yumc/Yum/managers/RepositoryManager.java b/src/main/java/pw/yumc/Yum/managers/RepositoryManager.java
index 8a22764..30c3545 100644
--- a/src/main/java/pw/yumc/Yum/managers/RepositoryManager.java
+++ b/src/main/java/pw/yumc/Yum/managers/RepositoryManager.java
@@ -41,7 +41,7 @@ public class RepositoryManager {
public boolean addPackage(CommandSender sender, String urlstring) {
String json = HttpKit.get(urlstring);
- if (json == null || json.isEmpty()) { return false; }
+ if (json.isEmpty()) { return false; }
PackageInfo pkg = jsonToPackage(json);
if (pkg == null) { return false; }
updatePackage(sender, pkg);
@@ -51,8 +51,7 @@ public class RepositoryManager {
public boolean addRepositories(CommandSender sender, String urlstring) {
String url = handerRepoUrl(urlstring);
Repositories repo = repocache.addRepo(url);
- if (repo == null) { return false; }
- return updateRepositories(sender, repo);
+ return repo != null && updateRepositories(sender, repo);
}
public void clean() {
@@ -90,10 +89,7 @@ public class RepositoryManager {
List taglist = plugin.tags;
for (int i = 0; i < taglist.size(); i++) {
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));
+ 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));
}
}
}
@@ -142,8 +138,7 @@ public class RepositoryManager {
String url = urlstring.substring(0, urlstring.endsWith("/") ? urllength - 1 : urllength);
handerRepoUrl(url);
Repositories repo = repocache.addRepo(urlstring);
- if (repo == null) { return false; }
- return updateRepositories(sender, repo);
+ return repo != null && updateRepositories(sender, repo);
}
public PackageInfo jsonToPackage(String json) {
@@ -194,7 +189,7 @@ public class RepositoryManager {
sender = Bukkit.getConsoleSender();
}
if (repocenter == null || repocenter.repos.isEmpty()) {
- sender.sendMessage(String.format("§6[§bYum§6] 源 %s 数据为空或列表为空!", repocenter.name));
+ sender.sendMessage(String.format("§6[§bYum§6] 源 %s 数据为空或列表为空!", repocenter == null ? "null" : repocenter.name));
return false;
}
for (Repository repo : repocenter.repos) {
diff --git a/src/main/java/pw/yumc/Yum/models/BukkitDev.java b/src/main/java/pw/yumc/Yum/models/BukkitDev.java
index 0e5ad2d..202580c 100644
--- a/src/main/java/pw/yumc/Yum/models/BukkitDev.java
+++ b/src/main/java/pw/yumc/Yum/models/BukkitDev.java
@@ -42,8 +42,8 @@ public class BukkitDev implements Serializable {
if (StrKit.isBlank(json) || json.equals("[]")) { return Collections.emptyList(); }
List temp = new ArrayList<>();
JSONArray ja = (JSONArray) JSONValue.parse(json);
- for (int i = 0; i < ja.size(); i++) {
- temp.add(new Files((JSONObject) ja.get(i)));
+ for (Object aJa : ja) {
+ temp.add(new Files((JSONObject) aJa));
}
Collections.reverse(temp);
return temp;
@@ -67,8 +67,8 @@ public class BukkitDev implements Serializable {
if (StrKit.isBlank(json) || json.equals("[]")) { return Collections.emptyList(); }
List temp = new ArrayList<>();
JSONArray ja = (JSONArray) JSONValue.parse(json);
- for (int i = 0; i < ja.size(); i++) {
- temp.add(new Projects((JSONObject) ja.get(i)));
+ for (Object aJa : ja) {
+ temp.add(new Projects((JSONObject) aJa));
}
return temp;
}
diff --git a/src/main/java/pw/yumc/Yum/models/PluginInfo.java b/src/main/java/pw/yumc/Yum/models/PluginInfo.java
index de4123a..481e8c8 100644
--- a/src/main/java/pw/yumc/Yum/models/PluginInfo.java
+++ b/src/main/java/pw/yumc/Yum/models/PluginInfo.java
@@ -36,10 +36,6 @@ public class PluginInfo implements Serializable {
/**
* 获得下载直链
*
- * @param sender
- * 命令发送者
- * @param version
- * 版本
* @return 下载直链
*/
public String getDirectUrl() {
@@ -49,8 +45,6 @@ public class PluginInfo implements Serializable {
/**
* 获得下载直链
*
- * @param sender
- * 命令发送者
* @param version
* 版本
* @return 下载直链
@@ -82,9 +76,7 @@ public class PluginInfo implements Serializable {
/**
* 获取Maven仓库指定插件的下载地址
*
- * @param sender
- * - 命令发送者
- * @param version
+ * @param ver
* - 需要更新的版本
* @return 更新地址
*/
@@ -148,7 +140,7 @@ public class PluginInfo implements Serializable {
final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
final DocumentBuilder builder = factory.newDocumentBuilder();
result = builder.parse(url).getElementsByTagName(tag).item(0).getTextContent();
- } catch (final Exception e) {
+ } catch (final Exception ignored) {
}
return result;
}
diff --git a/src/main/java/pw/yumc/Yum/models/RepoCache.java b/src/main/java/pw/yumc/Yum/models/RepoCache.java
index 55f0815..d347b51 100644
--- a/src/main/java/pw/yumc/Yum/models/RepoCache.java
+++ b/src/main/java/pw/yumc/Yum/models/RepoCache.java
@@ -44,7 +44,7 @@ public class RepoCache implements Serializable {
public Repositories getRepo(String repo) {
String json = HttpKit.get(repo);
- if (json == null || json.isEmpty()) {
+ if (json.isEmpty()) {
Log.console("§c源地址获取数据为空 §b" + repo);
return null;
}
diff --git a/src/main/java/pw/yumc/Yum/models/RepoSerialization.java b/src/main/java/pw/yumc/Yum/models/RepoSerialization.java
index 2f321ff..72b34ab 100644
--- a/src/main/java/pw/yumc/Yum/models/RepoSerialization.java
+++ b/src/main/java/pw/yumc/Yum/models/RepoSerialization.java
@@ -131,6 +131,6 @@ public class RepoSerialization {
public enum URLType {
Maven,
maven,
- DirectUrl;
+ DirectUrl
}
}
diff --git a/src/main/java/pw/yumc/Yum/runnables/MainThreadCheckTask.java b/src/main/java/pw/yumc/Yum/runnables/MainThreadCheckTask.java
index 7efe4b5..0206b91 100644
--- a/src/main/java/pw/yumc/Yum/runnables/MainThreadCheckTask.java
+++ b/src/main/java/pw/yumc/Yum/runnables/MainThreadCheckTask.java
@@ -33,7 +33,7 @@ public class MainThreadCheckTask extends TimerTask {
try {
Class clazz = Class.forName("org.spigotmc.WatchdogThread");
tickMethod = clazz.getDeclaredMethod("tick");
- } catch (Exception e) {
+ } catch (Exception ignored) {
}
}
diff --git a/src/main/resources/network.yml b/src/main/resources/network.yml
index b8b4d20..2ca62c7 100644
--- a/src/main/resources/network.yml
+++ b/src/main/resources/network.yml
@@ -13,6 +13,9 @@ ShowInfo: true
NetworkDebug: false
#是否允许插件主线程访问网络
AllowPrimaryThread: false
+#调试列表
+Debug:
+- AAC
#黑名单列表
Black:
- BukkitInjectedTools