From b68b0cb0f6468d9b085338d271ab6d1e6dbff3d8 Mon Sep 17 00:00:00 2001 From: zaaarf Date: Wed, 23 Aug 2023 23:50:24 +0200 Subject: feat: unregisterListener --- src/main/java/ftbsc/geb/GEB.java | 9 +++++++++ src/main/java/ftbsc/geb/api/IBus.java | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/src/main/java/ftbsc/geb/GEB.java b/src/main/java/ftbsc/geb/GEB.java index 31a88c0..4d802f6 100644 --- a/src/main/java/ftbsc/geb/GEB.java +++ b/src/main/java/ftbsc/geb/GEB.java @@ -43,6 +43,15 @@ public class GEB implements IBus { this.listenerMap.put(listener.getClass(), listener); } + /** + * Unregister a listener from the bus. + * @param listener the listener + */ + @Override + public void unregisterListener(IListener listener) { + this.listenerMap.remove(listener.getClass()); + } + /** * Dispatches an event, calling all of its listeners that are subscribed to this bus. * @param event the event to fire diff --git a/src/main/java/ftbsc/geb/api/IBus.java b/src/main/java/ftbsc/geb/api/IBus.java index 6a56243..f27004b 100644 --- a/src/main/java/ftbsc/geb/api/IBus.java +++ b/src/main/java/ftbsc/geb/api/IBus.java @@ -12,6 +12,15 @@ public interface IBus { */ void registerListener(IListener listener); + /** + * Unregister a listener from the bus. + * While sensible implementations can get this quite fast, it's generally + * faster to use {@link IListener#isActive()}, so only use this if you + * *mean* to unregister for good. + * @param listener the listener + */ + void unregisterListener(IListener listener); + /** * Dispatches an event, calling all of its listeners that are subscribed to this bus. * @param event the event to fire -- cgit v1.2.3-56-ga3b1