diff --git a/pom.xml b/pom.xml
index 6a99b27..f8b6b7c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
dev.unlegitdqrk
unlegitlibrary
- 1.7.0
+ 1.7.1
https://unlegitdqrk.dev/
Just a big library
diff --git a/src/main/java/dev/unlegitdqrk/unlegitlibrary/event/EventManager.java b/src/main/java/dev/unlegitdqrk/unlegitlibrary/event/EventManager.java
index f871410..3d3b9d0 100644
--- a/src/main/java/dev/unlegitdqrk/unlegitlibrary/event/EventManager.java
+++ b/src/main/java/dev/unlegitdqrk/unlegitlibrary/event/EventManager.java
@@ -18,9 +18,20 @@ public final class EventManager extends DefaultMethodsOverrider {
public void registerListener(Class extends EventListener> listenerClass) throws Exception {
if (isListenerRegistered(listenerClass)) return;
- Object instance = listenerClass.getDeclaredConstructor().newInstance();
+ EventListener instance = listenerClass.getDeclaredConstructor().newInstance();
+ registerListenerInstance(instance);
+ }
- for (Method method : listenerClass.getDeclaredMethods()) {
+ public void registerListener(EventListener listenerInstance) {
+ if (listenerInstance == null) throw new IllegalArgumentException("Listener instance cannot be null");
+ Class extends EventListener> listenerClass = listenerInstance.getClass();
+ if (isListenerRegistered(listenerClass)) return;
+
+ registerListenerInstance(listenerInstance);
+ }
+
+ private void registerListenerInstance(Object instance) {
+ for (Method method : instance.getClass().getDeclaredMethods()) {
Listener listenerAnnotation = method.getAnnotation(Listener.class);
if (listenerAnnotation == null || method.getParameterCount() != 1) continue;
@@ -37,7 +48,7 @@ public final class EventManager extends DefaultMethodsOverrider {
.put(instance, method);
}
- eventListeners.put(listenerClass, instance);
+ eventListeners.put((Class extends EventListener>) instance.getClass(), instance);
}
public synchronized void unregisterListener(Class extends EventListener> listenerClass) {
@@ -51,7 +62,6 @@ public final class EventManager extends DefaultMethodsOverrider {
}
}
- // Clean up empty entries
registeredListener.entrySet().removeIf(e ->
e.getValue().values().stream().allMatch(Map::isEmpty));