From f127cc874fbc8f1b51289b3ca4dac172de8f918e Mon Sep 17 00:00:00 2001 From: Aikar Date: Sat, 29 Apr 2017 21:15:00 -0400 Subject: [PATCH] Improve Command Completions! --- src/main/java/co/aikar/commands/BaseCommand.java | 9 ++++----- .../java/co/aikar/commands/RegisteredCommand.java | 12 ++++++------ 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/main/java/co/aikar/commands/BaseCommand.java b/src/main/java/co/aikar/commands/BaseCommand.java index 45232b6f..0fbac19f 100644 --- a/src/main/java/co/aikar/commands/BaseCommand.java +++ b/src/main/java/co/aikar/commands/BaseCommand.java @@ -347,15 +347,14 @@ public abstract class BaseCommand extends Command { final CommandSearch search = findSubCommand(args, true); - if (search != null) { - args = Arrays.copyOfRange(args, search.argIndex, args.length); - return completeCommand(sender, search.cmd, args, commandLabel); - } - String argString = StringUtils.join(args, " ").toLowerCase(); final List cmds = new ArrayList<>(); + if (search != null) { + cmds.addAll(completeCommand(sender, search.cmd, Arrays.copyOfRange(args, search.argIndex, args.length), commandLabel)); + } + for (Map.Entry entry : subCommands.entries()) { final String key = entry.getKey(); if (key.startsWith(argString) && !"__unknown".equals(key) && !"__default".equals(key)) { diff --git a/src/main/java/co/aikar/commands/RegisteredCommand.java b/src/main/java/co/aikar/commands/RegisteredCommand.java index 1c1c09c8..c678caa6 100644 --- a/src/main/java/co/aikar/commands/RegisteredCommand.java +++ b/src/main/java/co/aikar/commands/RegisteredCommand.java @@ -91,13 +91,13 @@ public class RegisteredCommand { if (resolver != null) { resolvers[i] = resolver; - if (resolver instanceof SenderAwareContextResolver || parameter.getAnnotation(Optional.class) != null - || parameter.getAnnotation(Default.class) != null) { - optionalResolvers++; - } else { - nonSenderAwareResolvers++; - } if (!CommandSender.class.isAssignableFrom(parameter.getType())) { + if (resolver instanceof SenderAwareContextResolver || parameter.getAnnotation(Optional.class) != null + || parameter.getAnnotation(Default.class) != null) { + optionalResolvers++; + } else { + nonSenderAwareResolvers++; + } if (parameter.getAnnotation(Default.class) != null || parameter.getAnnotation(Optional.class) != null || resolver instanceof SenderAwareContextResolver) {