From 6243636243cd388026953c273b716549f1461a30 Mon Sep 17 00:00:00 2001 From: BattleDash Date: Sat, 26 Jun 2021 19:08:15 -0700 Subject: [PATCH] Command system rewrite using Drink and Maven support. --- .gitignore | 36 ++++++ pom.xml | 63 ++++++++++ src/main/java/net/nuggetmc/ai/PlayerAI.java | 54 +++++++++ .../nuggetmc/ai/commands/CommandHandler.java | 45 +++++++ .../nuggetmc/ai/commands/CommandInstance.java | 14 +++ .../ai/commands/commands/PlayerAICommand.java | 62 ++++++++++ .../java}/net/nuggetmc/ai/npc/NPC.java | 0 .../java}/net/nuggetmc/ai/npc/NPCManager.java | 0 .../net/nuggetmc/ai/utils/ChatUtils.java | 0 .../java/net/nuggetmc/ai/utils/MojangAPI.java | 24 ++++ .../net/nuggetmc/ai/utils/SteveUUID.java | 0 src/{ => main/resources}/plugin.yml | 7 +- src/net/nuggetmc/ai/PlayerAI.java | 68 ----------- src/net/nuggetmc/ai/cmd/CommandHandler.java | 112 ------------------ src/net/nuggetmc/ai/cmd/CommandInterface.java | 12 -- .../ai/cmd/commands/CreateCommand.java | 63 ---------- .../ai/cmd/commands/DebugCommand.java | 52 -------- .../nuggetmc/ai/cmd/commands/InfoCommand.java | 40 ------- .../ai/cmd/commands/ResetCommand.java | 64 ---------- src/net/nuggetmc/ai/utils/MojangAPI.java | 28 ----- 20 files changed, 299 insertions(+), 445 deletions(-) create mode 100644 .gitignore create mode 100644 pom.xml create mode 100644 src/main/java/net/nuggetmc/ai/PlayerAI.java create mode 100644 src/main/java/net/nuggetmc/ai/commands/CommandHandler.java create mode 100644 src/main/java/net/nuggetmc/ai/commands/CommandInstance.java create mode 100644 src/main/java/net/nuggetmc/ai/commands/commands/PlayerAICommand.java rename src/{ => main/java}/net/nuggetmc/ai/npc/NPC.java (100%) rename src/{ => main/java}/net/nuggetmc/ai/npc/NPCManager.java (100%) rename src/{ => main/java}/net/nuggetmc/ai/utils/ChatUtils.java (100%) create mode 100644 src/main/java/net/nuggetmc/ai/utils/MojangAPI.java rename src/{ => main/java}/net/nuggetmc/ai/utils/SteveUUID.java (100%) rename src/{ => main/resources}/plugin.yml (64%) delete mode 100644 src/net/nuggetmc/ai/PlayerAI.java delete mode 100644 src/net/nuggetmc/ai/cmd/CommandHandler.java delete mode 100644 src/net/nuggetmc/ai/cmd/CommandInterface.java delete mode 100644 src/net/nuggetmc/ai/cmd/commands/CreateCommand.java delete mode 100644 src/net/nuggetmc/ai/cmd/commands/DebugCommand.java delete mode 100644 src/net/nuggetmc/ai/cmd/commands/InfoCommand.java delete mode 100644 src/net/nuggetmc/ai/cmd/commands/ResetCommand.java delete mode 100644 src/net/nuggetmc/ai/utils/MojangAPI.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6cdb71f --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +.idea/ +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +# https://github.com/takari/maven-wrapper#usage-without-binary-jar +.mvn/wrapper/maven-wrapper.jar diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..dbd5d97 --- /dev/null +++ b/pom.xml @@ -0,0 +1,63 @@ + + + 4.0.0 + + me.horsenuggets + PlayerAI + 1.0-SNAPSHOT + PlayerAI + + + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.1 + + + package + + shade + + + + + true + shaded + + + + + + + + + + + org.spigotmc + spigot + 1.16.4-R0.1-SNAPSHOT + + + com.jonahseguin + drink + 1.0.1 + compile + + + + \ No newline at end of file diff --git a/src/main/java/net/nuggetmc/ai/PlayerAI.java b/src/main/java/net/nuggetmc/ai/PlayerAI.java new file mode 100644 index 0000000..6024d18 --- /dev/null +++ b/src/main/java/net/nuggetmc/ai/PlayerAI.java @@ -0,0 +1,54 @@ +package net.nuggetmc.ai; + +import net.nuggetmc.ai.commands.CommandHandler; +import net.nuggetmc.ai.npc.NPCManager; +import org.bukkit.command.PluginCommand; +import org.bukkit.plugin.java.JavaPlugin; + +public class PlayerAI extends JavaPlugin { + + public static final double VERSION = 1.0; + + private static PlayerAI instance; + + private CommandHandler handler; + private NPCManager manager; + + public static PlayerAI getInstance() { + return instance; + } + + public CommandHandler getHandler() { + return handler; + } + + public NPCManager getManager() { + return manager; + } + + @Override + public void onEnable() { + instance = this; + + // Create Instances + this.handler = new CommandHandler(); + this.manager = new NPCManager(this); + + // Register all the things + this.registerEvents(); + + // Create Netty injections + manager.connectAll(); + } + + @Override + public void onDisable() { + manager.reset(); + manager.disconnectAll(); + } + + private void registerEvents() { + getServer().getPluginManager().registerEvents(manager, this); + } + +} diff --git a/src/main/java/net/nuggetmc/ai/commands/CommandHandler.java b/src/main/java/net/nuggetmc/ai/commands/CommandHandler.java new file mode 100644 index 0000000..3b69a3a --- /dev/null +++ b/src/main/java/net/nuggetmc/ai/commands/CommandHandler.java @@ -0,0 +1,45 @@ +package net.nuggetmc.ai.commands; + +import com.jonahseguin.drink.CommandService; +import com.jonahseguin.drink.Drink; +import com.jonahseguin.drink.annotation.Command; +import com.jonahseguin.drink.command.DrinkCommandContainer; +import com.jonahseguin.drink.command.DrinkCommandService; +import net.nuggetmc.ai.PlayerAI; +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.stream.Collectors; + +public class CommandHandler { + + private final DrinkCommandService drink; + + public CommandHandler() { + drink = (DrinkCommandService) Drink.get(PlayerAI.getInstance()); + drink.register(new PlayerAICommand(this), "playerai", "pai"); + drink.registerCommands(); + } + + public List getUsage(Class clazz) { + return getSubCommands(clazz).stream().map(c -> { + Command command = c.getAnnotation(Command.class); + return ChatColor.GRAY + " ▪ " + ChatColor.YELLOW + "/" + getRootName(clazz) + (command.name().isEmpty() ? "" : " " + command.name()) + ChatColor.GRAY + " ▪ " + + ChatColor.RESET + command.desc(); + }).collect(Collectors.toList()); + } + + private String getRootName(Class clazz) { + return drink.getCommands().entrySet().stream() + .filter(c -> c.getValue().getObject().getClass().isAssignableFrom(clazz)).map(Map.Entry::getKey).findFirst().orElse(null); + } + + private List getSubCommands(Class clazz) { + return Arrays.stream(clazz.getDeclaredMethods()).filter(m -> m.isAnnotationPresent(Command.class)).collect(Collectors.toList()); + } + +} diff --git a/src/main/java/net/nuggetmc/ai/commands/CommandInstance.java b/src/main/java/net/nuggetmc/ai/commands/CommandInstance.java new file mode 100644 index 0000000..d171c77 --- /dev/null +++ b/src/main/java/net/nuggetmc/ai/commands/CommandInstance.java @@ -0,0 +1,14 @@ +package net.nuggetmc.ai.commands; + +public abstract class CommandInstance { + + private final CommandHandler commandHandler; + + public CommandInstance(CommandHandler commandHandler) { + this.commandHandler = commandHandler; + } + + public CommandHandler getCommandHandler() { + return commandHandler; + } +} diff --git a/src/main/java/net/nuggetmc/ai/commands/commands/PlayerAICommand.java b/src/main/java/net/nuggetmc/ai/commands/commands/PlayerAICommand.java new file mode 100644 index 0000000..8674f6e --- /dev/null +++ b/src/main/java/net/nuggetmc/ai/commands/commands/PlayerAICommand.java @@ -0,0 +1,62 @@ +package net.nuggetmc.ai.commands.commands; + +import com.jonahseguin.drink.annotation.Command; +import com.jonahseguin.drink.annotation.OptArg; +import com.jonahseguin.drink.annotation.Sender; +import com.jonahseguin.drink.annotation.Text; +import net.nuggetmc.ai.PlayerAI; +import net.nuggetmc.ai.commands.CommandHandler; +import net.nuggetmc.ai.commands.CommandInstance; +import net.nuggetmc.ai.npc.NPC; +import net.nuggetmc.ai.npc.NPCManager; +import net.nuggetmc.ai.utils.ChatUtils; +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; + +import java.text.NumberFormat; +import java.util.Locale; + +public class PlayerAICommand extends CommandInstance { + + public PlayerAICommand(CommandHandler commandHandler) { + super(commandHandler); + } + + @Command(name = "", desc = "Test Description") + public void rootCommand(@Sender Player sender) { + 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); + } + + sender.sendMessage(ChatUtils.LINE); + } + + @Command(name = "create", desc = "Create bots.", usage = " [skin]") + public void createBotCommand(@Sender Player sender, String name, @OptArg() String skin) { + NPC.createNPC(name, sender.getLocation(), skin.isEmpty() ? name : skin); + } + + @Command(name = "debug", desc = "Debug bot stats.") + public void debugCommand(@Sender Player sender) { + + } + + @Command(name = "info", desc = "Information about loaded bots.") + public void infoCommand(@Sender Player sender) { + + } + + @Command(name = "reset", desc = "Remove all loaded bots.") + public void resetCommand(@Sender Player sender) { + sender.sendMessage("Removing every bot..."); + NPCManager manager = PlayerAI.getInstance().getManager(); + int size = manager.fetch().size(); + manager.reset(); + String formatted = NumberFormat.getNumberInstance(Locale.US).format(size); + sender.sendMessage("Removed " + ChatColor.RED + formatted + ChatColor.RESET + " entit" + (size == 1 ? "y" : "ies") + "."); + } + +} diff --git a/src/net/nuggetmc/ai/npc/NPC.java b/src/main/java/net/nuggetmc/ai/npc/NPC.java similarity index 100% rename from src/net/nuggetmc/ai/npc/NPC.java rename to src/main/java/net/nuggetmc/ai/npc/NPC.java diff --git a/src/net/nuggetmc/ai/npc/NPCManager.java b/src/main/java/net/nuggetmc/ai/npc/NPCManager.java similarity index 100% rename from src/net/nuggetmc/ai/npc/NPCManager.java rename to src/main/java/net/nuggetmc/ai/npc/NPCManager.java diff --git a/src/net/nuggetmc/ai/utils/ChatUtils.java b/src/main/java/net/nuggetmc/ai/utils/ChatUtils.java similarity index 100% rename from src/net/nuggetmc/ai/utils/ChatUtils.java rename to src/main/java/net/nuggetmc/ai/utils/ChatUtils.java diff --git a/src/main/java/net/nuggetmc/ai/utils/MojangAPI.java b/src/main/java/net/nuggetmc/ai/utils/MojangAPI.java new file mode 100644 index 0000000..7cab667 --- /dev/null +++ b/src/main/java/net/nuggetmc/ai/utils/MojangAPI.java @@ -0,0 +1,24 @@ +package net.nuggetmc.ai.utils; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + +import java.io.InputStreamReader; +import java.net.URL; + +public class MojangAPI { + + public static String[] getSkin(String name) { + try { + String uuid = new JsonParser().parse(new InputStreamReader(new URL("https://api.mojang.com/users/profiles/minecraft/" + name) + .openStream())).getAsJsonObject().get("id").getAsString(); + JsonObject property = new JsonParser() + .parse(new InputStreamReader(new URL("https://sessionserver.mojang.com/session/minecraft/profile/" + uuid + "?unsigned=false") + .openStream())).getAsJsonObject().get("properties").getAsJsonArray().get(0).getAsJsonObject(); + return new String[] {property.get("value").getAsString(), property.get("signature").getAsString()}; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } +} diff --git a/src/net/nuggetmc/ai/utils/SteveUUID.java b/src/main/java/net/nuggetmc/ai/utils/SteveUUID.java similarity index 100% rename from src/net/nuggetmc/ai/utils/SteveUUID.java rename to src/main/java/net/nuggetmc/ai/utils/SteveUUID.java diff --git a/src/plugin.yml b/src/main/resources/plugin.yml similarity index 64% rename from src/plugin.yml rename to src/main/resources/plugin.yml index 3c4d9e6..7d8ef23 100644 --- a/src/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,12 +3,7 @@ main: net.nuggetmc.ai.PlayerAI version: 1.0 api-version: 1.16 author: HorseNuggets -commands: - playerai: - description: The PlayerAI base command. - permission: playerai.manage - usage: /playerai - aliases: [bot, pai, ai, npc] + permissions: playerai.*: description: PlayerAI parent permission. diff --git a/src/net/nuggetmc/ai/PlayerAI.java b/src/net/nuggetmc/ai/PlayerAI.java deleted file mode 100644 index ce7cd64..0000000 --- a/src/net/nuggetmc/ai/PlayerAI.java +++ /dev/null @@ -1,68 +0,0 @@ -package net.nuggetmc.ai; - -import net.nuggetmc.ai.cmd.CommandHandler; -import net.nuggetmc.ai.cmd.CommandInterface; -import net.nuggetmc.ai.cmd.commands.CreateCommand; -import net.nuggetmc.ai.cmd.commands.DebugCommand; -import net.nuggetmc.ai.cmd.commands.InfoCommand; -import net.nuggetmc.ai.cmd.commands.ResetCommand; -import net.nuggetmc.ai.npc.NPCManager; -import org.bukkit.command.PluginCommand; -import org.bukkit.plugin.java.JavaPlugin; - -public class PlayerAI extends JavaPlugin { - - private static PlayerAI instance; - - private final CommandHandler handler; - private final NPCManager manager; - - public PlayerAI() { - instance = this; - - this.handler = new CommandHandler(); - this.manager = new NPCManager(this); - } - - public static PlayerAI getInstance() { - return instance; - } - - public CommandHandler getHandler() { - return handler; - } - - public NPCManager getManager() { - return manager; - } - - @Override - public void onEnable() { - getServer().getPluginManager().registerEvents(manager, this); - registerCommands(); - - manager.connectAll(); - } - - @Override - public void onDisable() { - manager.reset(); - manager.disconnectAll(); - } - - private void registerCommands() { - handler.register(new CommandInterface[] { - new CreateCommand(), - new InfoCommand(), - new DebugCommand(), - new ResetCommand() - }); - - PluginCommand command = getCommand("playerai"); - - if (command != null) { - command.setExecutor(handler); - command.setTabCompleter(handler); - } - } -} diff --git a/src/net/nuggetmc/ai/cmd/CommandHandler.java b/src/net/nuggetmc/ai/cmd/CommandHandler.java deleted file mode 100644 index bfcf1fc..0000000 --- a/src/net/nuggetmc/ai/cmd/CommandHandler.java +++ /dev/null @@ -1,112 +0,0 @@ -package net.nuggetmc.ai.cmd; - -import net.md_5.bungee.api.ChatColor; -import net.nuggetmc.ai.utils.ChatUtils; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; - -import java.util.*; - -public class CommandHandler implements CommandExecutor, TabCompleter { - - private final Map commands = new HashMap<>(); - - private final String prefix = "bot"; - - public void register(CommandInterface[] subCmds) { - for (CommandInterface cmd : subCmds) { - commands.put(cmd.getName(), cmd); - } - } - - public String fetchName(CommandInterface subCmd) { - String name = subCmd.getClass().getSimpleName(); - return name.substring(0, name.length() - 7).toLowerCase(); - } - - private boolean exists(String name) { - return commands.containsKey(name.toLowerCase()); - } - - private CommandInterface getExecutor(String name) { - return commands.get(name.toLowerCase()); - } - - public String nonPlayerMsg() { - return ChatColor.RED + "You must be a player to execute this command!"; - } - - public String usageMsg(CommandInterface subCmd) { - return ChatColor.RED + "Invalid arguments!\nUsage: /" + prefix + " " + subCmd.getName() + " " + subCmd.getUsage(); - } - - private void sendCmdInfo(CommandSender sender) { - sender.sendMessage(ChatUtils.LINE); - sender.sendMessage(ChatColor.GOLD + "PlayerAI" + ChatColor.GRAY + " [" + ChatColor.RED + "v1.0" + ChatColor.GRAY + "]"); - - for (Map.Entry entry : commands.entrySet()) { - sender.sendMessage(ChatColor.GRAY + " ▪ " + ChatColor.YELLOW + "/" + prefix + " " + entry.getKey() + ChatColor.GRAY + " ▪ " - + ChatColor.RESET + entry.getValue().getDescription()); - } - - sender.sendMessage(ChatUtils.LINE); - } - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { - if (args.length == 0 || !exists(args[0])) { - sendCmdInfo(sender); - return true; - } - - getExecutor(args[0]).onCommand(sender, cmd, label, Arrays.copyOfRange(args, 1, args.length)); - return true; - } - - @Override - public List onTabComplete(CommandSender sender, Command cmd, String label, String[] args) { - if (!cmd.getName().equals("playerai")) return null; - - List groupnames; - int n = args.length; - - switch (n) { - case 1: - groupnames = new ArrayList<>(commands.keySet()); - String arg = args[n - 1]; - - if (!isEmptyTab(arg)) { - return autofill(groupnames, arg); - } - - return groupnames; - - default: - return null; - } - } - - private boolean isEmptyTab(String s) { - return s == null || s.equals("") || s.equals(" ") || s.isEmpty(); - } - - private List autofill(List groupnames, String input) { - List list = new ArrayList<>(); - - for (String entry : groupnames) { - if (entry.length() >= input.length()) { - if (input.equalsIgnoreCase(entry.substring(0, input.length()))) { - list.add(entry); - } - } - } - - if (list.isEmpty()) { - return groupnames; - } - - return list; - } -} diff --git a/src/net/nuggetmc/ai/cmd/CommandInterface.java b/src/net/nuggetmc/ai/cmd/CommandInterface.java deleted file mode 100644 index 07b2b49..0000000 --- a/src/net/nuggetmc/ai/cmd/CommandInterface.java +++ /dev/null @@ -1,12 +0,0 @@ -package net.nuggetmc.ai.cmd; - -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; - -public interface CommandInterface { - String getName(); - String getDescription(); - String getUsage(); - - void onCommand(CommandSender sender, Command cmd, String label, String[] args); -} diff --git a/src/net/nuggetmc/ai/cmd/commands/CreateCommand.java b/src/net/nuggetmc/ai/cmd/commands/CreateCommand.java deleted file mode 100644 index d6180b6..0000000 --- a/src/net/nuggetmc/ai/cmd/commands/CreateCommand.java +++ /dev/null @@ -1,63 +0,0 @@ -package net.nuggetmc.ai.cmd.commands; - -import net.md_5.bungee.api.ChatColor; -import net.nuggetmc.ai.PlayerAI; -import net.nuggetmc.ai.cmd.CommandHandler; -import net.nuggetmc.ai.cmd.CommandInterface; -import net.nuggetmc.ai.npc.NPC; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -public class CreateCommand implements CommandInterface { - - private final CommandHandler HANDLER; - - private final String NAME; - private final String DESCRIPTION = "Create bots."; - private final String CMD_ARGS = " [skin]"; - - public CreateCommand() { - this.HANDLER = PlayerAI.getInstance().getHandler(); - this.NAME = HANDLER.fetchName(this); - } - - @Override - public String getName() { - return NAME; - } - - @Override - public String getDescription() { - return DESCRIPTION; - } - - @Override - public String getUsage() { - return CMD_ARGS; - } - - @Override - public void onCommand(CommandSender sender, Command cmd, String label, String[] args) { - if (!(sender instanceof Player)) { - sender.sendMessage(HANDLER.nonPlayerMsg()); - return; - } - - if (args.length == 0) { - sender.sendMessage(HANDLER.usageMsg(this)); - return; - } - - String skin; - - if (args.length > 1) { - skin = args[1]; - } else { - skin = args[0]; - } - - Player player = (Player) sender; - NPC npc = NPC.createNPC(args[0], player.getLocation(), skin); - } -} diff --git a/src/net/nuggetmc/ai/cmd/commands/DebugCommand.java b/src/net/nuggetmc/ai/cmd/commands/DebugCommand.java deleted file mode 100644 index 720190d..0000000 --- a/src/net/nuggetmc/ai/cmd/commands/DebugCommand.java +++ /dev/null @@ -1,52 +0,0 @@ -package net.nuggetmc.ai.cmd.commands; - -import net.nuggetmc.ai.PlayerAI; -import net.nuggetmc.ai.cmd.CommandHandler; -import net.nuggetmc.ai.cmd.CommandInterface; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.scheduler.BukkitRunnable; - -import java.util.HashSet; -import java.util.Set; - -public class DebugCommand implements CommandInterface { - - private final CommandHandler handler; - - private final String name; - private final String description = "Debug bot stats."; - private final String cmdArgs = ""; - - public DebugCommand() { - this.handler = PlayerAI.getInstance().getHandler(); - this.name = handler.fetchName(this); - } - - @Override - public String getName() { - return name; - } - - @Override - public String getDescription() { - return description; - } - - @Override - public String getUsage() { - return cmdArgs; - } - - private boolean active = false; - - private Set tasks = new HashSet<>(); - - private double round2Dec(double n) { - return Math.round(n * 100) / 100.0; - } - - @Override - public void onCommand(CommandSender sender, Command cmd, String label, String[] args) { - } -} diff --git a/src/net/nuggetmc/ai/cmd/commands/InfoCommand.java b/src/net/nuggetmc/ai/cmd/commands/InfoCommand.java deleted file mode 100644 index 6fe3291..0000000 --- a/src/net/nuggetmc/ai/cmd/commands/InfoCommand.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.nuggetmc.ai.cmd.commands; - -import net.nuggetmc.ai.PlayerAI; -import net.nuggetmc.ai.cmd.CommandHandler; -import net.nuggetmc.ai.cmd.CommandInterface; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; - -public class InfoCommand implements CommandInterface { - - private final CommandHandler handler; - - private final String name; - private final String description = "Information about loaded bots."; - private final String cmdArgs = ""; - - public InfoCommand() { - this.handler = PlayerAI.getInstance().getHandler(); - this.name = handler.fetchName(this); - } - - @Override - public String getName() { - return name; - } - - @Override - public String getDescription() { - return description; - } - - @Override - public String getUsage() { - return cmdArgs; - } - - @Override - public void onCommand(CommandSender sender, Command cmd, String label, String[] args) { - } -} diff --git a/src/net/nuggetmc/ai/cmd/commands/ResetCommand.java b/src/net/nuggetmc/ai/cmd/commands/ResetCommand.java deleted file mode 100644 index 94c4f11..0000000 --- a/src/net/nuggetmc/ai/cmd/commands/ResetCommand.java +++ /dev/null @@ -1,64 +0,0 @@ -package net.nuggetmc.ai.cmd.commands; - -import net.md_5.bungee.api.ChatColor; -import net.nuggetmc.ai.PlayerAI; -import net.nuggetmc.ai.cmd.CommandHandler; -import net.nuggetmc.ai.cmd.CommandInterface; -import net.nuggetmc.ai.npc.NPCManager; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; - -import java.text.NumberFormat; -import java.util.Locale; - -public class ResetCommand implements CommandInterface { - - private final PlayerAI plugin; - - private final CommandHandler handler; - private final NPCManager manager; - - private final String name; - private final String description = "Remove all loaded bots."; - private final String cmdArgs = ""; - - public ResetCommand() { - this.plugin = PlayerAI.getInstance(); - this.handler = plugin.getHandler(); - this.manager = plugin.getManager(); - this.name = handler.fetchName(this); - } - - @Override - public String getName() { - return name; - } - - @Override - public String getDescription() { - return description; - } - - @Override - public String getUsage() { - return cmdArgs; - } - - @Override - public void onCommand(CommandSender sender, Command cmd, String label, String[] args) { - sender.sendMessage("Removing every bot..."); - int size = manager.fetch().size(); - - manager.reset(); - - String en; - if (size == 1) { - en = "y"; - } else { - en = "ies"; - } - - String formatted = NumberFormat.getNumberInstance(Locale.US).format(size); - sender.sendMessage("Removed " + ChatColor.RED + formatted + ChatColor.RESET + " entit" + en + "."); - } -} diff --git a/src/net/nuggetmc/ai/utils/MojangAPI.java b/src/net/nuggetmc/ai/utils/MojangAPI.java deleted file mode 100644 index c9764f7..0000000 --- a/src/net/nuggetmc/ai/utils/MojangAPI.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.nuggetmc.ai.utils; - -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; - -import java.io.InputStreamReader; -import java.net.URL; - -public class MojangAPI { - - public static String[] getSkin(String name) { - try { - URL url = new URL("https://api.mojang.com/users/profiles/minecraft/" + name); - InputStreamReader reader = new InputStreamReader(url.openStream()); - String uuid = new JsonParser().parse(reader).getAsJsonObject().get("id").getAsString(); - - URL url2 = new URL("https://sessionserver.mojang.com/session/minecraft/profile/" + uuid + "?unsigned=false"); - InputStreamReader reader2 = new InputStreamReader(url2.openStream()); - JsonObject property = new JsonParser().parse(reader2).getAsJsonObject().get("properties").getAsJsonArray().get(0).getAsJsonObject(); - String texture = property.get("value").getAsString(); - String signature = property.get("signature").getAsString(); - - return new String[] {texture, signature}; - } catch (Exception e) { - return null; - } - } -}