From 4d8873c897cd0c5a8cc334707e6154389c377d62 Mon Sep 17 00:00:00 2001
From: Warrior <50800980+Warriorrrr@users.noreply.github.com>
Date: Fri, 19 Jun 2026 09:59:50 +0200
Subject: [PATCH 1/2] Remove timings executor from event executor stack
---
paper-api/src/main/java/org/bukkit/event/Event.java | 1 -
.../src/main/java/org/bukkit/plugin/SimplePluginManager.java | 1 -
.../main/java/org/bukkit/plugin/java/JavaPluginLoader.java | 4 ++--
.../io/papermc/paper/plugin/manager/PaperEventManager.java | 3 +--
4 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/paper-api/src/main/java/org/bukkit/event/Event.java b/paper-api/src/main/java/org/bukkit/event/Event.java
index 7fd1f4b59584..f37826211bb4 100644
--- a/paper-api/src/main/java/org/bukkit/event/Event.java
+++ b/paper-api/src/main/java/org/bukkit/event/Event.java
@@ -86,7 +86,6 @@ public String getEventName() {
*
The handlers for this event may block for any length of time.
* Some implementations may selectively declare a specific event use
* as asynchronous. This behavior should be clearly defined.
- * Asynchronous calls are not calculated in the plugin timing system.
*
*
* @return {@code false} by default, {@code true} if the event fires asynchronously
diff --git a/paper-api/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/paper-api/src/main/java/org/bukkit/plugin/SimplePluginManager.java
index dfc2d7640399..35b486876d9d 100644
--- a/paper-api/src/main/java/org/bukkit/plugin/SimplePluginManager.java
+++ b/paper-api/src/main/java/org/bukkit/plugin/SimplePluginManager.java
@@ -720,7 +720,6 @@ public void registerEvent(@NotNull Class extends Event> event, @NotNull Listen
throw new IllegalPluginAccessException("Plugin attempted to register " + event + " while not enabled");
}
- executor = new co.aikar.timings.TimedEventExecutor(executor, plugin, null, event); // Paper
if (false) { // Spigot - RL handles useTimings check now // Paper
getEventListeners(event).register(new TimedRegisteredListener(listener, executor, priority, plugin, ignoreCancelled));
} else {
diff --git a/paper-api/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/paper-api/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
index 163e9a0e179d..9023a39c6481 100644
--- a/paper-api/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
+++ b/paper-api/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java
@@ -290,7 +290,7 @@ public Map, Set> createRegisteredList
}
}
- EventExecutor executor = new co.aikar.timings.TimedEventExecutor(new EventExecutor() { // Paper
+ EventExecutor executor = new EventExecutor() {
@Override
public void execute(@NotNull Listener listener, @NotNull Event event) throws EventException { // Paper
try {
@@ -304,7 +304,7 @@ public void execute(@NotNull Listener listener, @NotNull Event event) throws Eve
throw new EventException(t);
}
}
- }, plugin, method, eventClass); // Paper
+ };
eventSet.add(new RegisteredListener(listener, executor, eh.priority(), plugin, eh.ignoreCancelled()));
}
return ret;
diff --git a/paper-server/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java b/paper-server/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java
index 7ce9ebba8ce3..2a298ec2c95e 100644
--- a/paper-server/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java
+++ b/paper-server/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java
@@ -95,7 +95,6 @@ public void registerEvent(@NotNull Class extends Event> event, @NotNull Listen
throw new IllegalPluginAccessException("Plugin attempted to register " + event + " while not enabled");
}
- executor = new TimedEventExecutor(executor, plugin, null, event);
this.getEventListeners(event).register(new RegisteredListener(listener, executor, priority, plugin, ignoreCancelled));
}
@@ -182,7 +181,7 @@ public Map, Set> createRegisteredList
}
}
- EventExecutor executor = new TimedEventExecutor(EventExecutor.create(method, eventClass), plugin, method, eventClass);
+ EventExecutor executor = EventExecutor.create(method, eventClass);
eventSet.add(new RegisteredListener(listener, executor, eh.priority(), plugin, eh.ignoreCancelled()));
}
return ret;
From 728ec8ad190a89cce7d29e066a9db60b745128f8 Mon Sep 17 00:00:00 2001
From: Warrior <50800980+Warriorrrr@users.noreply.github.com>
Date: Fri, 19 Jun 2026 12:43:50 +0200
Subject: [PATCH 2/2] Cleanup old code
---
.../bukkit/plugin/SimplePluginManager.java | 7 +--
.../plugin/TimedRegisteredListener.java | 2 +
.../plugin/TimedRegisteredListenerTest.java | 56 -------------------
3 files changed, 3 insertions(+), 62 deletions(-)
delete mode 100644 paper-api/src/test/java/org/bukkit/plugin/TimedRegisteredListenerTest.java
diff --git a/paper-api/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/paper-api/src/main/java/org/bukkit/plugin/SimplePluginManager.java
index 35b486876d9d..d1a13d8893ff 100644
--- a/paper-api/src/main/java/org/bukkit/plugin/SimplePluginManager.java
+++ b/paper-api/src/main/java/org/bukkit/plugin/SimplePluginManager.java
@@ -61,7 +61,6 @@ public final class SimplePluginManager implements PluginManager {
public final Map> defSubs = new HashMap>();
public PluginManager paperPluginManager;
// Paper end
- private boolean useTimings = false;
public SimplePluginManager(@NotNull Server instance, @NotNull SimpleCommandMap commandMap) {
server = instance;
@@ -720,11 +719,7 @@ public void registerEvent(@NotNull Class extends Event> event, @NotNull Listen
throw new IllegalPluginAccessException("Plugin attempted to register " + event + " while not enabled");
}
- if (false) { // Spigot - RL handles useTimings check now // Paper
- getEventListeners(event).register(new TimedRegisteredListener(listener, executor, priority, plugin, ignoreCancelled));
- } else {
- getEventListeners(event).register(new RegisteredListener(listener, executor, priority, plugin, ignoreCancelled));
- }
+ getEventListeners(event).register(new RegisteredListener(listener, executor, priority, plugin, ignoreCancelled));
}
@NotNull
diff --git a/paper-api/src/main/java/org/bukkit/plugin/TimedRegisteredListener.java b/paper-api/src/main/java/org/bukkit/plugin/TimedRegisteredListener.java
index 1d76e30b82ca..47dbc7228702 100644
--- a/paper-api/src/main/java/org/bukkit/plugin/TimedRegisteredListener.java
+++ b/paper-api/src/main/java/org/bukkit/plugin/TimedRegisteredListener.java
@@ -9,7 +9,9 @@
/**
* Extends RegisteredListener to include timing information
+ * @deprecated This class was part of Timings v1 and has gone unused for over a decade, timings will be removed in the future.
*/
+@Deprecated(forRemoval = true)
public class TimedRegisteredListener extends RegisteredListener {
private int count;
private long totalTime;
diff --git a/paper-api/src/test/java/org/bukkit/plugin/TimedRegisteredListenerTest.java b/paper-api/src/test/java/org/bukkit/plugin/TimedRegisteredListenerTest.java
deleted file mode 100644
index 7c240912f168..000000000000
--- a/paper-api/src/test/java/org/bukkit/plugin/TimedRegisteredListenerTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.bukkit.plugin;
-
-import static org.bukkit.support.MatcherAssert.*;
-import static org.hamcrest.Matchers.*;
-import org.bukkit.event.Event;
-import org.bukkit.event.EventException;
-import org.bukkit.event.EventPriority;
-import org.bukkit.event.Listener;
-import org.bukkit.event.block.BlockBreakEvent;
-import org.bukkit.event.player.PlayerEvent;
-import org.bukkit.event.player.PlayerInteractEvent;
-import org.bukkit.event.player.PlayerMoveEvent;
-import org.junit.jupiter.api.Test;
-
-public class TimedRegisteredListenerTest {
-
- @Test
- public void testEventClass() throws EventException {
- Listener listener = new Listener() {};
- EventExecutor executor = new EventExecutor() {
- @Override
- public void execute(Listener listener, Event event) {}
- };
- BukkitTestPlugin plugin = new BukkitTestPlugin("Test");
-
- PlayerInteractEvent interactEvent = new PlayerInteractEvent(null, null, null, null, null);
- PlayerMoveEvent moveEvent = new PlayerMoveEvent(null, null, null);
- BlockBreakEvent breakEvent = new BlockBreakEvent(null, null);
-
- TimedRegisteredListener trl = new TimedRegisteredListener(listener, executor, EventPriority.NORMAL, plugin, false);
-
- // Ensure that the correct event type is reported for a single event
- trl.callEvent(interactEvent);
- assertThat(trl.getEventClass(), is((Object) PlayerInteractEvent.class));
- // Ensure that no superclass is used in lieu of the actual event, after two identical event types
- trl.callEvent(interactEvent);
- assertThat(trl.getEventClass(), is((Object) PlayerInteractEvent.class));
- // Ensure that the closest superclass of the two events is chosen
- trl.callEvent(moveEvent);
- assertThat(trl.getEventClass(), is((Object) PlayerEvent.class));
- // As above, so below
- trl.callEvent(breakEvent);
- assertThat(trl.getEventClass(), is((Object) Event.class));
- // In the name of being thorough, check that it never travels down the hierarchy again.
- trl.callEvent(breakEvent);
- assertThat(trl.getEventClass(), is((Object) Event.class));
-
- trl = new TimedRegisteredListener(listener, executor, EventPriority.NORMAL, plugin, false);
-
- trl.callEvent(breakEvent);
- assertThat(trl.getEventClass(), is((Object) BlockBreakEvent.class));
- // Test moving up the class hierarchy by more than one class at a time
- trl.callEvent(moveEvent);
- assertThat(trl.getEventClass(), is((Object) Event.class));
- }
-}