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 extends CommandInstance> 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 extends CommandInstance> 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 extends CommandInstance> 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;
- }
- }
-}