From c87b046a043e73d4ae15a6def299cd2ff9211e57 Mon Sep 17 00:00:00 2001 From: Taiyou06 Date: Tue, 8 Jul 2025 12:30:06 +0200 Subject: [PATCH] toggleable async catcher --- .../0060-Toggleable-async-catcher.patch | 18 ++++++++++++ .../modules/misc/AsyncCatcherConfig.java | 28 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 leaf-server/paper-patches/features/0060-Toggleable-async-catcher.patch create mode 100644 leaf-server/src/main/java/org/dreeam/leaf/config/modules/misc/AsyncCatcherConfig.java diff --git a/leaf-server/paper-patches/features/0060-Toggleable-async-catcher.patch b/leaf-server/paper-patches/features/0060-Toggleable-async-catcher.patch new file mode 100644 index 00000000..d10d20a8 --- /dev/null +++ b/leaf-server/paper-patches/features/0060-Toggleable-async-catcher.patch @@ -0,0 +1,18 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Taiyou06 +Date: Tue, 8 Jul 2025 12:08:25 +0200 +Subject: [PATCH] Toggleable-async-catcher + + +diff --git a/src/main/java/org/spigotmc/AsyncCatcher.java b/src/main/java/org/spigotmc/AsyncCatcher.java +index 7e7a0ed944961af5ab7a49bc659da2862d2e2c82..e584205c3e1412bf2f2c4e4eb114a29cebc73fad 100644 +--- a/src/main/java/org/spigotmc/AsyncCatcher.java ++++ b/src/main/java/org/spigotmc/AsyncCatcher.java +@@ -5,6 +5,7 @@ import net.minecraft.server.MinecraftServer; + public class AsyncCatcher { + + public static void catchOp(String reason) { ++ if (!org.dreeam.leaf.config.modules.misc.AsyncCatcherConfig.enabled) {return;} + if (!ca.spottedleaf.moonrise.common.util.TickThread.isTickThread()) { // Paper - chunk system + MinecraftServer.LOGGER.error("Thread {} failed main thread check: {}", Thread.currentThread().getName(), reason, new Throwable()); // Paper + throw new IllegalStateException("Asynchronous " + reason + "!"); diff --git a/leaf-server/src/main/java/org/dreeam/leaf/config/modules/misc/AsyncCatcherConfig.java b/leaf-server/src/main/java/org/dreeam/leaf/config/modules/misc/AsyncCatcherConfig.java new file mode 100644 index 00000000..50f19111 --- /dev/null +++ b/leaf-server/src/main/java/org/dreeam/leaf/config/modules/misc/AsyncCatcherConfig.java @@ -0,0 +1,28 @@ +package org.dreeam.leaf.config.modules.misc; + +import org.dreeam.leaf.config.ConfigModules; +import org.dreeam.leaf.config.EnumConfigCategory; + +public class AsyncCatcherConfig extends ConfigModules { + + public String getBasePath() { + return EnumConfigCategory.MISC.getBaseKeyName() + ".async-catcher"; + } + + public static boolean enabled = true; + + @Override + public void onLoaded() { + config.addCommentRegionBased(getBasePath(), """ + !!! WARNING !!! + Disabling this is NOT recommended and can lead to severe server instability. + Only disable this if you are an advanced user or debugging a specific issue + and understand the risks involved.""", + """ + !!! 警告 !!! + 不建议禁用此功能,因为它可能导致严重的服务器不稳定. + 只有当您是正在调试特定问题并了解相关风险的高级用户时,才应禁用此功能."""); + + enabled = config.getBoolean(getBasePath() + ".enabled", enabled); + } +}