From 0f86796f964b9ba0c80bdb71bf2fcde3407af4e0 Mon Sep 17 00:00:00 2001 From: batchprogrammer314 Date: Sun, 4 Jul 2021 03:15:30 -0500 Subject: [PATCH] command handler optimizations --- src/main/java/net/nuggetmc/ai/bot/Bot.java | 25 +++++---- .../net/nuggetmc/ai/bot/agent/BotAgent.java | 3 +- .../nuggetmc/ai/command/CommandHandler.java | 7 ++- .../ai/command/commands/PlayerAICommand.java | 52 ++++++++++++------- .../java/net/nuggetmc/ai/utils/MathUtils.java | 9 ++++ .../java/net/nuggetmc/ai/utils/MojangAPI.java | 2 +- 6 files changed, 62 insertions(+), 36 deletions(-) diff --git a/src/main/java/net/nuggetmc/ai/bot/Bot.java b/src/main/java/net/nuggetmc/ai/bot/Bot.java index 560d10f..10b1508 100644 --- a/src/main/java/net/nuggetmc/ai/bot/Bot.java +++ b/src/main/java/net/nuggetmc/ai/bot/Bot.java @@ -128,11 +128,13 @@ public class Bot extends EntityPlayer { groundTicks = 0; } - Player botPlayer = getBukkitEntity(); - if (botPlayer.isDead()) return; + Player player = getBukkitEntity(); + if (player.isDead()) return; - double health = botPlayer.getHealth(); - double maxHealth = botPlayer.getHealthScale(); + updateLocation(); + + double health = player.getHealth(); + double maxHealth = player.getHealthScale(); double amount; if (health < maxHealth - regenAmount) { @@ -141,9 +143,7 @@ public class Bot extends EntityPlayer { amount = maxHealth; } - botPlayer.setHealth(amount); - - updateLocation(); + player.setHealth(amount); } private void updateLocation() { @@ -182,10 +182,7 @@ public class Bot extends EntityPlayer { } public void punch() { - PacketPlayOutAnimation packet = new PacketPlayOutAnimation(this, 0); - for (Player player : Bukkit.getOnlinePlayers()) { - ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet); - } + swingHand(EnumHand.MAIN_HAND); } @Override @@ -293,8 +290,10 @@ public class Bot extends EntityPlayer { } private void kb(Location loc1, Location loc2) { - Vector diff = loc1.toVector().subtract(loc2.toVector()).normalize().setY(kbUp); - Vector vel = velocity.clone().add(diff).multiply(0.5); + double f = 4; + + Vector diff = loc1.toVector().subtract(loc2.toVector()).setY(0).normalize().multiply(f).setY(kbUp); + Vector vel = velocity.clone().add(diff).multiply(0.3 / f); if (vel.length() > 1) vel.normalize(); if (groundTicks != 0) vel.multiply(0.8).setY(0.4); diff --git a/src/main/java/net/nuggetmc/ai/bot/agent/BotAgent.java b/src/main/java/net/nuggetmc/ai/bot/agent/BotAgent.java index 6351de8..f5ba9c1 100644 --- a/src/main/java/net/nuggetmc/ai/bot/agent/BotAgent.java +++ b/src/main/java/net/nuggetmc/ai/bot/agent/BotAgent.java @@ -3,6 +3,7 @@ package net.nuggetmc.ai.bot.agent; import net.nuggetmc.ai.PlayerAI; import net.nuggetmc.ai.bot.Bot; import net.nuggetmc.ai.bot.BotManager; +import net.nuggetmc.ai.utils.MathUtils; import net.nuggetmc.ai.utils.PlayerUtils; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -91,7 +92,7 @@ public class BotAgent { vel.checkFinite(); vel.add(bot.velocity); } catch (IllegalArgumentException e) { - vel = new Vector(0, 0.5, 0); + return; } if (vel.length() > 1) vel.normalize(); diff --git a/src/main/java/net/nuggetmc/ai/command/CommandHandler.java b/src/main/java/net/nuggetmc/ai/command/CommandHandler.java index 0b2fca3..aadec93 100644 --- a/src/main/java/net/nuggetmc/ai/command/CommandHandler.java +++ b/src/main/java/net/nuggetmc/ai/command/CommandHandler.java @@ -9,7 +9,10 @@ import net.nuggetmc.ai.command.commands.PlayerAICommand; import org.bukkit.ChatColor; import java.lang.reflect.Method; -import java.util.*; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; public class CommandHandler { @@ -19,7 +22,7 @@ public class CommandHandler { public CommandHandler(PlayerAI plugin) { drink = (DrinkCommandService) Drink.get(plugin); - drink.register(new PlayerAICommand(this), "bot", "playerai", "pai", "ai", "npc"); + drink.register(new PlayerAICommand(this), "playerai.manage", "bot", "playerai", "pai", "ai", "npc"); drink.registerCommands(); help = new HashMap<>(); diff --git a/src/main/java/net/nuggetmc/ai/command/commands/PlayerAICommand.java b/src/main/java/net/nuggetmc/ai/command/commands/PlayerAICommand.java index 1adb6ab..16bba85 100644 --- a/src/main/java/net/nuggetmc/ai/command/commands/PlayerAICommand.java +++ b/src/main/java/net/nuggetmc/ai/command/commands/PlayerAICommand.java @@ -26,42 +26,56 @@ public class PlayerAICommand extends CommandInstance { this.manager = plugin.getManager(); } - @Command(name = "", desc = "The PlayerAI main command.") - @Require("playerai.manage") - public void rootCommand(@Sender Player sender) { + @Command( + desc = "The PlayerAI main command." + ) + public void root(@Sender Player sender) { sender.sendMessage(ChatUtils.LINE); sender.sendMessage(ChatColor.GOLD + "PlayerAI" + ChatColor.GRAY + " [" + ChatColor.RED + "v" + PlayerAI.VERSION + ChatColor.GRAY + "]"); commandHandler.getHelp(getClass()).forEach(sender::sendMessage); sender.sendMessage(ChatUtils.LINE); } - @Command(name = "create", desc = "Create bots.", usage = " [skin]") - @Require("playerai.manage") - public void createBotCommand(@Sender Player sender, String name, @OptArg String skin) { + @Command( + name = "create", + desc = "Create bots.", + usage = " [skin]" + ) + public void create(@Sender Player sender, String name, @OptArg String skin) { manager.createBots(sender, name, skin, 1); } - @Command(name = "multi", desc = "Create multiple bots at once.", usage = " [skin]") - @Require("playerai.manage") - public void multiBotCommand(@Sender Player sender, int n, String name, @OptArg String skin) { + @Command( + name = "multi", + 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); } - @Command(name = "debug", desc = "Debug plugin code.", usage = "") - @Require("playerai.manage") - public void debugCommand(@Sender CommandSender sender, @Text String cmd) { + @Command( + name = "debug", + desc = "Debug plugin code.", + usage = "" + ) + public void debug(@Sender CommandSender sender, @Text String cmd) { new Debugger(sender).execute(cmd); } - @Command(name = "info", desc = "Information about loaded bots.") - @Require("playerai.manage") - public void infoCommand(@Sender Player sender) { - sender.sendMessage("Bot GUI coming soon!"); + @Command( + name = "info", + desc = "Information about loaded bots." + ) + public void info(@Sender Player sender) { + sender.sendMessage(ChatColor.YELLOW + "Bot GUI coming soon!"); } - @Command(name = "reset", desc = "Remove all loaded bots.") - @Require("playerai.manage") - public void resetCommand(@Sender CommandSender sender) { + @Command( + name = "reset", + desc = "Remove all loaded bots." + ) + public void reset(@Sender CommandSender sender) { sender.sendMessage("Removing every bot..."); BotManager manager = PlayerAI.getInstance().getManager(); diff --git a/src/main/java/net/nuggetmc/ai/utils/MathUtils.java b/src/main/java/net/nuggetmc/ai/utils/MathUtils.java index c710d3d..d56c3ee 100644 --- a/src/main/java/net/nuggetmc/ai/utils/MathUtils.java +++ b/src/main/java/net/nuggetmc/ai/utils/MathUtils.java @@ -36,4 +36,13 @@ public class MathUtils { return new Vector(x, 0, z); } + + public static boolean isFinite(Vector vector) { + try { + vector.checkFinite(); + return true; + } catch (IllegalArgumentException e) { + return false; + } + } } diff --git a/src/main/java/net/nuggetmc/ai/utils/MojangAPI.java b/src/main/java/net/nuggetmc/ai/utils/MojangAPI.java index b09460c..4269b77 100644 --- a/src/main/java/net/nuggetmc/ai/utils/MojangAPI.java +++ b/src/main/java/net/nuggetmc/ai/utils/MojangAPI.java @@ -23,7 +23,7 @@ public class MojangAPI { return values; } - // CATCHING NULLPOINTEREXCEPTION BAD!!!! eventually fix from the getAsJsonObject thingy + // CATCHING NULL ILLEGALSTATEEXCEPTION BAD!!!! eventually fix from the getAsJsonObject thingy public static String[] pullFromAPI(String name) { try { String uuid = new JsonParser().parse(new InputStreamReader(new URL("https://api.mojang.com/users/profiles/minecraft/" + name)