summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPepich <benedikt.abel@yahoo.de>2017-03-30 00:56:42 +0200
committerPepich <benedikt.abel@yahoo.de>2017-03-30 00:56:42 +0200
commit570e627330af7968b10e989ec276bb693942ed6d (patch)
treee7b2cc216225c7059930aeb636d2d9b81b03596e
parent49e7a1b28dbeeab5a4f1e385c433f83260d1637b (diff)
Made Executable able to override existing commands
-rw-r--r--src/main/java/com/nemez/cmdmgr/util/Executable.java6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/main/java/com/nemez/cmdmgr/util/Executable.java b/src/main/java/com/nemez/cmdmgr/util/Executable.java
index 01c2dc4..bfd608b 100644
--- a/src/main/java/com/nemez/cmdmgr/util/Executable.java
+++ b/src/main/java/com/nemez/cmdmgr/util/Executable.java
@@ -5,6 +5,7 @@ import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Map;
import java.util.logging.Level;
import org.bukkit.Bukkit;
@@ -88,6 +89,11 @@ public class Executable extends org.bukkit.command.Command {
final Field cmdMap = Bukkit.getServer().getClass().getDeclaredField("commandMap");
cmdMap.setAccessible(true);
CommandMap map = (CommandMap) cmdMap.get(Bukkit.getServer());
+ final Field knownCommandsField = map.getClass().getDeclaredField("knownCommands");
+ knownCommandsField.setAccessible(true);
+ @SuppressWarnings("unchecked")
+ Map<String, Command> knownCommands = (Map<String, Command>) knownCommandsField.get(map);
+ knownCommands.remove(name);
map.register(name, this);
} catch (Exception e) {
plugin.getLogger().log(Level.SEVERE, "Failed to register command '" + name + "'!");