From 58f49033ce80893a178d4a4a08b9fdc8ad65ede0 Mon Sep 17 00:00:00 2001 From: jmp Date: Mon, 18 Jan 2021 02:02:33 -0800 Subject: [PATCH] Use Command instead of TabCompleteEvent on Bukkit --- CHANGELOG.md | 3 ++ .../bukkit/BukkitCommand.java | 16 ++++++++++ .../bukkit/CloudBukkitListener.java | 31 ------------------- 3 files changed, 19 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff293169..f44d865f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + - Use Command instead of TabCompleteEvent on Bukkit + ## [1.4.0] - 2021-01-16 ### Added diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommand.java b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommand.java index 44845cea..3a8e23ea 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommand.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommand.java @@ -76,6 +76,22 @@ final class BukkitCommand extends org.bukkit.command.Command implements Plugi } } + @Override + public List tabComplete( + final @NonNull CommandSender sender, + final @NonNull String alias, + final @NonNull String @NonNull [] args + ) throws IllegalArgumentException { + final StringBuilder builder = new StringBuilder(this.command.getName()); + for (final String string : args) { + builder.append(" ").append(string); + } + return this.manager.suggest( + this.manager.getCommandSenderMapper().apply(sender), + builder.toString() + ); + } + @Override public boolean execute( final @NonNull CommandSender commandSender, diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/CloudBukkitListener.java b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/CloudBukkitListener.java index 7fb8a2b7..27188306 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/CloudBukkitListener.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/CloudBukkitListener.java @@ -42,37 +42,6 @@ final class CloudBukkitListener implements Listener { this.bukkitCommandManager = bukkitCommandManager; } - @EventHandler - void onTabCompletion(final @NonNull TabCompleteEvent event) { - if (event.getBuffer().isEmpty()) { - return; - } - - @SuppressWarnings("unchecked") - final BukkitPluginRegistrationHandler bukkitPluginRegistrationHandler = - (BukkitPluginRegistrationHandler) this.bukkitCommandManager.getCommandRegistrationHandler(); - - /* Turn '(/)plugin:command arg1 arg2 ...' into 'plugin:command' */ - final String commandLabel = (event.getBuffer().startsWith("/") - ? event.getBuffer().substring(1) - : event.getBuffer()) - .split(" ")[0]; - if (!bukkitPluginRegistrationHandler.isRecognized(commandLabel)) { - return; - } - - final CommandSender sender = event.getSender(); - final C cloudSender = this.bukkitCommandManager.getCommandSenderMapper().apply(sender); - final String inputBuffer = this.bukkitCommandManager.stripNamespace(event.getBuffer()); - - final List suggestions = new ArrayList<>(this.bukkitCommandManager.suggest( - cloudSender, - inputBuffer - )); - - event.setCompletions(suggestions); - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) void onPlayerLogin(final @NonNull PlayerLoginEvent event) { /* If the server is brigadier-capable, any registration after players