diff --git a/.gitignore b/.gitignore index 043fc2a..d05cb03 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ # Eclipse stuff +/.project +/.classpath +/.factorypath /.settings # netbeans diff --git a/pom.xml b/pom.xml index 46a8a46..5427160 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 Yum - 2.7.10 + 2.8.0 jar Minecraft 服务器插件管理系统 @@ -16,13 +16,14 @@ - §a补丁包 2.7.10 版本 + §a补丁包 2.8 版本 + §619-02-23 §cfix: 修复不兼容 1.13 的问题; + + §617-07-29 §cfix: 修复不兼容 1.12 的问题; §6- §cfix: §7修复仓库数据读取错误的问题; §6- §cfix: §7修复一个tab补全产生的错误 - - §6- §btip: §a本插件最后一次更新 2.7.8 版本; §6- §afeat: §7线程中断只显示一次调试信息; §6- §afeat: §7更新线程检查 添加调试; @@ -40,8 +41,8 @@ DEV UTF-8 - 1.7 - 1.7 + 1.8 + 1.8 diff --git a/src/main/java/pw/yumc/Yum/inject/TaskInjector.java b/src/main/java/pw/yumc/Yum/inject/TaskInjector.java index ce35277..b993df5 100644 --- a/src/main/java/pw/yumc/Yum/inject/TaskInjector.java +++ b/src/main/java/pw/yumc/Yum/inject/TaskInjector.java @@ -10,6 +10,7 @@ import org.bukkit.scheduler.BukkitTask; import pw.yumc.Yum.commands.MonitorCommand; import pw.yumc.Yum.managers.MonitorManager; +import pw.yumc.YumCore.bukkit.P; import pw.yumc.YumCore.kit.StrKit; import pw.yumc.YumCore.reflect.Reflect; @@ -19,6 +20,20 @@ public class TaskInjector implements Runnable { private static String err = prefix + "§6插件 §b%s §6处理 §d%s §6任务时发生异常!"; private static String inject_error = prefix + "§6插件 §b%s §c注入能耗监控失败!"; private static String plugin_is_null = "插件不得为NULL!"; + private static String taskFieldName = "task"; + + static { + BukkitTask task = Bukkit.getServer().getScheduler().runTask(P.instance, new Runnable(){ + @Override + public void run() {} + }); + try { + Reflect.on(task).get("rTask"); + taskFieldName = "rTask"; + }catch (Throwable ex) { + } + } + private Runnable originalTask; private Plugin plugin; @@ -44,10 +59,12 @@ public class TaskInjector implements Runnable { for (BukkitTask pendingTask : pendingTasks) { // 忽略异步任务 if (pendingTask.isSync() && pendingTask.getOwner().equals(plugin)) { - Runnable originalTask = Reflect.on(pendingTask).get("task"); - if (originalTask instanceof TaskInjector) { return; } + Runnable originalTask = Reflect.on(pendingTask).get(taskFieldName); + if (originalTask instanceof TaskInjector) { + return; + } TaskInjector taskInjector = new TaskInjector(originalTask, plugin); - Reflect.on(pendingTask).set("task", taskInjector); + Reflect.on(pendingTask).set(taskFieldName, taskInjector); } } } catch (Throwable e) {