diff --git a/src/main/java/net/minecraftforge/eventbus/api/bus/BusGroup.java b/src/main/java/net/minecraftforge/eventbus/api/bus/BusGroup.java index 3bb9559..2d06da0 100644 --- a/src/main/java/net/minecraftforge/eventbus/api/bus/BusGroup.java +++ b/src/main/java/net/minecraftforge/eventbus/api/bus/BusGroup.java @@ -89,4 +89,11 @@ static BusGroup create(String name, Class baseType) { * {@link #register(MethodHandles.Lookup, Class)} or {@link #register(MethodHandles.Lookup, Object)} */ void unregister(Collection listeners); + + /** + * Unregisters the given listener from this BusGroup. + * @param listeners The listeners to unregister, contained from the collection obtained from + * {@link #register(MethodHandles.Lookup, Class)} or {@link #register(MethodHandles.Lookup, Object)} + */ + void unregister(EventListener listeners); } diff --git a/src/main/java/net/minecraftforge/eventbus/internal/BusGroupImpl.java b/src/main/java/net/minecraftforge/eventbus/internal/BusGroupImpl.java index c8df55a..2a6fe5b 100644 --- a/src/main/java/net/minecraftforge/eventbus/internal/BusGroupImpl.java +++ b/src/main/java/net/minecraftforge/eventbus/internal/BusGroupImpl.java @@ -79,10 +79,15 @@ public void unregister(Collection listeners) { "the BusGroup#register method."); for (var listener : listeners) { - getOrCreateEventBus((Class) listener.eventType()).removeListener(listener); + unregister(listener); } } + @Override + public void unregister(EventListener listener) { + getOrCreateEventBus((Class) listener.eventType()).removeListener(listener); + } + //region Internal access only @SuppressWarnings("unchecked") private EventBus createEventBus(Class eventType) {