command adjustments

This commit is contained in:
batchprogrammer314
2021-07-21 17:18:36 -05:00
parent 9b9f1d70a3
commit aa12ea0e71
5 changed files with 79 additions and 32 deletions

View File

@@ -4,11 +4,12 @@ import com.jonahseguin.drink.Drink;
import com.jonahseguin.drink.annotation.Command; import com.jonahseguin.drink.annotation.Command;
import com.jonahseguin.drink.command.DrinkCommandService; import com.jonahseguin.drink.command.DrinkCommandService;
import com.jonahseguin.drink.utils.ChatUtils; import com.jonahseguin.drink.utils.ChatUtils;
import net.nuggetmc.ai.TerminatorPlus;
import net.nuggetmc.ai.command.commands.AICommand; import net.nuggetmc.ai.command.commands.AICommand;
import net.nuggetmc.ai.command.commands.BotCommand; import net.nuggetmc.ai.command.commands.BotCommand;
import net.nuggetmc.ai.command.commands.MainCommand; import net.nuggetmc.ai.command.commands.MainCommand;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.command.CommandSender;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable; import javax.annotation.Nullable;
@@ -21,12 +22,15 @@ import java.util.stream.Collectors;
public class CommandHandler { public class CommandHandler {
private final TerminatorPlus plugin;
private static final String MANAGE_PERMISSION = "terminatorplus.manage"; private static final String MANAGE_PERMISSION = "terminatorplus.manage";
private final DrinkCommandService drink; private final DrinkCommandService drink;
private final Map<Class<? extends CommandInstance>, List<String>> help; private final Map<Class<? extends CommandInstance>, List<String>> help;
public CommandHandler(JavaPlugin plugin) { public CommandHandler(TerminatorPlus plugin) {
this.plugin = plugin;
this.drink = (DrinkCommandService) Drink.get(plugin); this.drink = (DrinkCommandService) Drink.get(plugin);
this.help = new HashMap<>(); this.help = new HashMap<>();
this.registerCommands(); this.registerCommands();
@@ -34,32 +38,35 @@ public class CommandHandler {
} }
private void registerCommands() { private void registerCommands() {
registerCommand(new MainCommand(this, drink), "terminatorplus", "terminator"); registerCommand(new MainCommand(this, drink), "terminatorplus");
registerCommand(new BotCommand(this), "bot", "npc"); registerCommand(new BotCommand(this), "bot", "npc");
registerCommand(new AICommand(this), "ai"); registerCommand(new AICommand(this), "ai");
} }
private void registerCommand(@Nonnull CommandInstance handler, @Nonnull String name, @Nullable String... aliases) { private void registerCommand(@Nonnull CommandInstance handler, @Nonnull String name, @Nullable String... aliases) {
handler.setName(name);
drink.register(handler, MANAGE_PERMISSION, name, aliases); drink.register(handler, MANAGE_PERMISSION, name, aliases);
setHelp(handler.getClass()); setHelp(handler.getClass());
} }
public void sendRootInfo(CommandInstance commandInstance, CommandSender sender) {
sender.sendMessage(ChatUtils.LINE);
sender.sendMessage(ChatColor.GOLD + plugin.getName() + ChatUtils.BULLET_FORMATTED + ChatColor.GRAY
+ "[" + ChatColor.YELLOW + "/" + commandInstance.getName() + ChatColor.GRAY + "]");
help.get(commandInstance.getClass()).forEach(sender::sendMessage);
sender.sendMessage(ChatUtils.LINE);
}
private void setHelp(Class<? extends CommandInstance> cls) { private void setHelp(Class<? extends CommandInstance> cls) {
help.put(cls, getUsage(cls)); help.put(cls, getUsage(cls));
} }
public List<String> getHelp(Class<? extends CommandInstance> cls) {
return help.get(cls);
}
private List<String> getUsage(Class<? extends CommandInstance> cls) { private List<String> getUsage(Class<? extends CommandInstance> cls) {
String rootName = getRootName(cls); String rootName = getRootName(cls);
return getSubCommands(cls).stream().map(c -> { return getSubCommands(cls).stream().map(c -> c.getAnnotation(Command.class)).filter(Command::visible).map(c ->
Command command = c.getAnnotation(Command.class); ChatUtils.BULLET_FORMATTED + ChatColor.YELLOW + "/" + rootName + " " + c.name() + ChatUtils.BULLET_FORMATTED
return ChatUtils.BULLET_FORMATTED + ChatColor.YELLOW + "/" + rootName + " " + command.name() + ChatUtils.BULLET_FORMATTED + ChatColor.RESET + c.desc()).sorted().collect(Collectors.toList());
+ ChatColor.RESET + command.desc();
}).sorted().collect(Collectors.toList());
} }
private String getRootName(Class<? extends CommandInstance> cls) { private String getRootName(Class<? extends CommandInstance> cls) {

View File

@@ -2,12 +2,22 @@ package net.nuggetmc.ai.command;
public abstract class CommandInstance { public abstract class CommandInstance {
private String name;
protected final CommandHandler commandHandler; protected final CommandHandler commandHandler;
public CommandInstance(CommandHandler commandHandler) { public CommandInstance(CommandHandler commandHandler) {
this.commandHandler = commandHandler; this.commandHandler = commandHandler;
} }
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public CommandHandler getCommandHandler() { public CommandHandler getCommandHandler() {
return commandHandler; return commandHandler;
} }

View File

@@ -3,11 +3,11 @@ package net.nuggetmc.ai.command.commands;
import com.jonahseguin.drink.annotation.Command; import com.jonahseguin.drink.annotation.Command;
import com.jonahseguin.drink.annotation.OptArg; import com.jonahseguin.drink.annotation.OptArg;
import com.jonahseguin.drink.annotation.Sender; import com.jonahseguin.drink.annotation.Sender;
import com.jonahseguin.drink.utils.ChatUtils;
import net.nuggetmc.ai.TerminatorPlus; import net.nuggetmc.ai.TerminatorPlus;
import net.nuggetmc.ai.bot.BotManager; import net.nuggetmc.ai.bot.BotManager;
import net.nuggetmc.ai.command.CommandHandler; import net.nuggetmc.ai.command.CommandHandler;
import net.nuggetmc.ai.command.CommandInstance; import net.nuggetmc.ai.command.CommandInstance;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class AICommand extends CommandInstance { public class AICommand extends CommandInstance {
@@ -23,10 +23,8 @@ public class AICommand extends CommandInstance {
@Command( @Command(
desc = "The root command for bot AI training." desc = "The root command for bot AI training."
) )
public void root(@Sender Player sender) { public void root(@Sender CommandSender sender) {
sender.sendMessage(ChatUtils.LINE); commandHandler.sendRootInfo(this, sender);
commandHandler.getHelp(getClass()).forEach(sender::sendMessage);
sender.sendMessage(ChatUtils.LINE);
} }
@Command( @Command(

View File

@@ -11,6 +11,7 @@ import net.nuggetmc.ai.bot.BotManager;
import net.nuggetmc.ai.command.CommandHandler; import net.nuggetmc.ai.command.CommandHandler;
import net.nuggetmc.ai.command.CommandInstance; import net.nuggetmc.ai.command.CommandInstance;
import net.nuggetmc.ai.utils.Debugger; import net.nuggetmc.ai.utils.Debugger;
import org.apache.commons.lang.StringUtils;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
@@ -21,6 +22,8 @@ import org.bukkit.util.Vector;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.NumberFormat; import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale; import java.util.Locale;
public class BotCommand extends CommandInstance { public class BotCommand extends CommandInstance {
@@ -42,10 +45,8 @@ public class BotCommand extends CommandInstance {
@Command( @Command(
desc = "The root command for bot management." desc = "The root command for bot management."
) )
public void root(@Sender Player sender) { public void root(@Sender CommandSender sender) {
sender.sendMessage(ChatUtils.LINE); commandHandler.sendRootInfo(this, sender);
commandHandler.getHelp(getClass()).forEach(sender::sendMessage);
sender.sendMessage(ChatUtils.LINE);
} }
@Command( @Command(
@@ -66,15 +67,6 @@ public class BotCommand extends CommandInstance {
manager.createBots(sender, name, skin, n); manager.createBots(sender, name, skin, n);
} }
@Command(
name = "debug",
desc = "Debug plugin code.",
usage = "<expression>"
)
public void debug(@Sender CommandSender sender, @Text String cmd) {
new Debugger(sender).execute(cmd);
}
@Command( @Command(
name = "info", name = "info",
desc = "Information about loaded bots.", desc = "Information about loaded bots.",
@@ -142,4 +134,40 @@ public class BotCommand extends CommandInstance {
String formatted = NumberFormat.getNumberInstance(Locale.US).format(size); String formatted = NumberFormat.getNumberInstance(Locale.US).format(size);
sender.sendMessage("Removed " + ChatColor.RED + formatted + ChatColor.RESET + " entit" + (size == 1 ? "y" : "ies") + "."); sender.sendMessage("Removed " + ChatColor.RED + formatted + ChatColor.RESET + " entit" + (size == 1 ? "y" : "ies") + ".");
} }
@Command(
name = "options",
desc = "Make changes to the global configuration file and bot-specific settings.",
aliases = "settings",
autofill = "optionsAutofill"
)
public void options(@Sender CommandSender sender) {
sender.sendMessage(ChatColor.YELLOW + "This feature is coming soon!");
}
public List<String> optionsAutofill(CommandSender sender, String[] args) {
List<String> output = new ArrayList<>();
if (args.length == 2) {
output.add("setgoal");
output.add("setitem");
output.add("tpall");
output.add("tprandom");
output.add("hidenametags");
output.add("sitall");
output.add("lookall");
}
return output;
}
@Command(
name = "debug",
desc = "Debug plugin code.",
usage = "<expression>",
visible = false
)
public void debug(@Sender CommandSender sender, @Text String cmd) {
new Debugger(sender).execute(cmd);
}
} }

View File

@@ -14,7 +14,7 @@ import net.nuggetmc.ai.command.CommandHandler;
import net.nuggetmc.ai.command.CommandInstance; import net.nuggetmc.ai.command.CommandInstance;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.entity.Player; import org.bukkit.command.CommandSender;
public class MainCommand extends CommandInstance { public class MainCommand extends CommandInstance {
@@ -33,7 +33,11 @@ public class MainCommand extends CommandInstance {
@Command( @Command(
desc = "The TerminatorPlus main command." desc = "The TerminatorPlus main command."
) )
public void root(@Sender Player sender) { public void root(@Sender CommandSender sender) {
if (rootInfo == null) {
rootInfoSetup();
}
sender.spigot().sendMessage(rootInfo); sender.spigot().sendMessage(rootInfo);
} }