diff --git a/src/main/java/co/aikar/commands/BaseCommand.java b/src/main/java/co/aikar/commands/BaseCommand.java index 3bca7d4c..0a3accf1 100644 --- a/src/main/java/co/aikar/commands/BaseCommand.java +++ b/src/main/java/co/aikar/commands/BaseCommand.java @@ -32,13 +32,10 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.SetMultimap; -import jdk.nashorn.internal.runtime.Timing; import org.apache.commons.lang.StringUtils; -import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.configuration.InvalidConfigurationException; -import org.bukkit.plugin.Plugin; import org.bukkit.util.StringUtil; import java.lang.reflect.Method; @@ -72,8 +69,13 @@ public abstract class BaseCommand extends Command { public BaseCommand(String cmd) { super(cmd); + } + + public void onRegister(CommandManager manager) { + this.manager = manager; final Class self = this.getClass(); CommandAlias rootCmdAlias = self.getAnnotation(CommandAlias.class); + String cmd = this.getName(); if (cmd == null) { if (rootCmdAlias == null) { cmd = "__" + self.getSimpleName(); @@ -132,7 +134,7 @@ public abstract class BaseCommand extends Command { Collections.addAll(cmdList, CommandPatterns.PIPE.split(rootCmdAlias.value().toLowerCase())); cmdList.remove(cmd); for (String cmdAlias : cmdList) { - register(cmdAlias, new ForwardingCommand(this)); + register(cmdAlias, new ForwardingCommand(this)); } } diff --git a/src/main/java/co/aikar/commands/BukkitCommandManager.java b/src/main/java/co/aikar/commands/BukkitCommandManager.java index 4eab4896..26848a16 100644 --- a/src/main/java/co/aikar/commands/BukkitCommandManager.java +++ b/src/main/java/co/aikar/commands/BukkitCommandManager.java @@ -64,9 +64,9 @@ public class BukkitCommandManager implements CommandManager { @Override public boolean registerCommand(BaseCommand command) { - command.manager = this; final String plugin = this.plugin.getName().toLowerCase(); final CommandMap commandMap = Bukkit.getServer().getCommandMap(); + command.onRegister(this); boolean allSuccess = true; for (Map.Entry entry : command.registeredCommands.entrySet()) { if (!commandMap.register(entry.getKey().toLowerCase(), plugin, entry.getValue())) { diff --git a/src/main/java/co/aikar/commands/RegisteredCommand.java b/src/main/java/co/aikar/commands/RegisteredCommand.java index ede2ba79..4a5b0173 100644 --- a/src/main/java/co/aikar/commands/RegisteredCommand.java +++ b/src/main/java/co/aikar/commands/RegisteredCommand.java @@ -75,14 +75,18 @@ public class RegisteredCommand { this.parameters = method.getParameters(); this.resolvers = new ContextResolver[this.parameters.length]; final Syntax syntaxStr = method.getAnnotation(Syntax.class); + final CommandManager manager = scope.manager; + final CommandContexts commandContexts = manager.getCommandContexts(); int nonSenderAwareResolvers = 0; int optionalResolvers = 0; StringBuilder syntaxB = new StringBuilder(64); + for (int i = 0; i < parameters.length; i++) { final Parameter parameter = parameters[i]; final Class type = parameter.getType(); - final ContextResolver resolver = scope.manager.getCommandContexts().getResolver(type); + + final ContextResolver resolver = commandContexts.getResolver(type); if (resolver != null) { resolvers[i] = resolver;