diff --git a/src/main/java/net/minestom/server/event/EventNode.java b/src/main/java/net/minestom/server/event/EventNode.java index d02464009..615879052 100644 --- a/src/main/java/net/minestom/server/event/EventNode.java +++ b/src/main/java/net/minestom/server/event/EventNode.java @@ -35,6 +35,8 @@ public interface EventNode { void addListener(@NotNull EventListener listener); + void removeListener(@NotNull EventListener listener); + default void addListener(@NotNull Class eventClass, @NotNull Consumer<@NotNull E> listener) { addListener(EventListener.of(eventClass).handler(listener).build()); } diff --git a/src/main/java/net/minestom/server/event/EventNodeImpl.java b/src/main/java/net/minestom/server/event/EventNodeImpl.java index 2e0add8b8..0c9b5dc16 100644 --- a/src/main/java/net/minestom/server/event/EventNodeImpl.java +++ b/src/main/java/net/minestom/server/event/EventNodeImpl.java @@ -58,6 +58,14 @@ class EventNodeImpl implements EventNode { .add((EventListener) listener); } + @Override + public void removeListener(@NotNull EventListener listener) { + var listeners = listenerMap.get(listener.type); + if (listeners == null || listeners.isEmpty()) + return; + listeners.remove(listener); + } + @Override public @NotNull String getName() { return name;