From ed628828b5ce2cd1b000f046c81d941d3f94bef7 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Thu, 20 Aug 2015 10:57:39 +0200 Subject: [PATCH] Fix tab completion bug in ARStringCommand --- .../massivecore/cmd/arg/ARStringCommand.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/com/massivecraft/massivecore/cmd/arg/ARStringCommand.java b/src/com/massivecraft/massivecore/cmd/arg/ARStringCommand.java index bc00d0ab..2f10f429 100644 --- a/src/com/massivecraft/massivecore/cmd/arg/ARStringCommand.java +++ b/src/com/massivecraft/massivecore/cmd/arg/ARStringCommand.java @@ -6,7 +6,6 @@ import java.util.Collections; import java.util.List; import java.util.Map; -import org.apache.commons.lang.StringUtils; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.SimpleCommandMap; @@ -44,10 +43,10 @@ public class ARStringCommand extends ARAbstract { // Require base command (something at all). if (arg.isEmpty()) throw new MassiveException().addMsg("You must at the very least supply a base command."); - List args = argAsArgs(arg); + String[] args = argAsArgs(arg); // Smart management of first slash ... - String alias = args.get(0); + String alias = args[0]; // ... if there is such a command just return ... Command command = getCommand(alias); @@ -64,20 +63,20 @@ public class ARStringCommand extends ARAbstract public Collection getTabList(CommandSender sender, String arg) { // Split the arg into a list of args #inception-the-movie! - List args = argAsArgs(arg); + String[] args = argAsArgs(arg); // Tab completion of base commands - if (args.size() <= 1) return getKnownCommands().keySet(); + if (args.length <= 1) return getKnownCommands().keySet(); // Get command alias and subargs - String alias = args.get(0); + String alias = args[0]; // Attempt using the tab completion of that command. Command command = getCommandSmart(alias); if (command == null) return Collections.emptySet(); - List subcompletions = command.tabComplete(sender, alias, args.subList(1, args.size()).toArray(new String[0])); + List subcompletions = command.tabComplete(sender, alias, Arrays.copyOfRange(args, 1, args.length)); - String prefix = Txt.implode(args.subList(0, args.size() - 1), " ") + " "; + String prefix = Txt.implode(Arrays.copyOfRange(args, 0, args.length-1), " ") + " "; List ret = new MassiveList(); for (String subcompletion : subcompletions) @@ -89,14 +88,19 @@ public class ARStringCommand extends ARAbstract return ret; } + @Override + public boolean allowSpaceAfterTab() + { + return false; + } + // -------------------------------------------- // // UTIL // -------------------------------------------- // - public static List argAsArgs(String arg) + public static String[] argAsArgs(String arg) { - String[] args = StringUtils.split(arg, ' '); - return new MassiveList(Arrays.asList(args)); + return arg.split(" ", -1); } public static Map getKnownCommands()