Merge pull request #52 from FrankHeijden/fix/bukkit-command-unloading

Fix bukkit command unloading
This commit is contained in:
Frank van der Heijden 2022-06-21 22:39:05 +02:00 committed by GitHub
commit af68c052c8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -251,15 +251,28 @@ public class BukkitPluginManager extends AbstractPluginManager<Plugin, BukkitPlu
unregisterCommands(getPluginCommands(plugin)); unregisterCommands(getPluginCommands(plugin));
} }
private static void unregisterCommands(Map<String, ? extends Command> pluginCommands) { private static void unregisterCommands(Map<String, ? extends Command> commands) {
pluginCommands.values().forEach(c -> c.unregister(RCraftServer.getCommandMap())); commands.values().forEach(c -> {
RCommandDispatcher.removeCommands(pluginCommands.keySet()); if (c instanceof PluginCommand) {
PluginCommand pluginCommand = (PluginCommand) c;
pluginCommand.setExecutor(null);
pluginCommand.setTabCompleter(null);
}
c.unregister(RCraftServer.getCommandMap());
});
RCommandDispatcher.removeCommands(commands.keySet());
Map<String, Command> knownCommands = getKnownCommands();
if (knownCommands == null) return;
knownCommands.values().removeIf(c -> c.equals(commands.get(c.getName().toLowerCase())));
} }
/** /**
* Unregisters all the specified PluginCommand's. * Unregisters all the specified PluginCommand's.
* @deprecated Use {@link BukkitPluginManager#unregisterCommands(Map)} instead.
* @param pluginCommands The commands to unregister. * @param pluginCommands The commands to unregister.
*/ */
@Deprecated
public static void unregisterCommands(Collection<? extends PluginCommand> pluginCommands) { public static void unregisterCommands(Collection<? extends PluginCommand> pluginCommands) {
Map<String, Command> knownCommands = getKnownCommands(); Map<String, Command> knownCommands = getKnownCommands();
if (knownCommands == null) return; if (knownCommands == null) return;