diff --git a/src/main/java/net/minestom/server/event/EventNode.java b/src/main/java/net/minestom/server/event/EventNode.java index 783a37adb..a9941885d 100644 --- a/src/main/java/net/minestom/server/event/EventNode.java +++ b/src/main/java/net/minestom/server/event/EventNode.java @@ -201,17 +201,11 @@ public class EventNode { } public EventNode addListener(@NotNull EventListener listener) { - synchronized (GLOBAL_CHILD_LOCK) { - final var eventType = listener.getEventType(); - this.listenerMap.computeIfAbsent(eventType, aClass -> new CopyOnWriteArrayList<>()) - .add((EventListener) listener); - if (parent != null) { - synchronized (parent.lock) { - parent.increaseListenerCount(eventType, 1); - } - } - } - return this; + return addListener0(listener); + } + + public EventNode addListener(@NotNull Class eventType, @NotNull Consumer<@NotNull E> listener) { + return addListener0(EventListener.of(eventType, listener)); } public EventNode removeListener(@NotNull EventListener listener) { @@ -230,10 +224,6 @@ public class EventNode { return this; } - public EventNode addListener(@NotNull Class eventType, @NotNull Consumer<@NotNull E> listener) { - return addListener(EventListener.of(eventType, listener)); - } - public EventNode map(@NotNull Object value, @NotNull EventNode node) { this.redirectionMap.put(value, (EventNode) node); return this; @@ -248,6 +238,20 @@ public class EventNode { return name; } + private EventNode addListener0(@NotNull EventListener listener) { + synchronized (GLOBAL_CHILD_LOCK) { + final var eventType = listener.getEventType(); + this.listenerMap.computeIfAbsent(eventType, aClass -> new CopyOnWriteArrayList<>()) + .add((EventListener) listener); + if (parent != null) { + synchronized (parent.lock) { + parent.increaseListenerCount(eventType, 1); + } + } + } + return this; + } + private void increaseListenerCount(Class eventClass, int count) { final int current = childEventMap.getInt(eventClass); final int result = current + count;