diff --git a/patches/server/0051-Skip-event-if-no-listeners.patch b/patches/server/0051-Skip-event-if-no-listeners.patch new file mode 100644 index 00000000..42a9b06a --- /dev/null +++ b/patches/server/0051-Skip-event-if-no-listeners.patch @@ -0,0 +1,31 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: lilingfengdev <145678359+lilingfengdev@users.noreply.github.com> +Date: Wed, 17 Jan 2024 18:16:38 +0800 +Subject: [PATCH] Skip event if no listeners + + +diff --git a/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java b/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java +index 06dfd0b27ac0006a2be07f54a0702519a691c6ec..90b40040b2dc0e8a481515a9b139cf1277578545 100644 +--- a/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java ++++ b/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java +@@ -35,6 +35,10 @@ class PaperEventManager { + + // SimplePluginManager + public void callEvent(@NotNull Event event) { ++ // Leaf start - Skip event if no listeners ++ RegisteredListener[] listeners = event.getHandlers().getRegisteredListeners(); ++ if (listeners.length == 0) return; ++ // Leaf end + // KTP start - Optimise spigot event bus + if (event.asynchronous() != net.kyori.adventure.util.TriState.NOT_SET) { + final boolean onPrimaryThread = this.server.isPrimaryThread(); +@@ -47,9 +51,6 @@ class PaperEventManager { + // KTP stop - Optimise spigot event bus + } + +- HandlerList handlers = event.getHandlers(); +- RegisteredListener[] listeners = handlers.getRegisteredListeners(); +- + for (RegisteredListener registration : listeners) { + if (!registration.getPlugin().isEnabled()) { + continue;