diff --git a/src/main/java/co/aikar/commands/AikarTiming.java b/src/main/java/co/aikar/commands/AikarTiming.java index b2ec6fff..82424d14 100644 --- a/src/main/java/co/aikar/commands/AikarTiming.java +++ b/src/main/java/co/aikar/commands/AikarTiming.java @@ -23,9 +23,23 @@ package co.aikar.commands; -public class AikarTiming extends SpigotTiming {// TODO: Extend CommandTiming once migrated to v2 - public AikarTiming(BaseCommand command, String name) { - super(command, name); - // TODO: Take plugin from BaseCommand and use Timing.of(plugin, name) and use Timing class +import co.aikar.timings.Timing; +import co.aikar.timings.Timings; + +public class AikarTiming implements CommandTiming { + private final Timing timing; + AikarTiming(BaseCommand command, String name) { + super(); + this.timing = Timings.of(command.getPlugin(), name); + } + + @Override + public void startTiming() { + timing.startTiming(); + } + + @Override + public void stopTiming() { + timing.stopTiming(); } } diff --git a/src/main/java/co/aikar/commands/BaseCommand.java b/src/main/java/co/aikar/commands/BaseCommand.java index a5a722b1..7bb81126 100644 --- a/src/main/java/co/aikar/commands/BaseCommand.java +++ b/src/main/java/co/aikar/commands/BaseCommand.java @@ -37,6 +37,7 @@ 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; @@ -52,17 +53,25 @@ import java.util.stream.Collectors; public abstract class BaseCommand extends Command { private final SetMultimap subCommands = HashMultimap.create(); + private final Plugin plugin; + @SuppressWarnings("WeakerAccess") protected String execLabel; + @SuppressWarnings("WeakerAccess") protected String execSubcommand; + @SuppressWarnings("WeakerAccess") protected String[] origArgs; - public BaseCommand() { - this(null); + public BaseCommand(Plugin plugin) { + this(plugin, null); } - public BaseCommand(String cmd) { + public BaseCommand(Plugin plugin, String cmd) { super(cmd); + if (plugin == null) { + throw new IllegalArgumentException("Plugin can not be null"); + } + this.plugin = plugin; final Class self = this.getClass(); CommandAlias rootCmdAlias = self.getAnnotation(CommandAlias.class); if (cmd == null) { @@ -131,7 +140,7 @@ public abstract class BaseCommand extends Command { } private boolean register(String name, Command cmd) { - return Bukkit.getServer().getCommandMap().register(name.toLowerCase(), "empire", cmd); + return Bukkit.getServer().getCommandMap().register(name.toLowerCase(), plugin.getName().toLowerCase(), cmd); } private void registerSubcommand(Method method, String subCommand) { @@ -405,6 +414,11 @@ public abstract class BaseCommand extends Command { CommandUtil.sendMsg(sender, "&cUsage: /" + cmd.command + " " + cmd.syntax); } + + public Plugin getPlugin() { + return plugin; + } + /*@Data*/ /*@AllArgsConstructor*/ private static class CommandSearch { RegisteredCommand cmd; int argIndex; String checkSub; diff --git a/src/main/java/co/aikar/commands/CommandTiming.java b/src/main/java/co/aikar/commands/CommandTiming.java index 90e336e2..023c14b3 100644 --- a/src/main/java/co/aikar/commands/CommandTiming.java +++ b/src/main/java/co/aikar/commands/CommandTiming.java @@ -23,14 +23,7 @@ package co.aikar.commands; -public abstract class CommandTiming { - private final BaseCommand command; - - CommandTiming(BaseCommand command) { - - this.command = command; - } - - public abstract void startTiming(); - public abstract void stopTiming(); +public interface CommandTiming { + void startTiming(); + void stopTiming(); } diff --git a/src/main/java/co/aikar/commands/CommandUtil.java b/src/main/java/co/aikar/commands/CommandUtil.java index 7d30f27a..ce2eef5d 100644 --- a/src/main/java/co/aikar/commands/CommandUtil.java +++ b/src/main/java/co/aikar/commands/CommandUtil.java @@ -881,8 +881,8 @@ public final class CommandUtil { } if (hasTimings > 0) { final String name = "Command: " + command; - return hasTimings == 1 ? new AikarTiming(cmd, name): new SpigotTiming(cmd, name); + return hasTimings == 1 ? new AikarTiming(cmd, name): new SpigotTiming(name); } - return new EmptyTiming(cmd); + return new EmptyTiming(); } } diff --git a/src/main/java/co/aikar/commands/EmptyTiming.java b/src/main/java/co/aikar/commands/EmptyTiming.java index 8dc56929..c035ce60 100644 --- a/src/main/java/co/aikar/commands/EmptyTiming.java +++ b/src/main/java/co/aikar/commands/EmptyTiming.java @@ -23,9 +23,9 @@ package co.aikar.commands; -public class EmptyTiming extends CommandTiming { - EmptyTiming(BaseCommand command) { - super(command); +public class EmptyTiming implements CommandTiming { + EmptyTiming() { + super(); } @Override diff --git a/src/main/java/co/aikar/commands/SpigotTiming.java b/src/main/java/co/aikar/commands/SpigotTiming.java index 6f1faed6..9419ba0b 100644 --- a/src/main/java/co/aikar/commands/SpigotTiming.java +++ b/src/main/java/co/aikar/commands/SpigotTiming.java @@ -25,11 +25,11 @@ package co.aikar.commands; import org.spigotmc.CustomTimingsHandler; -public class SpigotTiming extends CommandTiming { +public class SpigotTiming implements CommandTiming { private final CustomTimingsHandler timing; - SpigotTiming(BaseCommand command, String name) { - super(command); + SpigotTiming(String name) { + super(); this.timing = new CustomTimingsHandler(name); }