command handler optimizations

This commit is contained in:
batchprogrammer314
2021-07-04 03:15:30 -05:00
parent e9aa334aee
commit 0f86796f96
6 changed files with 62 additions and 36 deletions

View File

@@ -128,11 +128,13 @@ public class Bot extends EntityPlayer {
groundTicks = 0; groundTicks = 0;
} }
Player botPlayer = getBukkitEntity(); Player player = getBukkitEntity();
if (botPlayer.isDead()) return; if (player.isDead()) return;
double health = botPlayer.getHealth(); updateLocation();
double maxHealth = botPlayer.getHealthScale();
double health = player.getHealth();
double maxHealth = player.getHealthScale();
double amount; double amount;
if (health < maxHealth - regenAmount) { if (health < maxHealth - regenAmount) {
@@ -141,9 +143,7 @@ public class Bot extends EntityPlayer {
amount = maxHealth; amount = maxHealth;
} }
botPlayer.setHealth(amount); player.setHealth(amount);
updateLocation();
} }
private void updateLocation() { private void updateLocation() {
@@ -182,10 +182,7 @@ public class Bot extends EntityPlayer {
} }
public void punch() { public void punch() {
PacketPlayOutAnimation packet = new PacketPlayOutAnimation(this, 0); swingHand(EnumHand.MAIN_HAND);
for (Player player : Bukkit.getOnlinePlayers()) {
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
}
} }
@Override @Override
@@ -293,8 +290,10 @@ public class Bot extends EntityPlayer {
} }
private void kb(Location loc1, Location loc2) { private void kb(Location loc1, Location loc2) {
Vector diff = loc1.toVector().subtract(loc2.toVector()).normalize().setY(kbUp); double f = 4;
Vector vel = velocity.clone().add(diff).multiply(0.5);
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 (vel.length() > 1) vel.normalize();
if (groundTicks != 0) vel.multiply(0.8).setY(0.4); if (groundTicks != 0) vel.multiply(0.8).setY(0.4);

View File

@@ -3,6 +3,7 @@ package net.nuggetmc.ai.bot.agent;
import net.nuggetmc.ai.PlayerAI; import net.nuggetmc.ai.PlayerAI;
import net.nuggetmc.ai.bot.Bot; import net.nuggetmc.ai.bot.Bot;
import net.nuggetmc.ai.bot.BotManager; import net.nuggetmc.ai.bot.BotManager;
import net.nuggetmc.ai.utils.MathUtils;
import net.nuggetmc.ai.utils.PlayerUtils; import net.nuggetmc.ai.utils.PlayerUtils;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
@@ -91,7 +92,7 @@ public class BotAgent {
vel.checkFinite(); vel.checkFinite();
vel.add(bot.velocity); vel.add(bot.velocity);
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
vel = new Vector(0, 0.5, 0); return;
} }
if (vel.length() > 1) vel.normalize(); if (vel.length() > 1) vel.normalize();

View File

@@ -9,7 +9,10 @@ import net.nuggetmc.ai.command.commands.PlayerAICommand;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import java.lang.reflect.Method; 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; import java.util.stream.Collectors;
public class CommandHandler { public class CommandHandler {
@@ -19,7 +22,7 @@ public class CommandHandler {
public CommandHandler(PlayerAI plugin) { public CommandHandler(PlayerAI plugin) {
drink = (DrinkCommandService) Drink.get(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(); drink.registerCommands();
help = new HashMap<>(); help = new HashMap<>();

View File

@@ -26,42 +26,56 @@ public class PlayerAICommand extends CommandInstance {
this.manager = plugin.getManager(); this.manager = plugin.getManager();
} }
@Command(name = "", desc = "The PlayerAI main command.") @Command(
@Require("playerai.manage") desc = "The PlayerAI main command."
public void rootCommand(@Sender Player sender) { )
public void root(@Sender Player sender) {
sender.sendMessage(ChatUtils.LINE); sender.sendMessage(ChatUtils.LINE);
sender.sendMessage(ChatColor.GOLD + "PlayerAI" + ChatColor.GRAY + " [" + ChatColor.RED + "v" + PlayerAI.VERSION + ChatColor.GRAY + "]"); sender.sendMessage(ChatColor.GOLD + "PlayerAI" + ChatColor.GRAY + " [" + ChatColor.RED + "v" + PlayerAI.VERSION + ChatColor.GRAY + "]");
commandHandler.getHelp(getClass()).forEach(sender::sendMessage); commandHandler.getHelp(getClass()).forEach(sender::sendMessage);
sender.sendMessage(ChatUtils.LINE); sender.sendMessage(ChatUtils.LINE);
} }
@Command(name = "create", desc = "Create bots.", usage = "<name> [skin]") @Command(
@Require("playerai.manage") name = "create",
public void createBotCommand(@Sender Player sender, String name, @OptArg String skin) { desc = "Create bots.",
usage = "<name> [skin]"
)
public void create(@Sender Player sender, String name, @OptArg String skin) {
manager.createBots(sender, name, skin, 1); manager.createBots(sender, name, skin, 1);
} }
@Command(name = "multi", desc = "Create multiple bots at once.", usage = "<amount> <name> [skin]") @Command(
@Require("playerai.manage") name = "multi",
public void multiBotCommand(@Sender Player sender, int n, String name, @OptArg String skin) { desc = "Create multiple bots at once.",
usage = "<amount> <name> [skin]"
)
public void multi(@Sender Player sender, int n, String name, @OptArg String skin) {
manager.createBots(sender, name, skin, n); manager.createBots(sender, name, skin, n);
} }
@Command(name = "debug", desc = "Debug plugin code.", usage = "<expression>") @Command(
@Require("playerai.manage") name = "debug",
public void debugCommand(@Sender CommandSender sender, @Text String cmd) { desc = "Debug plugin code.",
usage = "<expression>"
)
public void debug(@Sender CommandSender sender, @Text String cmd) {
new Debugger(sender).execute(cmd); new Debugger(sender).execute(cmd);
} }
@Command(name = "info", desc = "Information about loaded bots.") @Command(
@Require("playerai.manage") name = "info",
public void infoCommand(@Sender Player sender) { desc = "Information about loaded bots."
sender.sendMessage("Bot GUI coming soon!"); )
public void info(@Sender Player sender) {
sender.sendMessage(ChatColor.YELLOW + "Bot GUI coming soon!");
} }
@Command(name = "reset", desc = "Remove all loaded bots.") @Command(
@Require("playerai.manage") name = "reset",
public void resetCommand(@Sender CommandSender sender) { desc = "Remove all loaded bots."
)
public void reset(@Sender CommandSender sender) {
sender.sendMessage("Removing every bot..."); sender.sendMessage("Removing every bot...");
BotManager manager = PlayerAI.getInstance().getManager(); BotManager manager = PlayerAI.getInstance().getManager();

View File

@@ -36,4 +36,13 @@ public class MathUtils {
return new Vector(x, 0, z); return new Vector(x, 0, z);
} }
public static boolean isFinite(Vector vector) {
try {
vector.checkFinite();
return true;
} catch (IllegalArgumentException e) {
return false;
}
}
} }

View File

@@ -23,7 +23,7 @@ public class MojangAPI {
return values; 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) { public static String[] pullFromAPI(String name) {
try { try {
String uuid = new JsonParser().parse(new InputStreamReader(new URL("https://api.mojang.com/users/profiles/minecraft/" + name) String uuid = new JsonParser().parse(new InputStreamReader(new URL("https://api.mojang.com/users/profiles/minecraft/" + name)