From dbdafed2730785a7870c75f2fccee149f44a8c75 Mon Sep 17 00:00:00 2001 From: jmp Date: Tue, 27 Oct 2020 11:15:46 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20Bukkit=20alias=20command?= =?UTF-8?q?=20suggestions=20without=20Brigadier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../CommandSuggestionsTest.java | 11 ++++- .../BukkitPluginRegistrationHandler.java | 47 +++++++++---------- .../minecraft/extras/MinecraftHelp.java | 2 +- 4 files changed, 35 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59b52f4c..8bf8faeb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Use the correct default range for Double and Float parsers in the StandardParserRegistry + - Fix Bukkit alias command suggestions without Brigadier ## [1.1.0] - 2020-10-24 diff --git a/cloud-core/src/test/java/cloud/commandframework/CommandSuggestionsTest.java b/cloud-core/src/test/java/cloud/commandframework/CommandSuggestionsTest.java index 24747878..7314d594 100644 --- a/cloud-core/src/test/java/cloud/commandframework/CommandSuggestionsTest.java +++ b/cloud-core/src/test/java/cloud/commandframework/CommandSuggestionsTest.java @@ -42,7 +42,7 @@ public class CommandSuggestionsTest { @BeforeAll static void setupManager() { manager = new TestCommandManager(); - manager.command(manager.commandBuilder("test").literal("one").build()); + manager.command(manager.commandBuilder("test", "testalias").literal("one").build()); manager.command(manager.commandBuilder("test").literal("two").build()); manager.command(manager.commandBuilder("test") .literal("var") @@ -92,6 +92,15 @@ public class CommandSuggestionsTest { .argument(IntegerArgument.newBuilder("num").withMin(5).withMax(100))); } + @Test + void testRootAliases() { + final String input = "test "; + final List suggestions = manager.suggest(new TestCommandSender(), input); + final String input2 = "testalias "; + final List suggestions2 = manager.suggest(new TestCommandSender(), input2); + Assertions.assertEquals(suggestions, suggestions2); + } + @Test void testSimple() { final String input = "test"; 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 212feb67..399f7402 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 @@ -88,6 +88,29 @@ public class BukkitPluginRegistrationHandler implements CommandRegistrationHa (CommandArgument) commandArgument, this.bukkitCommandManager ); + + for (final String alias : aliases) { + this.recognizedAliases.add(getNamespacedLabel(alias)); + if (!this.bukkitCommands.containsKey(alias)) { + this.recognizedAliases.add(alias); + if (this.bukkitCommandManager.getSplitAliases()) { + @SuppressWarnings("unchecked") final BukkitCommand aliasCommand = new BukkitCommand<>( + alias, + Collections.emptyList(), + (Command) command, + (CommandArgument) commandArgument, + this.bukkitCommandManager + ); + this.commandMap.register( + alias, + this.bukkitCommandManager.getOwningPlugin().getName().toLowerCase(), + bukkitCommand + ); + this.registerExternal(alias, command, aliasCommand); + } + } + } + this.registeredCommands.put(commandArgument, bukkitCommand); if (!this.bukkitCommands.containsKey(label)) { this.recognizedAliases.add(label); @@ -100,30 +123,6 @@ public class BukkitPluginRegistrationHandler implements CommandRegistrationHa ); this.registerExternal(label, command, bukkitCommand); - if (this.bukkitCommandManager.getSplitAliases()) { - for (final String alias : aliases) { - if (!this.bukkitCommands.containsKey(alias)) { - @SuppressWarnings("unchecked") final BukkitCommand aliasCommand = new BukkitCommand<>( - alias, - Collections.emptyList(), - (Command) command, - (CommandArgument) commandArgument, - this.bukkitCommandManager - ); - if (!this.bukkitCommands.containsKey(alias)) { - this.recognizedAliases.add(alias); - } - this.recognizedAliases.add(getNamespacedLabel(alias)); - this.commandMap.register( - alias, - this.bukkitCommandManager.getOwningPlugin().getName().toLowerCase(), - bukkitCommand - ); - this.registerExternal(alias, command, aliasCommand); - } - } - } - return true; } diff --git a/cloud-minecraft/cloud-minecraft-extras/src/main/java/cloud/commandframework/minecraft/extras/MinecraftHelp.java b/cloud-minecraft/cloud-minecraft-extras/src/main/java/cloud/commandframework/minecraft/extras/MinecraftHelp.java index bc3f45e2..449a7bdf 100644 --- a/cloud-minecraft/cloud-minecraft-extras/src/main/java/cloud/commandframework/minecraft/extras/MinecraftHelp.java +++ b/cloud-minecraft/cloud-minecraft-extras/src/main/java/cloud/commandframework/minecraft/extras/MinecraftHelp.java @@ -642,7 +642,7 @@ public final class MinecraftHelp { * @param accent The color used for accents and symbols * @return A new {@link HelpColors} instance */ - public static HelpColors of( + public static @NonNull HelpColors of( final @NonNull TextColor primary, final @NonNull TextColor highlight, final @NonNull TextColor alternateHighlight,