From cbb9781c6d7495b5428eff3b252caf978fbfbf22 Mon Sep 17 00:00:00 2001 From: batchprogrammer314 Date: Tue, 24 Aug 2021 19:54:46 -0500 Subject: [PATCH] did a bit of refactoring --- pom.xml | 6 - .../nuggetmc/ai/command/CommandHandler.java | 88 ----------- .../nuggetmc/ai/command/CommandInstance.java | 26 ---- .../{ai => tplus}/TerminatorPlus.java | 6 +- .../net/nuggetmc/{ai => tplus}/bot/Bot.java | 18 +-- .../{ai => tplus}/bot/BotManager.java | 12 +- .../{ai => tplus}/bot/CustomGameProfile.java | 4 +- .../{ai => tplus}/bot/agent/Agent.java | 16 +- .../bot/agent/botagent/BotAgent.java | 12 +- .../bot/agent/botagent/BotSituation.java | 4 +- .../agent/botagent/VerticalDisplacement.java | 2 +- .../bot/agent/legacyagent/EnumTargetGoal.java | 2 +- .../bot/agent/legacyagent/LegacyAgent.java | 24 +-- .../agent/legacyagent/LegacyBlockCheck.java | 7 +- .../bot/agent/legacyagent/LegacyItems.java | 2 +- .../bot/agent/legacyagent/LegacyLevel.java | 2 +- .../bot/agent/legacyagent/LegacyMats.java | 2 +- .../bot/agent/legacyagent/LegacyUtils.java | 2 +- .../agent/legacyagent/LegacyWorldManager.java | 2 +- .../agent/legacyagent/ai/ActivationType.java | 2 +- .../bot/agent/legacyagent/ai/BotData.java | 6 +- .../bot/agent/legacyagent/ai/BotDataType.java | 2 +- .../bot/agent/legacyagent/ai/BotNode.java | 2 +- .../legacyagent/ai/IntelligenceAgent.java | 22 +-- .../agent/legacyagent/ai/NeuralNetwork.java | 8 +- .../agent/legacyagent/ai/NodeConnections.java | 2 +- .../bot/event/BotDamageByPlayerEvent.java | 4 +- .../bot/event/BotDeathEvent.java | 4 +- .../bot/event/BotFallDamageEvent.java | 4 +- .../bot/event/BotKilledByPlayerEvent.java | 4 +- .../tplus/command/CommandHandler.java | 139 ++++++++++++++++++ .../tplus/command/CommandInstance.java | 97 ++++++++++++ .../nuggetmc/tplus/command/CommandMethod.java | 66 +++++++++ .../tplus/command/annotation/Autofill.java | 4 + .../tplus/command/annotation/Command.java | 22 +++ .../tplus/command/annotation/Require.java | 12 ++ .../command/commands/AICommand.java | 123 +++++++++++----- .../command/commands/BotCommand.java | 123 +++++++++++----- .../command/commands/MainCommand.java | 37 ++--- .../{ai => tplus}/command/nms/TPCommand.java | 2 +- .../{ai => tplus}/utils/BotUtils.java | 2 +- .../utils/ChatUtils.java} | 8 +- .../{ai => tplus}/utils/Debugger.java | 21 +-- .../{ai => tplus}/utils/ItemUtils.java | 2 +- .../{ai => tplus}/utils/MathUtils.java | 4 +- .../{ai => tplus}/utils/MojangAPI.java | 2 +- .../{ai => tplus}/utils/PlayerUtils.java | 4 +- .../{ai => tplus}/utils/Singularity.java | 2 +- src/main/resources/plugin.yml | 2 +- 49 files changed, 646 insertions(+), 323 deletions(-) delete mode 100644 src/main/java/net/nuggetmc/ai/command/CommandHandler.java delete mode 100644 src/main/java/net/nuggetmc/ai/command/CommandInstance.java rename src/main/java/net/nuggetmc/{ai => tplus}/TerminatorPlus.java (90%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/Bot.java (97%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/BotManager.java (94%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/CustomGameProfile.java (90%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/Agent.java (83%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/botagent/BotAgent.java (94%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/botagent/BotSituation.java (83%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/botagent/VerticalDisplacement.java (85%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/legacyagent/EnumTargetGoal.java (96%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/legacyagent/LegacyAgent.java (98%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/legacyagent/LegacyBlockCheck.java (97%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/legacyagent/LegacyItems.java (83%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/legacyagent/LegacyLevel.java (91%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/legacyagent/LegacyMats.java (99%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/legacyagent/LegacyUtils.java (97%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/legacyagent/LegacyWorldManager.java (89%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/legacyagent/ai/ActivationType.java (62%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/legacyagent/ai/BotData.java (91%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/legacyagent/ai/BotDataType.java (85%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/legacyagent/ai/BotNode.java (77%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/legacyagent/ai/IntelligenceAgent.java (95%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/legacyagent/ai/NeuralNetwork.java (92%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/agent/legacyagent/ai/NodeConnections.java (97%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/event/BotDamageByPlayerEvent.java (91%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/event/BotDeathEvent.java (83%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/event/BotFallDamageEvent.java (84%) rename src/main/java/net/nuggetmc/{ai => tplus}/bot/event/BotKilledByPlayerEvent.java (87%) create mode 100644 src/main/java/net/nuggetmc/tplus/command/CommandHandler.java create mode 100644 src/main/java/net/nuggetmc/tplus/command/CommandInstance.java create mode 100644 src/main/java/net/nuggetmc/tplus/command/CommandMethod.java create mode 100644 src/main/java/net/nuggetmc/tplus/command/annotation/Autofill.java create mode 100644 src/main/java/net/nuggetmc/tplus/command/annotation/Command.java create mode 100644 src/main/java/net/nuggetmc/tplus/command/annotation/Require.java rename src/main/java/net/nuggetmc/{ai => tplus}/command/commands/AICommand.java (59%) rename src/main/java/net/nuggetmc/{ai => tplus}/command/commands/BotCommand.java (66%) rename src/main/java/net/nuggetmc/{ai => tplus}/command/commands/MainCommand.java (72%) rename src/main/java/net/nuggetmc/{ai => tplus}/command/nms/TPCommand.java (85%) rename src/main/java/net/nuggetmc/{ai => tplus}/utils/BotUtils.java (97%) rename src/main/java/net/nuggetmc/{ai/utils/StringUtilities.java => tplus/utils/ChatUtils.java} (51%) rename src/main/java/net/nuggetmc/{ai => tplus}/utils/Debugger.java (96%) rename src/main/java/net/nuggetmc/{ai => tplus}/utils/ItemUtils.java (97%) rename src/main/java/net/nuggetmc/{ai => tplus}/utils/MathUtils.java (98%) rename src/main/java/net/nuggetmc/{ai => tplus}/utils/MojangAPI.java (97%) rename src/main/java/net/nuggetmc/{ai => tplus}/utils/PlayerUtils.java (96%) rename src/main/java/net/nuggetmc/{ai => tplus}/utils/Singularity.java (92%) diff --git a/pom.xml b/pom.xml index f720484..c980de3 100644 --- a/pom.xml +++ b/pom.xml @@ -60,12 +60,6 @@ spigot 1.16.4-R0.1-SNAPSHOT - - com.jonahseguin - drink - 1.0.2 - compile - \ No newline at end of file diff --git a/src/main/java/net/nuggetmc/ai/command/CommandHandler.java b/src/main/java/net/nuggetmc/ai/command/CommandHandler.java deleted file mode 100644 index aed2955..0000000 --- a/src/main/java/net/nuggetmc/ai/command/CommandHandler.java +++ /dev/null @@ -1,88 +0,0 @@ -package net.nuggetmc.ai.command; - -import com.jonahseguin.drink.Drink; -import com.jonahseguin.drink.annotation.Command; -import com.jonahseguin.drink.command.DrinkCommandService; -import com.jonahseguin.drink.utils.ChatUtils; -import net.nuggetmc.ai.TerminatorPlus; -import net.nuggetmc.ai.command.commands.AICommand; -import net.nuggetmc.ai.command.commands.BotCommand; -import net.nuggetmc.ai.command.commands.MainCommand; -import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.lang.reflect.Method; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -public class CommandHandler { - - private final TerminatorPlus plugin; - - private static final String MANAGE_PERMISSION = "terminatorplus.manage"; - - private final DrinkCommandService drink; - private final Map, List> help; - private final Map commandMap; - - public CommandHandler(TerminatorPlus plugin) { - this.plugin = plugin; - this.drink = (DrinkCommandService) Drink.get(plugin); - this.help = new HashMap<>(); - this.commandMap = new HashMap<>(); - this.registerCommands(); - this.drink.registerCommands(); - this.commandMap.values().forEach(CommandInstance::onLoad); - } - - private void registerCommands() { - registerCommand(new MainCommand(this, drink), "terminatorplus"); - registerCommand(new BotCommand(this), "bot", "npc"); - registerCommand(new AICommand(this), "ai"); - } - - private void registerCommand(@Nonnull CommandInstance handler, @Nonnull String name, @Nullable String... aliases) { - handler.setName(name); - commandMap.put(name, handler); - drink.register(handler, MANAGE_PERMISSION, name, aliases); - setHelp(handler.getClass()); - } - - public CommandInstance getCommand(String name) { - return commandMap.get(name); - } - - 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 cls) { - help.put(cls, getUsage(cls)); - } - - private List getUsage(Class cls) { - String rootName = getRootName(cls); - - return getSubCommands(cls).stream().map(c -> c.getAnnotation(Command.class)).filter(Command::visible).map(c -> - ChatUtils.BULLET_FORMATTED + ChatColor.YELLOW + "/" + rootName + " " + c.name() + ChatUtils.BULLET_FORMATTED - + ChatColor.RESET + c.desc()).sorted().collect(Collectors.toList()); - } - - private String getRootName(Class cls) { - return drink.getCommands().entrySet().stream() - .filter(c -> c.getValue().getObject().getClass().isAssignableFrom(cls)).map(Map.Entry::getKey).findFirst().orElse(null); - } - - private List getSubCommands(Class cls) { - return Arrays.stream(cls.getDeclaredMethods()).filter(m -> m.isAnnotationPresent(Command.class) && !m.getAnnotation(Command.class).name().isEmpty()).collect(Collectors.toList()); - } -} diff --git a/src/main/java/net/nuggetmc/ai/command/CommandInstance.java b/src/main/java/net/nuggetmc/ai/command/CommandInstance.java deleted file mode 100644 index def782f..0000000 --- a/src/main/java/net/nuggetmc/ai/command/CommandInstance.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.nuggetmc.ai.command; - -public abstract class CommandInstance { - - private String name; - - protected final CommandHandler commandHandler; - - public CommandInstance(CommandHandler commandHandler) { - this.commandHandler = commandHandler; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public CommandHandler getCommandHandler() { - return commandHandler; - } - - protected void onLoad() { } -} diff --git a/src/main/java/net/nuggetmc/ai/TerminatorPlus.java b/src/main/java/net/nuggetmc/tplus/TerminatorPlus.java similarity index 90% rename from src/main/java/net/nuggetmc/ai/TerminatorPlus.java rename to src/main/java/net/nuggetmc/tplus/TerminatorPlus.java index 16020ed..4637b25 100644 --- a/src/main/java/net/nuggetmc/ai/TerminatorPlus.java +++ b/src/main/java/net/nuggetmc/tplus/TerminatorPlus.java @@ -1,7 +1,7 @@ -package net.nuggetmc.ai; +package net.nuggetmc.tplus; -import net.nuggetmc.ai.bot.BotManager; -import net.nuggetmc.ai.command.CommandHandler; +import net.nuggetmc.tplus.bot.BotManager; +import net.nuggetmc.tplus.command.CommandHandler; import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; diff --git a/src/main/java/net/nuggetmc/ai/bot/Bot.java b/src/main/java/net/nuggetmc/tplus/bot/Bot.java similarity index 97% rename from src/main/java/net/nuggetmc/ai/bot/Bot.java rename to src/main/java/net/nuggetmc/tplus/bot/Bot.java index 227d70e..bf96cfe 100644 --- a/src/main/java/net/nuggetmc/ai/bot/Bot.java +++ b/src/main/java/net/nuggetmc/tplus/bot/Bot.java @@ -1,4 +1,4 @@ -package net.nuggetmc.ai.bot; +package net.nuggetmc.tplus.bot; import com.mojang.authlib.GameProfile; import com.mojang.datafixers.util.Pair; @@ -6,13 +6,13 @@ import io.netty.util.concurrent.Future; import io.netty.util.concurrent.GenericFutureListener; import net.minecraft.server.v1_16_R3.Chunk; import net.minecraft.server.v1_16_R3.*; -import net.nuggetmc.ai.TerminatorPlus; -import net.nuggetmc.ai.bot.agent.Agent; -import net.nuggetmc.ai.bot.agent.legacyagent.ai.NeuralNetwork; -import net.nuggetmc.ai.bot.event.BotDamageByPlayerEvent; -import net.nuggetmc.ai.bot.event.BotFallDamageEvent; -import net.nuggetmc.ai.bot.event.BotKilledByPlayerEvent; -import net.nuggetmc.ai.utils.*; +import net.nuggetmc.tplus.TerminatorPlus; +import net.nuggetmc.tplus.bot.agent.Agent; +import net.nuggetmc.tplus.bot.agent.legacyagent.ai.NeuralNetwork; +import net.nuggetmc.tplus.bot.event.BotDamageByPlayerEvent; +import net.nuggetmc.tplus.bot.event.BotFallDamageEvent; +import net.nuggetmc.tplus.bot.event.BotKilledByPlayerEvent; +import net.nuggetmc.tplus.utils.*; import org.bukkit.Material; import org.bukkit.SoundCategory; import org.bukkit.World; @@ -103,7 +103,7 @@ public class Bot extends EntityPlayer { UUID uuid = BotUtils.randomSteveUUID(); - CustomGameProfile profile = new CustomGameProfile(uuid, StringUtilities.trim16(name), skin); + CustomGameProfile profile = new CustomGameProfile(uuid, ChatUtils.trim16(name), skin); PlayerInteractManager interactManager = new PlayerInteractManager(nmsWorld); Bot bot = new Bot(nmsServer, nmsWorld, profile, interactManager); diff --git a/src/main/java/net/nuggetmc/ai/bot/BotManager.java b/src/main/java/net/nuggetmc/tplus/bot/BotManager.java similarity index 94% rename from src/main/java/net/nuggetmc/ai/bot/BotManager.java rename to src/main/java/net/nuggetmc/tplus/bot/BotManager.java index 2d20e00..a3c74b3 100644 --- a/src/main/java/net/nuggetmc/ai/bot/BotManager.java +++ b/src/main/java/net/nuggetmc/tplus/bot/BotManager.java @@ -1,11 +1,11 @@ -package net.nuggetmc.ai.bot; +package net.nuggetmc.tplus.bot; import net.minecraft.server.v1_16_R3.PlayerConnection; -import net.nuggetmc.ai.bot.agent.Agent; -import net.nuggetmc.ai.bot.agent.legacyagent.LegacyAgent; -import net.nuggetmc.ai.bot.agent.legacyagent.ai.NeuralNetwork; -import net.nuggetmc.ai.bot.event.BotDeathEvent; -import net.nuggetmc.ai.utils.MojangAPI; +import net.nuggetmc.tplus.bot.agent.Agent; +import net.nuggetmc.tplus.bot.agent.legacyagent.LegacyAgent; +import net.nuggetmc.tplus.bot.agent.legacyagent.ai.NeuralNetwork; +import net.nuggetmc.tplus.bot.event.BotDeathEvent; +import net.nuggetmc.tplus.utils.MojangAPI; import org.bukkit.*; import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer; import org.bukkit.entity.Player; diff --git a/src/main/java/net/nuggetmc/ai/bot/CustomGameProfile.java b/src/main/java/net/nuggetmc/tplus/bot/CustomGameProfile.java similarity index 90% rename from src/main/java/net/nuggetmc/ai/bot/CustomGameProfile.java rename to src/main/java/net/nuggetmc/tplus/bot/CustomGameProfile.java index 40e90eb..037f702 100644 --- a/src/main/java/net/nuggetmc/ai/bot/CustomGameProfile.java +++ b/src/main/java/net/nuggetmc/tplus/bot/CustomGameProfile.java @@ -1,8 +1,8 @@ -package net.nuggetmc.ai.bot; +package net.nuggetmc.tplus.bot; import com.mojang.authlib.GameProfile; import com.mojang.authlib.properties.Property; -import net.nuggetmc.ai.utils.MojangAPI; +import net.nuggetmc.tplus.utils.MojangAPI; import java.util.UUID; diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/Agent.java b/src/main/java/net/nuggetmc/tplus/bot/agent/Agent.java similarity index 83% rename from src/main/java/net/nuggetmc/ai/bot/agent/Agent.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/Agent.java index a64ed77..926c650 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/Agent.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/Agent.java @@ -1,12 +1,12 @@ -package net.nuggetmc.ai.bot.agent; +package net.nuggetmc.tplus.bot.agent; -import net.nuggetmc.ai.TerminatorPlus; -import net.nuggetmc.ai.bot.Bot; -import net.nuggetmc.ai.bot.BotManager; -import net.nuggetmc.ai.bot.event.BotDamageByPlayerEvent; -import net.nuggetmc.ai.bot.event.BotDeathEvent; -import net.nuggetmc.ai.bot.event.BotFallDamageEvent; -import net.nuggetmc.ai.bot.event.BotKilledByPlayerEvent; +import net.nuggetmc.tplus.TerminatorPlus; +import net.nuggetmc.tplus.bot.Bot; +import net.nuggetmc.tplus.bot.BotManager; +import net.nuggetmc.tplus.bot.event.BotDamageByPlayerEvent; +import net.nuggetmc.tplus.bot.event.BotDeathEvent; +import net.nuggetmc.tplus.bot.event.BotFallDamageEvent; +import net.nuggetmc.tplus.bot.event.BotKilledByPlayerEvent; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/botagent/BotAgent.java b/src/main/java/net/nuggetmc/tplus/bot/agent/botagent/BotAgent.java similarity index 94% rename from src/main/java/net/nuggetmc/ai/bot/agent/botagent/BotAgent.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/botagent/BotAgent.java index 0c67554..759beb0 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/botagent/BotAgent.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/botagent/BotAgent.java @@ -1,10 +1,10 @@ -package net.nuggetmc.ai.bot.agent.botagent; +package net.nuggetmc.tplus.bot.agent.botagent; -import net.nuggetmc.ai.bot.Bot; -import net.nuggetmc.ai.bot.BotManager; -import net.nuggetmc.ai.bot.agent.Agent; -import net.nuggetmc.ai.utils.MathUtils; -import net.nuggetmc.ai.utils.PlayerUtils; +import net.nuggetmc.tplus.bot.Bot; +import net.nuggetmc.tplus.bot.BotManager; +import net.nuggetmc.tplus.bot.agent.Agent; +import net.nuggetmc.tplus.utils.MathUtils; +import net.nuggetmc.tplus.utils.PlayerUtils; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Player; diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/botagent/BotSituation.java b/src/main/java/net/nuggetmc/tplus/bot/agent/botagent/BotSituation.java similarity index 83% rename from src/main/java/net/nuggetmc/ai/bot/agent/botagent/BotSituation.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/botagent/BotSituation.java index 96ee75f..2aded0e 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/botagent/BotSituation.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/botagent/BotSituation.java @@ -1,6 +1,6 @@ -package net.nuggetmc.ai.bot.agent.botagent; +package net.nuggetmc.tplus.bot.agent.botagent; -import net.nuggetmc.ai.bot.Bot; +import net.nuggetmc.tplus.bot.Bot; import org.bukkit.Location; public class BotSituation { diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/botagent/VerticalDisplacement.java b/src/main/java/net/nuggetmc/tplus/bot/agent/botagent/VerticalDisplacement.java similarity index 85% rename from src/main/java/net/nuggetmc/ai/bot/agent/botagent/VerticalDisplacement.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/botagent/VerticalDisplacement.java index 26043d1..709e679 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/botagent/VerticalDisplacement.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/botagent/VerticalDisplacement.java @@ -1,4 +1,4 @@ -package net.nuggetmc.ai.bot.agent.botagent; +package net.nuggetmc.tplus.bot.agent.botagent; public enum VerticalDisplacement { AT, diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/EnumTargetGoal.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/EnumTargetGoal.java similarity index 96% rename from src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/EnumTargetGoal.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/EnumTargetGoal.java index 94e2454..863d904 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/EnumTargetGoal.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/EnumTargetGoal.java @@ -1,4 +1,4 @@ -package net.nuggetmc.ai.bot.agent.legacyagent; +package net.nuggetmc.tplus.bot.agent.legacyagent; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyAgent.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyAgent.java similarity index 98% rename from src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyAgent.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyAgent.java index c9d5acd..df644a2 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyAgent.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyAgent.java @@ -1,18 +1,18 @@ -package net.nuggetmc.ai.bot.agent.legacyagent; +package net.nuggetmc.tplus.bot.agent.legacyagent; import net.minecraft.server.v1_16_R3.BlockPosition; import net.minecraft.server.v1_16_R3.PacketPlayOutBlockBreakAnimation; -import net.nuggetmc.ai.bot.Bot; -import net.nuggetmc.ai.bot.BotManager; -import net.nuggetmc.ai.bot.agent.Agent; -import net.nuggetmc.ai.bot.agent.legacyagent.ai.BotData; -import net.nuggetmc.ai.bot.agent.legacyagent.ai.BotNode; -import net.nuggetmc.ai.bot.agent.legacyagent.ai.NeuralNetwork; -import net.nuggetmc.ai.bot.event.BotDamageByPlayerEvent; -import net.nuggetmc.ai.bot.event.BotDeathEvent; -import net.nuggetmc.ai.bot.event.BotFallDamageEvent; -import net.nuggetmc.ai.utils.MathUtils; -import net.nuggetmc.ai.utils.PlayerUtils; +import net.nuggetmc.tplus.bot.Bot; +import net.nuggetmc.tplus.bot.BotManager; +import net.nuggetmc.tplus.bot.agent.Agent; +import net.nuggetmc.tplus.bot.agent.legacyagent.ai.BotData; +import net.nuggetmc.tplus.bot.agent.legacyagent.ai.BotNode; +import net.nuggetmc.tplus.bot.agent.legacyagent.ai.NeuralNetwork; +import net.nuggetmc.tplus.bot.event.BotDamageByPlayerEvent; +import net.nuggetmc.tplus.bot.event.BotDeathEvent; +import net.nuggetmc.tplus.bot.event.BotFallDamageEvent; +import net.nuggetmc.tplus.utils.MathUtils; +import net.nuggetmc.tplus.utils.PlayerUtils; import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyBlockCheck.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyBlockCheck.java similarity index 97% rename from src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyBlockCheck.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyBlockCheck.java index a9c6103..0a2f90b 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyBlockCheck.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyBlockCheck.java @@ -1,8 +1,7 @@ -package net.nuggetmc.ai.bot.agent.legacyagent; +package net.nuggetmc.tplus.bot.agent.legacyagent; -import net.nuggetmc.ai.TerminatorPlus; -import net.nuggetmc.ai.bot.Bot; -import net.nuggetmc.ai.utils.Debugger; +import net.nuggetmc.tplus.TerminatorPlus; +import net.nuggetmc.tplus.bot.Bot; import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyItems.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyItems.java similarity index 83% rename from src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyItems.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyItems.java index bd5091d..c2edda4 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyItems.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyItems.java @@ -1,4 +1,4 @@ -package net.nuggetmc.ai.bot.agent.legacyagent; +package net.nuggetmc.tplus.bot.agent.legacyagent; import org.bukkit.Material; diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyLevel.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyLevel.java similarity index 91% rename from src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyLevel.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyLevel.java index 5eae55f..e0a89f2 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyLevel.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyLevel.java @@ -1,4 +1,4 @@ -package net.nuggetmc.ai.bot.agent.legacyagent; +package net.nuggetmc.tplus.bot.agent.legacyagent; import java.util.Arrays; import java.util.HashSet; diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyMats.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyMats.java similarity index 99% rename from src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyMats.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyMats.java index f4fc665..de6e5c7 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyMats.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyMats.java @@ -1,4 +1,4 @@ -package net.nuggetmc.ai.bot.agent.legacyagent; +package net.nuggetmc.tplus.bot.agent.legacyagent; import org.bukkit.Material; diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyUtils.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyUtils.java similarity index 97% rename from src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyUtils.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyUtils.java index 480c040..724aed0 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyUtils.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyUtils.java @@ -1,4 +1,4 @@ -package net.nuggetmc.ai.bot.agent.legacyagent; +package net.nuggetmc.tplus.bot.agent.legacyagent; import net.minecraft.server.v1_16_R3.*; import org.bukkit.Location; diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyWorldManager.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyWorldManager.java similarity index 89% rename from src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyWorldManager.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyWorldManager.java index f7c6e20..549d3ed 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/LegacyWorldManager.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/LegacyWorldManager.java @@ -1,4 +1,4 @@ -package net.nuggetmc.ai.bot.agent.legacyagent; +package net.nuggetmc.tplus.bot.agent.legacyagent; import org.bukkit.Location; import org.bukkit.Material; diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/ActivationType.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/ActivationType.java similarity index 62% rename from src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/ActivationType.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/ActivationType.java index 034d9f3..76bae1c 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/ActivationType.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/ActivationType.java @@ -1,4 +1,4 @@ -package net.nuggetmc.ai.bot.agent.legacyagent.ai; +package net.nuggetmc.tplus.bot.agent.legacyagent.ai; public enum ActivationType { TANH, diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/BotData.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/BotData.java similarity index 91% rename from src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/BotData.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/BotData.java index c3a66a5..275ba41 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/BotData.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/BotData.java @@ -1,7 +1,7 @@ -package net.nuggetmc.ai.bot.agent.legacyagent.ai; +package net.nuggetmc.tplus.bot.agent.legacyagent.ai; -import net.nuggetmc.ai.bot.Bot; -import net.nuggetmc.ai.utils.MathUtils; +import net.nuggetmc.tplus.bot.Bot; +import net.nuggetmc.tplus.utils.MathUtils; import org.apache.commons.lang.StringUtils; import org.bukkit.Location; import org.bukkit.entity.Player; diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/BotDataType.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/BotDataType.java similarity index 85% rename from src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/BotDataType.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/BotDataType.java index 3d92a67..5145a45 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/BotDataType.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/BotDataType.java @@ -1,4 +1,4 @@ -package net.nuggetmc.ai.bot.agent.legacyagent.ai; +package net.nuggetmc.tplus.bot.agent.legacyagent.ai; public enum BotDataType { CRITICAL_HEALTH("h"), diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/BotNode.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/BotNode.java similarity index 77% rename from src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/BotNode.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/BotNode.java index 9641cae..6569d46 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/BotNode.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/BotNode.java @@ -1,4 +1,4 @@ -package net.nuggetmc.ai.bot.agent.legacyagent.ai; +package net.nuggetmc.tplus.bot.agent.legacyagent.ai; public enum BotNode { BLOCK, // block (can't attack while blocking) diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/IntelligenceAgent.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/IntelligenceAgent.java similarity index 95% rename from src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/IntelligenceAgent.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/IntelligenceAgent.java index 79cc455..c9af58f 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/IntelligenceAgent.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/IntelligenceAgent.java @@ -1,16 +1,16 @@ -package net.nuggetmc.ai.bot.agent.legacyagent.ai; +package net.nuggetmc.tplus.bot.agent.legacyagent.ai; -import com.jonahseguin.drink.utils.ChatUtils; import net.minecraft.server.v1_16_R3.EntityLiving; -import net.nuggetmc.ai.TerminatorPlus; -import net.nuggetmc.ai.bot.Bot; -import net.nuggetmc.ai.bot.BotManager; -import net.nuggetmc.ai.bot.agent.legacyagent.EnumTargetGoal; -import net.nuggetmc.ai.bot.agent.legacyagent.LegacyAgent; -import net.nuggetmc.ai.command.commands.AICommand; -import net.nuggetmc.ai.utils.MathUtils; -import net.nuggetmc.ai.utils.MojangAPI; -import net.nuggetmc.ai.utils.PlayerUtils; +import net.nuggetmc.tplus.TerminatorPlus; +import net.nuggetmc.tplus.bot.Bot; +import net.nuggetmc.tplus.bot.BotManager; +import net.nuggetmc.tplus.bot.agent.legacyagent.EnumTargetGoal; +import net.nuggetmc.tplus.bot.agent.legacyagent.LegacyAgent; +import net.nuggetmc.tplus.command.commands.AICommand; +import net.nuggetmc.tplus.utils.ChatUtils; +import net.nuggetmc.tplus.utils.MathUtils; +import net.nuggetmc.tplus.utils.MojangAPI; +import net.nuggetmc.tplus.utils.PlayerUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/NeuralNetwork.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/NeuralNetwork.java similarity index 92% rename from src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/NeuralNetwork.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/NeuralNetwork.java index 4d8cf15..4e95195 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/NeuralNetwork.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/NeuralNetwork.java @@ -1,8 +1,8 @@ -package net.nuggetmc.ai.bot.agent.legacyagent.ai; +package net.nuggetmc.tplus.bot.agent.legacyagent.ai; import net.md_5.bungee.api.ChatColor; -import net.nuggetmc.ai.utils.MathUtils; -import net.nuggetmc.ai.utils.StringUtilities; +import net.nuggetmc.tplus.utils.MathUtils; +import net.nuggetmc.tplus.utils.ChatUtils; import org.apache.commons.lang.StringUtils; import java.util.*; @@ -73,7 +73,7 @@ public class NeuralNetwork { public String output() { List strings = new ArrayList<>(); - nodes.forEach((type, node) -> strings.add(type.name().toLowerCase() + "=" + (node.check() ? StringUtilities.ON + "1" : StringUtilities.OFF + "0") + ChatColor.RESET)); + nodes.forEach((type, node) -> strings.add(type.name().toLowerCase() + "=" + (node.check() ? ChatUtils.ON + "1" : ChatUtils.OFF + "0") + ChatColor.RESET)); Collections.sort(strings); return "[" + StringUtils.join(strings, ", ") + "]"; } diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/NodeConnections.java b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/NodeConnections.java similarity index 97% rename from src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/NodeConnections.java rename to src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/NodeConnections.java index 8b2017a..f9f2221 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/legacyagent/ai/NodeConnections.java +++ b/src/main/java/net/nuggetmc/tplus/bot/agent/legacyagent/ai/NodeConnections.java @@ -1,4 +1,4 @@ -package net.nuggetmc.ai.bot.agent.legacyagent.ai; +package net.nuggetmc.tplus.bot.agent.legacyagent.ai; import java.util.Arrays; import java.util.HashMap; diff --git a/src/main/java/net/nuggetmc/ai/bot/event/BotDamageByPlayerEvent.java b/src/main/java/net/nuggetmc/tplus/bot/event/BotDamageByPlayerEvent.java similarity index 91% rename from src/main/java/net/nuggetmc/ai/bot/event/BotDamageByPlayerEvent.java rename to src/main/java/net/nuggetmc/tplus/bot/event/BotDamageByPlayerEvent.java index e962834..eeea05c 100644 --- a/src/main/java/net/nuggetmc/ai/bot/event/BotDamageByPlayerEvent.java +++ b/src/main/java/net/nuggetmc/tplus/bot/event/BotDamageByPlayerEvent.java @@ -1,6 +1,6 @@ -package net.nuggetmc.ai.bot.event; +package net.nuggetmc.tplus.bot.event; -import net.nuggetmc.ai.bot.Bot; +import net.nuggetmc.tplus.bot.Bot; import org.bukkit.entity.Player; public class BotDamageByPlayerEvent { diff --git a/src/main/java/net/nuggetmc/ai/bot/event/BotDeathEvent.java b/src/main/java/net/nuggetmc/tplus/bot/event/BotDeathEvent.java similarity index 83% rename from src/main/java/net/nuggetmc/ai/bot/event/BotDeathEvent.java rename to src/main/java/net/nuggetmc/tplus/bot/event/BotDeathEvent.java index cc0863a..40e04f5 100644 --- a/src/main/java/net/nuggetmc/ai/bot/event/BotDeathEvent.java +++ b/src/main/java/net/nuggetmc/tplus/bot/event/BotDeathEvent.java @@ -1,6 +1,6 @@ -package net.nuggetmc.ai.bot.event; +package net.nuggetmc.tplus.bot.event; -import net.nuggetmc.ai.bot.Bot; +import net.nuggetmc.tplus.bot.Bot; import org.bukkit.event.entity.PlayerDeathEvent; public class BotDeathEvent extends PlayerDeathEvent { diff --git a/src/main/java/net/nuggetmc/ai/bot/event/BotFallDamageEvent.java b/src/main/java/net/nuggetmc/tplus/bot/event/BotFallDamageEvent.java similarity index 84% rename from src/main/java/net/nuggetmc/ai/bot/event/BotFallDamageEvent.java rename to src/main/java/net/nuggetmc/tplus/bot/event/BotFallDamageEvent.java index 3340b85..4b710d6 100644 --- a/src/main/java/net/nuggetmc/ai/bot/event/BotFallDamageEvent.java +++ b/src/main/java/net/nuggetmc/tplus/bot/event/BotFallDamageEvent.java @@ -1,6 +1,6 @@ -package net.nuggetmc.ai.bot.event; +package net.nuggetmc.tplus.bot.event; -import net.nuggetmc.ai.bot.Bot; +import net.nuggetmc.tplus.bot.Bot; public class BotFallDamageEvent { diff --git a/src/main/java/net/nuggetmc/ai/bot/event/BotKilledByPlayerEvent.java b/src/main/java/net/nuggetmc/tplus/bot/event/BotKilledByPlayerEvent.java similarity index 87% rename from src/main/java/net/nuggetmc/ai/bot/event/BotKilledByPlayerEvent.java rename to src/main/java/net/nuggetmc/tplus/bot/event/BotKilledByPlayerEvent.java index fef40d7..5c2d0ee 100644 --- a/src/main/java/net/nuggetmc/ai/bot/event/BotKilledByPlayerEvent.java +++ b/src/main/java/net/nuggetmc/tplus/bot/event/BotKilledByPlayerEvent.java @@ -1,6 +1,6 @@ -package net.nuggetmc.ai.bot.event; +package net.nuggetmc.tplus.bot.event; -import net.nuggetmc.ai.bot.Bot; +import net.nuggetmc.tplus.bot.Bot; import org.bukkit.entity.Player; public class BotKilledByPlayerEvent { diff --git a/src/main/java/net/nuggetmc/tplus/command/CommandHandler.java b/src/main/java/net/nuggetmc/tplus/command/CommandHandler.java new file mode 100644 index 0000000..e1857c2 --- /dev/null +++ b/src/main/java/net/nuggetmc/tplus/command/CommandHandler.java @@ -0,0 +1,139 @@ +package net.nuggetmc.tplus.command; + +import com.google.common.collect.Sets; +import net.nuggetmc.tplus.TerminatorPlus; +import net.nuggetmc.tplus.command.annotation.Command; +import net.nuggetmc.tplus.command.annotation.Require; +import net.nuggetmc.tplus.command.commands.AICommand; +import net.nuggetmc.tplus.command.commands.BotCommand; +import net.nuggetmc.tplus.command.commands.MainCommand; +import net.nuggetmc.tplus.utils.ChatUtils; +import net.nuggetmc.tplus.utils.Debugger; +import org.bukkit.ChatColor; +import org.bukkit.command.CommandSender; +import org.bukkit.command.SimpleCommandMap; +import org.bukkit.craftbukkit.v1_16_R3.CraftServer; + +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class CommandHandler { + + private final TerminatorPlus plugin; + + private final Map> help; + private final Map commandMap; + + public CommandHandler(TerminatorPlus plugin) { + this.plugin = plugin; + this.help = new HashMap<>(); + this.commandMap = new HashMap<>(); + this.registerCommands(); + } + + public Map getCommands() { + return commandMap; + } + + private void registerCommands() { + registerCommands( + new MainCommand(this, "terminatorplus", "The TerminatorPlus main command.", "tplus"), + new BotCommand(this, "bot", "The root command for bot management.", "npc"), + new AICommand(this, "ai", "The root command for bot AI training.") + ); + } + + private void registerCommands(CommandInstance... commands) { + String fallback = plugin.getName().toLowerCase(); + SimpleCommandMap bukkitCommandMap = ((CraftServer) plugin.getServer()).getCommandMap(); + + for (CommandInstance command : commands) { + commandMap.put(command.getName(), command); + bukkitCommandMap.register(fallback, command); + + Method[] methods = command.getClass().getDeclaredMethods(); + + for (Method method : methods) { + if (method.isAnnotationPresent(Command.class)) { + try { + method.setAccessible(true); + } catch (SecurityException e) { + Debugger.log("Failed to access method " + method.getName() + "."); + continue; + } + + Command cmd = method.getAnnotation(Command.class); + + String perm = ""; + if (method.isAnnotationPresent(Require.class)) { + Require require = method.getAnnotation(Require.class); + perm = require.value(); + } + + String autofillName = cmd.autofill(); + Method autofiller = null; + + if (!autofillName.isEmpty()) { + for (Method m : methods) { + if (m.getName().equals(autofillName)) { + autofiller = m; + } + } + } + + String methodName = cmd.name(); + CommandMethod commandMethod = new CommandMethod(methodName, Sets.newHashSet(cmd.aliases()), cmd.desc(), cmd.usage(), perm, command, method, autofiller); + + command.addMethod(methodName, commandMethod); + } + } + + setHelp(command); + } + } + + public CommandInstance getCommand(String name) { + return commandMap.get(name); + } + + 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.getName()).forEach(sender::sendMessage); + sender.sendMessage(ChatUtils.LINE); + } + + private void setHelp(CommandInstance commandInstance) { + help.put(commandInstance.getName(), getCommandInfo(commandInstance)); + } + + /* + * TODO + * Eventually, this will be a LOT better, basically not having to have this method + * at all (kind of like Drink), and even better, we won't even need a "usage" field + * in the @Command annotation, and can create the usage message from the method parameters. + */ + public void sendUsage(CommandSender sender, CommandInstance command, String usage) { + sender.sendMessage("Command Usage: " + ChatColor.YELLOW + "/" + command.getName() + " " + usage); + } + + private List getCommandInfo(CommandInstance commandInstance) { + List output = new ArrayList<>(); + + for (CommandMethod method : commandInstance.getMethods().values()) { + if (!method.getMethod().getAnnotation(Command.class).visible() || method.getName().isEmpty()) { + continue; + } + + output.add(ChatUtils.BULLET_FORMATTED + ChatColor.YELLOW + "/" + commandInstance.getName() + " " + method.getName() + + ChatUtils.BULLET_FORMATTED + method.getDescription()); + } + + return output.stream().sorted().collect(Collectors.toList()); + } +} diff --git a/src/main/java/net/nuggetmc/tplus/command/CommandInstance.java b/src/main/java/net/nuggetmc/tplus/command/CommandInstance.java new file mode 100644 index 0000000..6246bfd --- /dev/null +++ b/src/main/java/net/nuggetmc/tplus/command/CommandInstance.java @@ -0,0 +1,97 @@ +package net.nuggetmc.tplus.command; + +import net.md_5.bungee.api.ChatColor; +import org.bukkit.command.CommandSender; +import org.bukkit.command.defaults.BukkitCommand; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.*; +import java.util.stream.Collectors; + +public abstract class CommandInstance extends BukkitCommand { + + protected final CommandHandler commandHandler; + + private final Map methods; + + private static final String MANAGE_PERMISSION = "terminatorplus.manage"; + + public CommandInstance(CommandHandler handler, String name, String description, @Nullable String... aliases) { + super(name, description, "", aliases == null ? new ArrayList<>() : Arrays.asList(aliases)); + + this.commandHandler = handler; + this.methods = new HashMap<>(); + } + + public Map getMethods() { + return methods; + } + + protected void addMethod(String name, CommandMethod method) { + methods.put(name, method); + } + + @Override + public boolean execute(@Nonnull CommandSender sender, @Nonnull String label, @Nonnull String[] args) { + if (!sender.hasPermission(MANAGE_PERMISSION)) { + return false; + } + + CommandMethod method; + + if (args.length == 0) { + method = methods.get(""); + } else if (methods.containsKey(args[0])) { + method = methods.get(args[0]); + } else { + method = methods.get(""); + } + + if (method == null) { + sender.sendMessage(ChatColor.RED + "There is no root command present for the " + ChatColor.YELLOW + getName() + ChatColor.RED + " command."); + return true; + } + + List arguments = new ArrayList<>(Arrays.asList(args)); + + if (arguments.size() > 0) { + arguments.remove(0); + } + + try { + method.getMethod().invoke(method.getHandler(), sender, arguments); + } catch (InvocationTargetException | IllegalAccessException e) { + sender.sendMessage(ChatColor.RED + "Failed to perform command."); + e.printStackTrace(); + } + + return true; + } + + @Override + @Nonnull + @SuppressWarnings("unchecked") + public List tabComplete(@Nonnull CommandSender sender, @Nonnull String label, @Nonnull String[] args) { + if (args.length == 1) { + return methods.keySet().stream().filter(c -> !c.isEmpty()).collect(Collectors.toList()); + } + + if (args.length > 1) { + CommandMethod commandMethod = methods.get(args[0]); + Method autofiller = commandMethod.getAutofiller(); + + if (autofiller != null) { + try { + return (List) autofiller.invoke(commandMethod.getHandler(), sender, args); + } catch (InvocationTargetException | IllegalAccessException e) { + e.printStackTrace(); + } + } + } + + return new ArrayList<>(); + } +} diff --git a/src/main/java/net/nuggetmc/tplus/command/CommandMethod.java b/src/main/java/net/nuggetmc/tplus/command/CommandMethod.java new file mode 100644 index 0000000..771f8c9 --- /dev/null +++ b/src/main/java/net/nuggetmc/tplus/command/CommandMethod.java @@ -0,0 +1,66 @@ +package net.nuggetmc.tplus.command; + +import java.lang.reflect.Method; +import java.util.Set; + +public class CommandMethod { + + private final String name; + private final Set aliases; + private final String description; + private final String usage; + private final String permission; + + private final CommandInstance handler; + + private final Method method; + private final Method autofiller; + + public CommandMethod(String name, Set aliases, String description, String usage, String permission, CommandInstance handler, Method method, Method autofiller) { + this.name = name; + this.aliases = aliases; + this.description = description; + this.usage = usage; + this.permission = permission; + this.handler = handler; + this.method = method; + this.autofiller = autofiller; + } + + public String getName() { + return name; + } + + public Set getAliases() { + return aliases; + } + + public String getDescription() { + return description; + } + + public String getUsage() { + return usage; + } + + public String getPermission() { + return permission; + } + + public CommandInstance getHandler() { + return handler; + } + + public Method getMethod() { + return method; + } + + public Method getAutofiller() { + return autofiller; + } + + @Override + public String toString() { + return getClass().getSimpleName() + "{name=\"" + name + "\",aliases=" + aliases + ",description=\"" + description + "\",usage=\"" + usage + "\",permission=\"" + permission + "\",method=" + method + ",autofiller=" + autofiller + "}"; + } +} diff --git a/src/main/java/net/nuggetmc/tplus/command/annotation/Autofill.java b/src/main/java/net/nuggetmc/tplus/command/annotation/Autofill.java new file mode 100644 index 0000000..82186e8 --- /dev/null +++ b/src/main/java/net/nuggetmc/tplus/command/annotation/Autofill.java @@ -0,0 +1,4 @@ +package net.nuggetmc.tplus.command.annotation; + +public @interface Autofill { +} diff --git a/src/main/java/net/nuggetmc/tplus/command/annotation/Command.java b/src/main/java/net/nuggetmc/tplus/command/annotation/Command.java new file mode 100644 index 0000000..10ac89e --- /dev/null +++ b/src/main/java/net/nuggetmc/tplus/command/annotation/Command.java @@ -0,0 +1,22 @@ +package net.nuggetmc.tplus.command.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.METHOD}) +public @interface Command { + String name() default ""; + + String[] aliases() default {}; + + String desc() default "Blank description."; + + String usage() default ""; + + String autofill() default ""; + + boolean visible() default true; +} diff --git a/src/main/java/net/nuggetmc/tplus/command/annotation/Require.java b/src/main/java/net/nuggetmc/tplus/command/annotation/Require.java new file mode 100644 index 0000000..3850324 --- /dev/null +++ b/src/main/java/net/nuggetmc/tplus/command/annotation/Require.java @@ -0,0 +1,12 @@ +package net.nuggetmc.tplus.command.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.METHOD}) +public @interface Require { + String value(); +} diff --git a/src/main/java/net/nuggetmc/ai/command/commands/AICommand.java b/src/main/java/net/nuggetmc/tplus/command/commands/AICommand.java similarity index 59% rename from src/main/java/net/nuggetmc/ai/command/commands/AICommand.java rename to src/main/java/net/nuggetmc/tplus/command/commands/AICommand.java index 8df382f..35eae25 100644 --- a/src/main/java/net/nuggetmc/ai/command/commands/AICommand.java +++ b/src/main/java/net/nuggetmc/tplus/command/commands/AICommand.java @@ -1,18 +1,16 @@ -package net.nuggetmc.ai.command.commands; +package net.nuggetmc.tplus.command.commands; -import com.jonahseguin.drink.annotation.Autofill; -import com.jonahseguin.drink.annotation.Command; -import com.jonahseguin.drink.annotation.OptArg; -import com.jonahseguin.drink.annotation.Sender; -import com.jonahseguin.drink.utils.ChatUtils; -import net.nuggetmc.ai.TerminatorPlus; -import net.nuggetmc.ai.bot.Bot; -import net.nuggetmc.ai.bot.BotManager; -import net.nuggetmc.ai.bot.agent.legacyagent.ai.IntelligenceAgent; -import net.nuggetmc.ai.bot.agent.legacyagent.ai.NeuralNetwork; -import net.nuggetmc.ai.command.CommandHandler; -import net.nuggetmc.ai.command.CommandInstance; -import net.nuggetmc.ai.utils.MathUtils; +import net.nuggetmc.tplus.TerminatorPlus; +import net.nuggetmc.tplus.bot.Bot; +import net.nuggetmc.tplus.bot.BotManager; +import net.nuggetmc.tplus.bot.agent.legacyagent.ai.IntelligenceAgent; +import net.nuggetmc.tplus.bot.agent.legacyagent.ai.NeuralNetwork; +import net.nuggetmc.tplus.command.CommandHandler; +import net.nuggetmc.tplus.command.CommandInstance; +import net.nuggetmc.tplus.command.annotation.Autofill; +import net.nuggetmc.tplus.command.annotation.Command; +import net.nuggetmc.tplus.utils.ChatUtils; +import net.nuggetmc.tplus.utils.MathUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; @@ -36,18 +34,16 @@ public class AICommand extends CommandInstance { private IntelligenceAgent agent; - public AICommand(CommandHandler commandHandler) { - super(commandHandler); + public AICommand(CommandHandler handler, String name, String description, String... aliases) { + super(handler, name, description, aliases); this.plugin = TerminatorPlus.getInstance(); this.manager = plugin.getManager(); this.scheduler = Bukkit.getScheduler(); } - @Command( - desc = "The root command for bot AI training." - ) - public void root(@Sender CommandSender sender) { + @Command + public void root(CommandSender sender, List args) { commandHandler.sendRootInfo(this, sender); } @@ -56,8 +52,34 @@ public class AICommand extends CommandInstance { desc = "Create bots with random neural networks, collecting feed data.", usage = " [skin]" ) - public void random(@Sender Player sender, int n, String name, @OptArg String skin) { - manager.createBots(sender, name, skin, n, NeuralNetwork.RANDOM); + public void random(CommandSender sender, List args) { + if (!(sender instanceof Player)) { + return; + } + + if (args.size() < 2) { + commandHandler.sendUsage(sender, this, "random [skin]"); + return; + } + + String skin; + + if (args.size() < 3) { + skin = null; + } else { + skin = args.get(2); + } + + int n; + + try { + n = Integer.parseInt(args.get(0)); + } catch (NumberFormatException e) { + sender.sendMessage("The amount must be an integer!"); + return; + } + + manager.createBots((Player) sender, args.get(1), skin, n, NeuralNetwork.RANDOM); } @Command( @@ -65,22 +87,44 @@ public class AICommand extends CommandInstance { desc = "Begin an AI training session.", usage = " [skin]" ) - public void reinforcement(@Sender Player sender, int populationSize, String name, @OptArg String skin) { - // automatically do the -% thing, store values in map - // for now only 1 session at a time, have a set of commandsenders to see output, including console - // automatically reset all existing bots at the start, set targets towards each other - // also in the future make this a subcommand, with /ai reinforcement defaults, /ai reinforcement begin/start - // or just make /ai defaults with reinforcement options - - if (agent != null) { - sender.sendMessage("A session is already active."); + public void reinforcement(CommandSender sender, List args) { + if (!(sender instanceof Player)) { return; } - sender.sendMessage("Starting a new session..."); + Player player = (Player) sender; - agent = new IntelligenceAgent(this, populationSize, name, skin); - agent.addUser(sender); + if (args.size() < 2) { + commandHandler.sendUsage(player, this, "reinforcement [skin]"); + return; + } + + String skin; + + if (args.size() < 3) { + skin = null; + } else { + skin = args.get(2); + } + + int populationSize; + + try { + populationSize = Integer.parseInt(args.get(0)); + } catch (NumberFormatException e) { + player.sendMessage("The population size must be an integer!"); + return; + } + + if (agent != null) { + player.sendMessage("A session is already active."); + return; + } + + player.sendMessage("Starting a new session..."); + + agent = new IntelligenceAgent(this, populationSize, args.get(1), skin); + agent.addUser(player); } public IntelligenceAgent getSession() { @@ -91,7 +135,7 @@ public class AICommand extends CommandInstance { name = "stop", desc = "End a currently running AI training session." ) - public void stop(@Sender CommandSender sender) { + public void stop(CommandSender sender, List args) { if (agent == null) { sender.sendMessage("No session is currently active."); return; @@ -121,7 +165,14 @@ public class AICommand extends CommandInstance { usage = "", autofill = "infoAutofill" ) - public void info(@Sender CommandSender sender, String name) { + public void info(CommandSender sender, List args) { + if (args.isEmpty()) { + commandHandler.sendUsage(sender, this, "info "); + return; + } + + String name = args.get(0); + sender.sendMessage("Processing request..."); scheduler.runTaskAsynchronously(plugin, () -> { diff --git a/src/main/java/net/nuggetmc/ai/command/commands/BotCommand.java b/src/main/java/net/nuggetmc/tplus/command/commands/BotCommand.java similarity index 66% rename from src/main/java/net/nuggetmc/ai/command/commands/BotCommand.java rename to src/main/java/net/nuggetmc/tplus/command/commands/BotCommand.java index d77e9e9..95b1774 100644 --- a/src/main/java/net/nuggetmc/ai/command/commands/BotCommand.java +++ b/src/main/java/net/nuggetmc/tplus/command/commands/BotCommand.java @@ -1,16 +1,16 @@ -package net.nuggetmc.ai.command.commands; +package net.nuggetmc.tplus.command.commands; -import com.jonahseguin.drink.annotation.*; -import com.jonahseguin.drink.utils.ChatUtils; -import net.nuggetmc.ai.TerminatorPlus; -import net.nuggetmc.ai.bot.Bot; -import net.nuggetmc.ai.bot.BotManager; -import net.nuggetmc.ai.bot.agent.legacyagent.EnumTargetGoal; -import net.nuggetmc.ai.bot.agent.legacyagent.LegacyAgent; -import net.nuggetmc.ai.command.CommandHandler; -import net.nuggetmc.ai.command.CommandInstance; -import net.nuggetmc.ai.utils.Debugger; -import net.nuggetmc.ai.utils.StringUtilities; +import net.nuggetmc.tplus.TerminatorPlus; +import net.nuggetmc.tplus.bot.Bot; +import net.nuggetmc.tplus.bot.BotManager; +import net.nuggetmc.tplus.bot.agent.legacyagent.EnumTargetGoal; +import net.nuggetmc.tplus.bot.agent.legacyagent.LegacyAgent; +import net.nuggetmc.tplus.command.CommandHandler; +import net.nuggetmc.tplus.command.CommandInstance; +import net.nuggetmc.tplus.command.annotation.Autofill; +import net.nuggetmc.tplus.command.annotation.Command; +import net.nuggetmc.tplus.utils.ChatUtils; +import net.nuggetmc.tplus.utils.Debugger; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -35,8 +35,8 @@ public class BotCommand extends CommandInstance { private AICommand aiManager; - public BotCommand(CommandHandler commandHandler) { - super(commandHandler); + public BotCommand(CommandHandler handler, String name, String description, String... aliases) { + super(handler, name, description, aliases); this.handler = commandHandler; this.plugin = TerminatorPlus.getInstance(); @@ -46,15 +46,8 @@ public class BotCommand extends CommandInstance { this.formatter = new DecimalFormat("0.##"); } - @Override - public void onLoad() { - this.aiManager = (AICommand) handler.getCommand("ai"); - } - - @Command( - desc = "The root command for bot management." - ) - public void root(@Sender CommandSender sender) { + @Command + public void root(CommandSender sender, List args) { commandHandler.sendRootInfo(this, sender); } @@ -63,8 +56,25 @@ public class BotCommand extends CommandInstance { desc = "Create a bot.", usage = " [skin]" ) - public void create(@Sender Player sender, String name, @OptArg String skin) { - manager.createBots(sender, name, skin, 1); + public void create(CommandSender sender, List args) { + if (!(sender instanceof Player)) { + return; + } + + if (args.isEmpty()) { + commandHandler.sendUsage(sender, this, "create [skin]"); + return; + } + + String skin; + + if (args.size() < 2) { + skin = null; + } else { + skin = args.get(1); + } + + manager.createBots((Player) sender, args.get(0), skin, 1); } @Command( @@ -72,8 +82,34 @@ public class BotCommand extends CommandInstance { desc = "Create multiple bots at once.", usage = " [skin]" ) - public void multi(@Sender Player sender, int n, String name, @OptArg String skin) { - manager.createBots(sender, name, skin, n); + public void multi(CommandSender sender, List args) { + if (!(sender instanceof Player)) { + return; + } + + if (args.size() < 2) { + commandHandler.sendUsage(sender, this, "multi [skin]"); + return; + } + + String skin; + + if (args.size() < 3) { + skin = null; + } else { + skin = args.get(2); + } + + int n; + + try { + n = Integer.parseInt(args.get(0)); + } catch (NumberFormatException e) { + sender.sendMessage("The amount must be an integer!"); + return; + } + + manager.createBots((Player) sender, args.get(1), skin, n); } @Command( @@ -82,7 +118,14 @@ public class BotCommand extends CommandInstance { usage = "[name]", autofill = "infoAutofill" ) - public void info(@Sender CommandSender sender, @OptArg String name) { + public void info(CommandSender sender, List args) { + if (args.isEmpty()) { + commandHandler.sendUsage(sender, this, "info "); + return; + } + + String name = args.get(0); + if (name == null) { sender.sendMessage(ChatColor.YELLOW + "Bot GUI coming soon!"); return; @@ -140,13 +183,17 @@ public class BotCommand extends CommandInstance { name = "reset", desc = "Remove all loaded bots." ) - public void reset(@Sender CommandSender sender) { + public void reset(CommandSender sender, List args) { sender.sendMessage("Removing every bot..."); int size = manager.fetch().size(); manager.reset(); - sender.sendMessage("Removed " + ChatColor.RED + StringUtilities.NUMBER_FORMAT.format(size) + ChatColor.RESET + " entit" + (size == 1 ? "y" : "ies") + "."); + sender.sendMessage("Removed " + ChatColor.RED + ChatUtils.NUMBER_FORMAT.format(size) + ChatColor.RESET + " entit" + (size == 1 ? "y" : "ies") + "."); - if (aiManager.hasActiveSession()) { + if (aiManager == null) { + this.aiManager = (AICommand) handler.getCommand("ai"); + } + + if (aiManager != null && aiManager.hasActiveSession()) { Bukkit.dispatchCommand(sender, "ai stop"); } } @@ -157,7 +204,10 @@ public class BotCommand extends CommandInstance { aliases = "options", autofill = "settingsAutofill" ) - public void settings(@Sender CommandSender sender, @OptArg String arg1, @OptArg String arg2) { + public void settings(CommandSender sender, List args) { + String arg1 = args.isEmpty() ? null : args.get(0); + String arg2 = args.size() < 2 ? null : args.get(1); + String extra = ChatColor.GRAY + " [" + ChatColor.YELLOW + "/bot settings" + ChatColor.GRAY + "]"; if (arg1 == null || !arg1.equals("setgoal")) { @@ -215,7 +265,12 @@ public class BotCommand extends CommandInstance { usage = "", visible = false ) - public void debug(@Sender CommandSender sender, @Text String cmd) { - new Debugger(sender).execute(cmd); + public void debug(CommandSender sender, List args) { + if (args.isEmpty()) { + commandHandler.sendUsage(sender, this, "debug "); + return; + } + + new Debugger(sender).execute(args.get(0)); } } diff --git a/src/main/java/net/nuggetmc/ai/command/commands/MainCommand.java b/src/main/java/net/nuggetmc/tplus/command/commands/MainCommand.java similarity index 72% rename from src/main/java/net/nuggetmc/ai/command/commands/MainCommand.java rename to src/main/java/net/nuggetmc/tplus/command/commands/MainCommand.java index 2ecd043..96aff21 100644 --- a/src/main/java/net/nuggetmc/ai/command/commands/MainCommand.java +++ b/src/main/java/net/nuggetmc/tplus/command/commands/MainCommand.java @@ -1,39 +1,30 @@ -package net.nuggetmc.ai.command.commands; +package net.nuggetmc.tplus.command.commands; -import com.jonahseguin.drink.annotation.Command; -import com.jonahseguin.drink.annotation.Sender; -import com.jonahseguin.drink.command.DrinkCommandService; -import com.jonahseguin.drink.utils.ChatUtils; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.chat.HoverEvent; import net.md_5.bungee.api.chat.hover.content.Text; -import net.nuggetmc.ai.TerminatorPlus; -import net.nuggetmc.ai.command.CommandHandler; -import net.nuggetmc.ai.command.CommandInstance; -import org.bukkit.Bukkit; +import net.nuggetmc.tplus.TerminatorPlus; +import net.nuggetmc.tplus.command.CommandHandler; +import net.nuggetmc.tplus.command.CommandInstance; +import net.nuggetmc.tplus.command.annotation.Command; +import net.nuggetmc.tplus.utils.ChatUtils; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; -public class MainCommand extends CommandInstance { +import java.util.List; - private final DrinkCommandService drink; +public class MainCommand extends CommandInstance { private BaseComponent[] rootInfo; - public MainCommand(CommandHandler commandHandler, DrinkCommandService drink) { - super(commandHandler); - - this.drink = drink; - - Bukkit.getScheduler().runTask(TerminatorPlus.getInstance(), this::rootInfoSetup); + public MainCommand(CommandHandler handler, String name, String description, String... aliases) { + super(handler, name, description, aliases); } - @Command( - desc = "The TerminatorPlus main command." - ) - public void root(@Sender CommandSender sender) { + @Command + public void root(CommandSender sender, List args) { if (rootInfo == null) { rootInfoSetup(); } @@ -51,7 +42,7 @@ public class MainCommand extends CommandInstance { message.append(ChatUtils.BULLET_FORMATTED + "Author" + ChatUtils.BULLET_FORMATTED + ChatColor.YELLOW + "HorseNuggets\n"); message.append(ChatUtils.BULLET_FORMATTED + "Links" + ChatUtils.BULLET_FORMATTED); message.append(ChatColor.RED + "YouTube"); - message.event(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://www.youtube.com/horsenuggets")); + message.event(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://youtube.com/horsenuggets")); message.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text("Click to visit HorseNuggets' " + ChatColor.RED + "YouTube" + ChatColor.RESET + "!"))); message.append(", "); message.event((ClickEvent) null); @@ -64,7 +55,7 @@ public class MainCommand extends CommandInstance { message.event((HoverEvent) null); message.append("\nPlugin Commands:\n"); - drink.getCommands().forEach((name, command) -> { + commandHandler.getCommands().forEach((name, command) -> { if (!name.equalsIgnoreCase(pluginName)) { message.append(ChatUtils.BULLET_FORMATTED + ChatColor.YELLOW + "/" + name + ChatUtils.BULLET_FORMATTED + command.getDescription() + "\n"); } diff --git a/src/main/java/net/nuggetmc/ai/command/nms/TPCommand.java b/src/main/java/net/nuggetmc/tplus/command/nms/TPCommand.java similarity index 85% rename from src/main/java/net/nuggetmc/ai/command/nms/TPCommand.java rename to src/main/java/net/nuggetmc/tplus/command/nms/TPCommand.java index 48c7075..e655863 100644 --- a/src/main/java/net/nuggetmc/ai/command/nms/TPCommand.java +++ b/src/main/java/net/nuggetmc/tplus/command/nms/TPCommand.java @@ -1,4 +1,4 @@ -package net.nuggetmc.ai.command.nms; +package net.nuggetmc.tplus.command.nms; public class TPCommand { // this class (as well as some others like "give", "effect", etc.) will listen into the PlayerCommandPreProcessEvent diff --git a/src/main/java/net/nuggetmc/ai/utils/BotUtils.java b/src/main/java/net/nuggetmc/tplus/utils/BotUtils.java similarity index 97% rename from src/main/java/net/nuggetmc/ai/utils/BotUtils.java rename to src/main/java/net/nuggetmc/tplus/utils/BotUtils.java index 1e1060c..8956f75 100644 --- a/src/main/java/net/nuggetmc/ai/utils/BotUtils.java +++ b/src/main/java/net/nuggetmc/tplus/utils/BotUtils.java @@ -1,4 +1,4 @@ -package net.nuggetmc.ai.utils; +package net.nuggetmc.tplus.utils; import org.bukkit.Location; import org.bukkit.Material; diff --git a/src/main/java/net/nuggetmc/ai/utils/StringUtilities.java b/src/main/java/net/nuggetmc/tplus/utils/ChatUtils.java similarity index 51% rename from src/main/java/net/nuggetmc/ai/utils/StringUtilities.java rename to src/main/java/net/nuggetmc/tplus/utils/ChatUtils.java index b742833..75169fc 100644 --- a/src/main/java/net/nuggetmc/ai/utils/StringUtilities.java +++ b/src/main/java/net/nuggetmc/tplus/utils/ChatUtils.java @@ -1,11 +1,15 @@ -package net.nuggetmc.ai.utils; +package net.nuggetmc.tplus.utils; import net.md_5.bungee.api.ChatColor; import java.text.NumberFormat; import java.util.Locale; -public class StringUtilities { +public class ChatUtils { + public static final String LINE = ChatColor.GRAY + "------------------------------------------------"; + public static final String BULLET = "▪"; + public static final String BULLET_FORMATTED = ChatColor.GRAY + " ▪ " + ChatColor.RESET; + public static final String EXCEPTION_MESSAGE = ChatColor.RED + "An exception has occured. Please try again."; public static final NumberFormat NUMBER_FORMAT = NumberFormat.getNumberInstance(Locale.US); diff --git a/src/main/java/net/nuggetmc/ai/utils/Debugger.java b/src/main/java/net/nuggetmc/tplus/utils/Debugger.java similarity index 96% rename from src/main/java/net/nuggetmc/ai/utils/Debugger.java rename to src/main/java/net/nuggetmc/tplus/utils/Debugger.java index 6fa4b85..6dbd2e6 100644 --- a/src/main/java/net/nuggetmc/ai/utils/Debugger.java +++ b/src/main/java/net/nuggetmc/tplus/utils/Debugger.java @@ -1,13 +1,13 @@ -package net.nuggetmc.ai.utils; +package net.nuggetmc.tplus.utils; import net.minecraft.server.v1_16_R3.EntityLiving; -import net.nuggetmc.ai.TerminatorPlus; -import net.nuggetmc.ai.bot.Bot; -import net.nuggetmc.ai.bot.agent.Agent; -import net.nuggetmc.ai.bot.agent.legacyagent.LegacyAgent; -import net.nuggetmc.ai.bot.agent.legacyagent.ai.IntelligenceAgent; -import net.nuggetmc.ai.bot.agent.legacyagent.ai.NeuralNetwork; -import net.nuggetmc.ai.command.commands.AICommand; +import net.nuggetmc.tplus.TerminatorPlus; +import net.nuggetmc.tplus.bot.Bot; +import net.nuggetmc.tplus.bot.agent.Agent; +import net.nuggetmc.tplus.bot.agent.legacyagent.LegacyAgent; +import net.nuggetmc.tplus.bot.agent.legacyagent.ai.IntelligenceAgent; +import net.nuggetmc.tplus.bot.agent.legacyagent.ai.NeuralNetwork; +import net.nuggetmc.tplus.command.commands.AICommand; import org.bukkit.*; import org.bukkit.command.CommandSender; import org.bukkit.entity.ArmorStand; @@ -33,7 +33,10 @@ public class Debugger { public static void log(Object... objects) { String[] values = formStringArray(objects); - Bukkit.getOnlinePlayers().stream().filter(ServerOperator::isOp).forEach(p -> p.sendMessage(PREFIX + String.join(" ", values))); + String message = PREFIX + String.join(" ", values); + + Bukkit.getConsoleSender().sendMessage(message); + Bukkit.getOnlinePlayers().stream().filter(ServerOperator::isOp).forEach(p -> p.sendMessage(message)); } private static String[] formStringArray(Object[] objects) { diff --git a/src/main/java/net/nuggetmc/ai/utils/ItemUtils.java b/src/main/java/net/nuggetmc/tplus/utils/ItemUtils.java similarity index 97% rename from src/main/java/net/nuggetmc/ai/utils/ItemUtils.java rename to src/main/java/net/nuggetmc/tplus/utils/ItemUtils.java index 79dda46..7b8b691 100644 --- a/src/main/java/net/nuggetmc/ai/utils/ItemUtils.java +++ b/src/main/java/net/nuggetmc/tplus/utils/ItemUtils.java @@ -1,4 +1,4 @@ -package net.nuggetmc.ai.utils; +package net.nuggetmc.tplus.utils; import org.bukkit.inventory.ItemStack; diff --git a/src/main/java/net/nuggetmc/ai/utils/MathUtils.java b/src/main/java/net/nuggetmc/tplus/utils/MathUtils.java similarity index 98% rename from src/main/java/net/nuggetmc/ai/utils/MathUtils.java rename to src/main/java/net/nuggetmc/tplus/utils/MathUtils.java index 5dd492c..8f2beea 100644 --- a/src/main/java/net/nuggetmc/ai/utils/MathUtils.java +++ b/src/main/java/net/nuggetmc/tplus/utils/MathUtils.java @@ -1,6 +1,6 @@ -package net.nuggetmc.ai.utils; +package net.nuggetmc.tplus.utils; -import net.nuggetmc.ai.bot.Bot; +import net.nuggetmc.tplus.bot.Bot; import org.bukkit.util.NumberConversions; import org.bukkit.util.Vector; diff --git a/src/main/java/net/nuggetmc/ai/utils/MojangAPI.java b/src/main/java/net/nuggetmc/tplus/utils/MojangAPI.java similarity index 97% rename from src/main/java/net/nuggetmc/ai/utils/MojangAPI.java rename to src/main/java/net/nuggetmc/tplus/utils/MojangAPI.java index cb85c0c..f38996c 100644 --- a/src/main/java/net/nuggetmc/ai/utils/MojangAPI.java +++ b/src/main/java/net/nuggetmc/tplus/utils/MojangAPI.java @@ -1,4 +1,4 @@ -package net.nuggetmc.ai.utils; +package net.nuggetmc.tplus.utils; import com.google.gson.JsonObject; import com.google.gson.JsonParser; diff --git a/src/main/java/net/nuggetmc/ai/utils/PlayerUtils.java b/src/main/java/net/nuggetmc/tplus/utils/PlayerUtils.java similarity index 96% rename from src/main/java/net/nuggetmc/ai/utils/PlayerUtils.java rename to src/main/java/net/nuggetmc/tplus/utils/PlayerUtils.java index 3e6e717..002a851 100644 --- a/src/main/java/net/nuggetmc/ai/utils/PlayerUtils.java +++ b/src/main/java/net/nuggetmc/tplus/utils/PlayerUtils.java @@ -1,6 +1,6 @@ -package net.nuggetmc.ai.utils; +package net.nuggetmc.tplus.utils; -import net.nuggetmc.ai.TerminatorPlus; +import net.nuggetmc.tplus.TerminatorPlus; import org.bukkit.GameMode; import org.bukkit.Location; import org.json.simple.JSONArray; diff --git a/src/main/java/net/nuggetmc/ai/utils/Singularity.java b/src/main/java/net/nuggetmc/tplus/utils/Singularity.java similarity index 92% rename from src/main/java/net/nuggetmc/ai/utils/Singularity.java rename to src/main/java/net/nuggetmc/tplus/utils/Singularity.java index d3f49d7..a336821 100644 --- a/src/main/java/net/nuggetmc/ai/utils/Singularity.java +++ b/src/main/java/net/nuggetmc/tplus/utils/Singularity.java @@ -1,4 +1,4 @@ -package net.nuggetmc.ai.utils; +package net.nuggetmc.tplus.utils; public class Singularity { diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index bbfa612..48de72d 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: TerminatorPlus -main: net.nuggetmc.ai.TerminatorPlus +main: net.nuggetmc.tplus.TerminatorPlus version: 3.0-BETA api-version: 1.16 author: HorseNuggets