Add /paper dumplisteners tofile
and increase detail of command output (#8592)
This commit is contained in:
parent
21b964af4e
commit
f1583fcd74
2 changed files with 203 additions and 12 deletions
|
@ -4,6 +4,88 @@ Date: Sat, 19 Nov 2022 19:46:44 +0100
|
|||
Subject: [PATCH] Add /paper dumplisteners command
|
||||
|
||||
|
||||
diff --git a/src/main/java/co/aikar/timings/TimedEventExecutor.java b/src/main/java/co/aikar/timings/TimedEventExecutor.java
|
||||
index 4e6e1b8e8aeb07e34536941d2cbfc25e5cfa6c27..34e43e56ccc663e05b9cae36643e8df5eee5cb17 100644
|
||||
--- a/src/main/java/co/aikar/timings/TimedEventExecutor.java
|
||||
+++ b/src/main/java/co/aikar/timings/TimedEventExecutor.java
|
||||
@@ -80,4 +80,10 @@ public class TimedEventExecutor implements EventExecutor {
|
||||
executor.execute(listener, event);
|
||||
}
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ @NotNull
|
||||
+ public String toString() {
|
||||
+ return "TimedEventExecutor['" + this.executor.toString() + "']";
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/event/executor/MethodHandleEventExecutor.java b/src/main/java/com/destroystokyo/paper/event/executor/MethodHandleEventExecutor.java
|
||||
index 5b28e9b1daba7834af67dbc193dd656bedd9a994..fbebf649e893cf872be9b27091146a7c2f451aca 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/event/executor/MethodHandleEventExecutor.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/event/executor/MethodHandleEventExecutor.java
|
||||
@@ -14,10 +14,12 @@ import org.jetbrains.annotations.NotNull;
|
||||
public class MethodHandleEventExecutor implements EventExecutor {
|
||||
private final Class<? extends Event> eventClass;
|
||||
private final MethodHandle handle;
|
||||
+ private final Method method;
|
||||
|
||||
public MethodHandleEventExecutor(@NotNull Class<? extends Event> eventClass, @NotNull MethodHandle handle) {
|
||||
this.eventClass = eventClass;
|
||||
this.handle = handle;
|
||||
+ this.method = null;
|
||||
}
|
||||
|
||||
public MethodHandleEventExecutor(@NotNull Class<? extends Event> eventClass, @NotNull Method m) {
|
||||
@@ -28,6 +30,7 @@ public class MethodHandleEventExecutor implements EventExecutor {
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new AssertionError("Unable to set accessible", e);
|
||||
}
|
||||
+ this.method = m;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -39,4 +42,10 @@ public class MethodHandleEventExecutor implements EventExecutor {
|
||||
SneakyThrow.sneaky(t);
|
||||
}
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ @NotNull
|
||||
+ public String toString() {
|
||||
+ return "MethodHandleEventExecutor['" + this.method + "']";
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/event/executor/StaticMethodHandleEventExecutor.java b/src/main/java/com/destroystokyo/paper/event/executor/StaticMethodHandleEventExecutor.java
|
||||
index c83672427324bd068ed52916f700b68446a226f6..87ea5354808dbbdefbdfc78f352a543f72a0d033 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/event/executor/StaticMethodHandleEventExecutor.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/event/executor/StaticMethodHandleEventExecutor.java
|
||||
@@ -18,6 +18,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
public class StaticMethodHandleEventExecutor implements EventExecutor {
|
||||
private final Class<? extends Event> eventClass;
|
||||
private final MethodHandle handle;
|
||||
+ private final Method method;
|
||||
|
||||
public StaticMethodHandleEventExecutor(@NotNull Class<? extends Event> eventClass, @NotNull Method m) {
|
||||
Preconditions.checkArgument(Modifier.isStatic(m.getModifiers()), "Not a static method: %s", m);
|
||||
@@ -29,6 +30,7 @@ public class StaticMethodHandleEventExecutor implements EventExecutor {
|
||||
} catch (IllegalAccessException e) {
|
||||
throw new AssertionError("Unable to set accessible", e);
|
||||
}
|
||||
+ this.method = m;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -40,4 +42,10 @@ public class StaticMethodHandleEventExecutor implements EventExecutor {
|
||||
SneakyThrow.sneaky(throwable);
|
||||
}
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ @NotNull
|
||||
+ public String toString() {
|
||||
+ return "StaticMethodHandleEventExecutor['" + this.method + "']";
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/event/HandlerList.java b/src/main/java/org/bukkit/event/HandlerList.java
|
||||
index ed78cca71f83b296d082d0af147ca8d622c7606a..2292bd460ce2be113beb4ba6b4eb19350060f01c 100644
|
||||
--- a/src/main/java/org/bukkit/event/HandlerList.java
|
||||
|
@ -35,3 +117,61 @@ index ed78cca71f83b296d082d0af147ca8d622c7606a..2292bd460ce2be113beb4ba6b4eb1935
|
|||
handlerslots = new EnumMap<EventPriority, ArrayList<RegisteredListener>>(EventPriority.class);
|
||||
for (EventPriority o : EventPriority.values()) {
|
||||
handlerslots.put(o, new ArrayList<RegisteredListener>());
|
||||
diff --git a/src/main/java/org/bukkit/plugin/EventExecutor.java b/src/main/java/org/bukkit/plugin/EventExecutor.java
|
||||
index e1860322ae0f3c35097d16767628744034941749..bdfa3b5f4ab5023d3e1b5c50bed885b6aa118a02 100644
|
||||
--- a/src/main/java/org/bukkit/plugin/EventExecutor.java
|
||||
+++ b/src/main/java/org/bukkit/plugin/EventExecutor.java
|
||||
@@ -70,9 +70,18 @@ public interface EventExecutor {
|
||||
try {
|
||||
EventExecutor asmExecutor = executorClass.newInstance();
|
||||
// Define a wrapper to conform to bukkit stupidity (passing in events that don't match and wrapper exception)
|
||||
- return (listener, event) -> {
|
||||
- if (!eventClass.isInstance(event)) return;
|
||||
- asmExecutor.execute(listener, event);
|
||||
+ return new EventExecutor() {
|
||||
+ @Override
|
||||
+ public void execute(@NotNull Listener listener, @NotNull Event event) throws EventException {
|
||||
+ if (!eventClass.isInstance(event)) return;
|
||||
+ asmExecutor.execute(listener, event);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ @NotNull
|
||||
+ public String toString() {
|
||||
+ return "ASMEventExecutor['" + m + "']";
|
||||
+ }
|
||||
};
|
||||
} catch (InstantiationException | IllegalAccessException e) {
|
||||
throw new AssertionError("Unable to initialize generated event executor", e);
|
||||
diff --git a/src/main/java/org/bukkit/plugin/RegisteredListener.java b/src/main/java/org/bukkit/plugin/RegisteredListener.java
|
||||
index 419aec56b0e3fa8bcec2ea7f340caa3456b57d00..3b3d9642a8d63798dc28f2f8df77f0466451cbff 100644
|
||||
--- a/src/main/java/org/bukkit/plugin/RegisteredListener.java
|
||||
+++ b/src/main/java/org/bukkit/plugin/RegisteredListener.java
|
||||
@@ -78,4 +78,27 @@ public class RegisteredListener {
|
||||
public boolean isIgnoringCancelled() {
|
||||
return ignoreCancelled;
|
||||
}
|
||||
+
|
||||
+ // Paper start
|
||||
+ /**
|
||||
+ * Get the executor for this registration.
|
||||
+ *
|
||||
+ * @return executor
|
||||
+ */
|
||||
+ @NotNull
|
||||
+ public EventExecutor getExecutor() {
|
||||
+ return this.executor;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public String toString() {
|
||||
+ return "RegisteredListener{"
|
||||
+ + "plugin=\"" + this.plugin.getName()
|
||||
+ + "\", listener=\"" + this.listener
|
||||
+ + "\", executor=\"" + this.executor
|
||||
+ + "\", priority=\"" + this.priority.name() + " (" + this.priority.getSlot() + ")"
|
||||
+ + "\", ignoringCancelled=" + this.ignoreCancelled
|
||||
+ + "}";
|
||||
+ }
|
||||
+ // Paper end
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue