diff --git a/src/main/java/net/frankheijden/serverutils/managers/PluginManager.java b/src/main/java/net/frankheijden/serverutils/managers/PluginManager.java index d42b73d..53044b0 100644 --- a/src/main/java/net/frankheijden/serverutils/managers/PluginManager.java +++ b/src/main/java/net/frankheijden/serverutils/managers/PluginManager.java @@ -46,6 +46,7 @@ public class PluginManager { try { Bukkit.getPluginManager().disablePlugin(plugin); RSimplePluginManager.getPlugins(Bukkit.getPluginManager()).remove(plugin); + RSimplePluginManager.removeLookupName(Bukkit.getPluginManager(), plugin.getName()); } catch (Exception ex) { ex.printStackTrace(); return Result.ERROR; diff --git a/src/main/java/net/frankheijden/serverutils/reflection/RSimplePluginManager.java b/src/main/java/net/frankheijden/serverutils/reflection/RSimplePluginManager.java index 00130f4..57f5c77 100644 --- a/src/main/java/net/frankheijden/serverutils/reflection/RSimplePluginManager.java +++ b/src/main/java/net/frankheijden/serverutils/reflection/RSimplePluginManager.java @@ -4,11 +4,11 @@ import org.bukkit.plugin.Plugin; import org.bukkit.plugin.SimplePluginManager; import java.lang.reflect.Field; -import java.util.List; -import java.util.Map; +import java.util.*; import static net.frankheijden.serverutils.reflection.ReflectionUtils.FieldParam.fieldOf; import static net.frankheijden.serverutils.reflection.ReflectionUtils.VersionParam.ALL_VERSIONS; +import static net.frankheijden.serverutils.reflection.ReflectionUtils.get; import static net.frankheijden.serverutils.reflection.ReflectionUtils.getAllFields; public class RSimplePluginManager { @@ -20,7 +20,8 @@ public class RSimplePluginManager { try { simplePluginManagerClass = SimplePluginManager.class; fields = getAllFields(simplePluginManagerClass, - fieldOf("plugins", ALL_VERSIONS)); + fieldOf("plugins", ALL_VERSIONS), + fieldOf("lookupNames", ALL_VERSIONS)); } catch (Exception ex) { ex.printStackTrace(); } @@ -30,4 +31,12 @@ public class RSimplePluginManager { public static List getPlugins(Object manager) throws IllegalAccessException { return (List) fields.get("plugins").get(manager); } + + @SuppressWarnings("unchecked") + public static void removeLookupName(Object manager, String name) throws IllegalAccessException { + Map lookupNames = (Map) get(fields, manager, "lookupNames"); + if (lookupNames == null) return; + lookupNames.remove(name.replace(' ', '_')); + lookupNames.remove(name.replace(' ', '_').toLowerCase(Locale.ENGLISH)); // Paper + } }