diff --git a/pom.xml b/pom.xml
index e0cc23b..16f0139 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
me.finn.unlegitlibrary
unlegitlibrary
- 1.5.12
+ 1.5.13
1.8
diff --git a/src/main/java/me/finn/unlegitlibrary/addon/AddonLoader.java b/src/main/java/me/finn/unlegitlibrary/addon/AddonLoader.java
index 842894a..7db9032 100644
--- a/src/main/java/me/finn/unlegitlibrary/addon/AddonLoader.java
+++ b/src/main/java/me/finn/unlegitlibrary/addon/AddonLoader.java
@@ -85,12 +85,12 @@ public class AddonLoader extends DefaultMethodsOverrider {
addons.forEach(this::disableAddon);
}
- public final void registerEventListener(Addon addon, Class extends EventListener> eventListener) throws InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchMethodException {
+ public final void registerEventListener(Addon addon, EventListener eventListener) throws InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchMethodException {
if (!addons.contains(addon)) return;
addon.registerEventListener(eventListener);
}
- public final void unregisterEventListener(Addon addon, Class extends EventListener> eventListener) {
+ public final void unregisterEventListener(Addon addon, EventListener eventListener) {
if (!addons.contains(addon)) return;
addon.unregisterEventListener(eventListener);
}
diff --git a/src/main/java/me/finn/unlegitlibrary/addon/impl/Addon.java b/src/main/java/me/finn/unlegitlibrary/addon/impl/Addon.java
index 9f8503c..5aafdb0 100644
--- a/src/main/java/me/finn/unlegitlibrary/addon/impl/Addon.java
+++ b/src/main/java/me/finn/unlegitlibrary/addon/impl/Addon.java
@@ -40,11 +40,11 @@ public abstract class Addon {
eventManager.executeEvent(event);
}
- public final void registerEventListener(Class extends EventListener> eventListener) throws InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchMethodException {
+ public final void registerEventListener(EventListener eventListener) throws InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchMethodException {
eventManager.registerListener(eventListener);
}
- public final void unregisterEventListener(Class extends EventListener> eventListener) {
+ public final void unregisterEventListener(EventListener eventListener) {
eventManager.unregisterListener(eventListener);
}
diff --git a/src/main/java/me/finn/unlegitlibrary/command/Command.java b/src/main/java/me/finn/unlegitlibrary/command/Command.java
index 97cf9d8..172adc7 100644
--- a/src/main/java/me/finn/unlegitlibrary/command/Command.java
+++ b/src/main/java/me/finn/unlegitlibrary/command/Command.java
@@ -8,6 +8,7 @@
package me.finn.unlegitlibrary.command;
+import javax.management.InstanceAlreadyExistsException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -29,13 +30,17 @@ public abstract class Command {
return new ArrayList<>(aliases);
}
- public Command(CommandManager commandManager, String name, String description, String usage, List permissions, List aliases) {
+ public Command(CommandManager commandManager, String name, String description, String usage, List permissions, List aliases) throws InstanceAlreadyExistsException {
this.commandManager = commandManager;
this.name = name;
this.description = description;
this.usage = usage;
this.permissions = permissions;
this.aliases = aliases;
+
+ boolean exists = commandManager.getCommand(name) != null;
+ if (!exists) for (String alias : aliases) exists = commandManager.getCommand(alias) != null;
+ if (exists) throw new InstanceAlreadyExistsException("Command with this name or some alias alreadx exists!");
}
public abstract void execute(CommandExecutor commandExecutor, String label, String[] args);
diff --git a/src/main/java/me/finn/unlegitlibrary/event/EventManager.java b/src/main/java/me/finn/unlegitlibrary/event/EventManager.java
index c3c4799..9663125 100644
--- a/src/main/java/me/finn/unlegitlibrary/event/EventManager.java
+++ b/src/main/java/me/finn/unlegitlibrary/event/EventManager.java
@@ -21,14 +21,12 @@ import java.util.Map;
public class EventManager extends DefaultMethodsOverrider {
private final HashMap, HashMap>> registeredListener = new HashMap<>();
- private final HashMap, Object> eventListeners = new HashMap<>();
+ private final HashMap eventListeners = new HashMap<>();
- public final void registerListener(Class extends EventListener> listenerClass) throws InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
+ public final void registerListener(EventListener listenerClass) throws InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
if (isListenerRegistered(listenerClass)) return;
- Object clazz = listenerClass.getDeclaredConstructor().newInstance();
-
- for (Method method : clazz.getClass().getDeclaredMethods()) {
+ for (Method method : listenerClass.getClass().getDeclaredMethods()) {
Listener listener = method.getAnnotation(Listener.class);
if (listener == null) continue;
@@ -39,16 +37,16 @@ public class EventManager extends DefaultMethodsOverrider {
HashMap> list = registeredListener.getOrDefault(eventClass, new HashMap<>());
HashMap