From c468d2212025789f82ed77a4b9989801b267faee Mon Sep 17 00:00:00 2001 From: NotMyFault Date: Thu, 5 Aug 2021 15:55:20 +0200 Subject: [PATCH] Fixes #1208 --- gradle/libs.versions.toml | 1 - worldedit-bukkit/build.gradle.kts | 3 --- .../bukkit/adapter/BukkitQueueHandler.java | 22 ++++++++++++------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5dfde398c..32ed153e7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -64,7 +64,6 @@ gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" } #Platform expectations paper = { group = "io.papermc.paper", name = "paper-api", version.ref = "paper" } -spigot = { group = "org.spigotmc", name = "spigot", version.ref = "paper" } # Plugins vault = { group = "com.github.MilkBowl", name = "VaultAPI", version.ref = "vault" } diff --git a/worldedit-bukkit/build.gradle.kts b/worldedit-bukkit/build.gradle.kts index 3ffdf58b1..6e82c8a68 100644 --- a/worldedit-bukkit/build.gradle.kts +++ b/worldedit-bukkit/build.gradle.kts @@ -62,9 +62,6 @@ dependencies { isTransitive = false exclude(group = "org.slf4j", module = "slf4j-api") } - compileOnly(libs.spigot) { - because("Remove if #1208 has been addressed") - } // Logging implementation(libs.log4j) diff --git a/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/adapter/BukkitQueueHandler.java b/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/adapter/BukkitQueueHandler.java index a0ce35035..d613f2279 100644 --- a/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/adapter/BukkitQueueHandler.java +++ b/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/adapter/BukkitQueueHandler.java @@ -5,8 +5,8 @@ import com.fastasyncworldedit.bukkit.listener.ChunkListener; import com.fastasyncworldedit.core.queue.implementation.QueueHandler; import com.sk89q.worldedit.internal.util.LogManagerCompat; import org.apache.logging.log4j.Logger; -import org.spigotmc.AsyncCatcher; +import java.lang.reflect.Field; import java.lang.reflect.Method; public class BukkitQueueHandler extends QueueHandler { @@ -16,12 +16,18 @@ public class BukkitQueueHandler extends QueueHandler { private volatile boolean timingsEnabled; private static boolean alertTimingsChange = true; - private static Method methodCheck; + private static Method timingsCheck; + private static Field asyncCatcher; static { try { - methodCheck = Class.forName("co.aikar.timings.TimingsManager").getDeclaredMethod("recheckEnabled"); - methodCheck.setAccessible(true); + timingsCheck = Class.forName("co.aikar.timings.TimingsManager").getDeclaredMethod("recheckEnabled"); + timingsCheck.setAccessible(true); + } catch (Throwable ignored) { + } + try { + asyncCatcher = Class.forName("org.spigotmc.AsyncCatcher").getDeclaredField("enabled"); + asyncCatcher.setAccessible(true); } catch (Throwable ignored) { } } @@ -31,7 +37,7 @@ public class BukkitQueueHandler extends QueueHandler { ChunkListener.physicsFreeze = true; if (parallel) { try { - AsyncCatcher.enabled = false; + asyncCatcher.setBoolean(asyncCatcher, false); timingsEnabled = Timings.isTimingsEnabled(); if (timingsEnabled) { if (alertTimingsChange) { @@ -39,7 +45,7 @@ public class BukkitQueueHandler extends QueueHandler { LOGGER.debug("Having `parallel-threads` > 1 interferes with the timings."); } Timings.setTimingsEnabled(false); - methodCheck.invoke(null); + timingsCheck.invoke(null); } } catch (Throwable e) { e.printStackTrace(); @@ -52,10 +58,10 @@ public class BukkitQueueHandler extends QueueHandler { ChunkListener.physicsFreeze = false; if (parallel) { try { - AsyncCatcher.enabled = true; + asyncCatcher.setBoolean(asyncCatcher, true); if (timingsEnabled) { Timings.setTimingsEnabled(true); - methodCheck.invoke(null); + timingsCheck.invoke(null); } } catch (Throwable e) { e.printStackTrace();