diff --git a/src/main/java/net/nuggetmc/ai/bot/BotManager.java b/src/main/java/net/nuggetmc/ai/bot/BotManager.java index 62af1e9..6687077 100644 --- a/src/main/java/net/nuggetmc/ai/bot/BotManager.java +++ b/src/main/java/net/nuggetmc/ai/bot/BotManager.java @@ -44,5 +44,4 @@ public class BotManager implements Listener { bot.render(connection, true); } } - } diff --git a/src/main/java/net/nuggetmc/ai/commands/CommandHandler.java b/src/main/java/net/nuggetmc/ai/commands/CommandHandler.java index a7257a4..fef8f25 100644 --- a/src/main/java/net/nuggetmc/ai/commands/CommandHandler.java +++ b/src/main/java/net/nuggetmc/ai/commands/CommandHandler.java @@ -8,28 +8,44 @@ import net.nuggetmc.ai.commands.commands.PlayerAICommand; import org.bukkit.ChatColor; import java.lang.reflect.Method; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; public class CommandHandler { private final DrinkCommandService drink; + private final Map, List> help; public CommandHandler(PlayerAI plugin) { drink = (DrinkCommandService) Drink.get(plugin); drink.register(new PlayerAICommand(this), "bot", "playerai", "pai", "ai", "npc"); drink.registerCommands(); + + help = new HashMap<>(); + + setHelps(new Class[] { + PlayerAICommand.class + }); } - public List getUsage(Class clazz) { + private void setHelps(Class[] cls) { + for (Class clazz : cls) { + help.put(clazz, getUsage(clazz)); + } + } + + public List getHelp(Class clazz) { + return help.get(clazz); + } + + private List getUsage(Class clazz) { String rootName = getRootName(clazz); + return getSubCommands(clazz).stream().map(c -> { Command command = c.getAnnotation(Command.class); return ChatColor.GRAY + " ▪ " + ChatColor.YELLOW + "/" + rootName + " " + command.name() + ChatColor.GRAY + " ▪ " + ChatColor.RESET + command.desc(); - }).collect(Collectors.toList()); + }).sorted().collect(Collectors.toList()); } private String getRootName(Class clazz) { diff --git a/src/main/java/net/nuggetmc/ai/commands/commands/PlayerAICommand.java b/src/main/java/net/nuggetmc/ai/commands/commands/PlayerAICommand.java index bbe1d7a..8ca2055 100644 --- a/src/main/java/net/nuggetmc/ai/commands/commands/PlayerAICommand.java +++ b/src/main/java/net/nuggetmc/ai/commands/commands/PlayerAICommand.java @@ -5,10 +5,10 @@ import com.jonahseguin.drink.annotation.OptArg; import com.jonahseguin.drink.annotation.Require; import com.jonahseguin.drink.annotation.Sender; import net.nuggetmc.ai.PlayerAI; -import net.nuggetmc.ai.commands.CommandHandler; -import net.nuggetmc.ai.commands.CommandInstance; import net.nuggetmc.ai.bot.Bot; import net.nuggetmc.ai.bot.BotManager; +import net.nuggetmc.ai.commands.CommandHandler; +import net.nuggetmc.ai.commands.CommandInstance; import net.nuggetmc.ai.utils.ChatUtils; import org.bukkit.ChatColor; import org.bukkit.entity.Player; @@ -28,8 +28,8 @@ public class PlayerAICommand extends CommandInstance { sender.sendMessage(ChatUtils.LINE); sender.sendMessage(ChatColor.GOLD + "PlayerAI" + ChatColor.GRAY + " [" + ChatColor.RED + "v" + PlayerAI.VERSION + ChatColor.GRAY + "]"); - for (String s : this.getCommandHandler().getUsage(PlayerAICommand.class)) { - sender.sendMessage(s); + for (String line : getCommandHandler().getHelp(getClass())) { + sender.sendMessage(line); } sender.sendMessage(ChatUtils.LINE); @@ -65,5 +65,4 @@ public class PlayerAICommand extends CommandInstance { String formatted = NumberFormat.getNumberInstance(Locale.US).format(size); sender.sendMessage("Removed " + ChatColor.RED + formatted + ChatColor.RESET + " entit" + (size == 1 ? "y" : "ies") + "."); } - }