From ded94567c65115cbd8ca57f9c71cf536d6d5db6a Mon Sep 17 00:00:00 2001 From: jmp Date: Thu, 3 Dec 2020 21:06:09 -0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Add=20a=20ManagerSetting=20to=20ove?= =?UTF-8?q?rride=20existing=20commands?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../main/java/cloud/commandframework/CommandManager.java | 9 ++++++++- .../bukkit/BukkitPluginRegistrationHandler.java | 6 ++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5def0bea..cdd4e483 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 handled using `CommandManager#registerExceptionHandler`, similar to `NoSuchCommandException`, `ArgumentParseException`, etc. - Added registration state to command managers - Added ALLOW_UNSAFE_REGISTRATION ManagerSetting to disable state checks when registering commands + - Added OVERRIDE_EXISTING_COMMANDS ManagerSetting to allow for overriding of existing commands on supported platforms ### Changed - Allow for use of `@Completions` annotation with argument types other than String diff --git a/cloud-core/src/main/java/cloud/commandframework/CommandManager.java b/cloud-core/src/main/java/cloud/commandframework/CommandManager.java index f0f68f6c..5fc32cd6 100644 --- a/cloud-core/src/main/java/cloud/commandframework/CommandManager.java +++ b/cloud-core/src/main/java/cloud/commandframework/CommandManager.java @@ -870,7 +870,14 @@ public abstract class CommandManager { * * @since 1.2.0 */ - ALLOW_UNSAFE_REGISTRATION + ALLOW_UNSAFE_REGISTRATION, + + /** + * Enables overriding of existing commands on supported platforms. + * + * @since 1.2.0 + */ + OVERRIDE_EXISTING_COMMANDS } /** diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitPluginRegistrationHandler.java b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitPluginRegistrationHandler.java index 1fb7cf84..f7999c98 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitPluginRegistrationHandler.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitPluginRegistrationHandler.java @@ -24,6 +24,7 @@ package cloud.commandframework.bukkit; import cloud.commandframework.Command; +import cloud.commandframework.CommandManager; import cloud.commandframework.arguments.CommandArgument; import cloud.commandframework.arguments.StaticArgument; import cloud.commandframework.internal.CommandRegistrationHandler; @@ -89,6 +90,11 @@ public class BukkitPluginRegistrationHandler implements CommandRegistrationHa this.bukkitCommandManager ); + if (this.bukkitCommandManager.getSetting(CommandManager.ManagerSettings.OVERRIDE_EXISTING_COMMANDS)) { + this.bukkitCommands.remove(label); + aliases.forEach(alias -> this.bukkitCommands.remove(alias)); + } + for (final String alias : aliases) { final String namespacedAlias = this.getNamespacedLabel(alias);