Added console support, added location args and removed spawnLoc setting
This commit is contained in:
@@ -3,6 +3,7 @@ package net.nuggetmc.tplus.api;
|
|||||||
import net.nuggetmc.tplus.api.agent.Agent;
|
import net.nuggetmc.tplus.api.agent.Agent;
|
||||||
import net.nuggetmc.tplus.api.agent.legacyagent.ai.NeuralNetwork;
|
import net.nuggetmc.tplus.api.agent.legacyagent.ai.NeuralNetwork;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -10,10 +11,6 @@ import java.util.Set;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public interface BotManager {
|
public interface BotManager {
|
||||||
Location getSpawnLoc();
|
|
||||||
|
|
||||||
void setSpawnLoc(Location loc);
|
|
||||||
|
|
||||||
Set<Terminator> fetch();
|
Set<Terminator> fetch();
|
||||||
|
|
||||||
Agent getAgent();
|
Agent getAgent();
|
||||||
@@ -24,9 +21,9 @@ public interface BotManager {
|
|||||||
|
|
||||||
List<String> fetchNames();
|
List<String> fetchNames();
|
||||||
|
|
||||||
void createBots(Player sender, String name, String skinName, int n);
|
void createBots(CommandSender sender, String name, String skinName, int n, Location location);
|
||||||
|
|
||||||
void createBots(Player sender, String name, String skinName, int n, NeuralNetwork network);
|
void createBots(CommandSender sender, String name, String skinName, int n, NeuralNetwork network, Location location);
|
||||||
|
|
||||||
Set<Terminator> createBots(Location loc, String name, String[] skin, List<NeuralNetwork> networks);
|
Set<Terminator> createBots(Location loc, String name, String[] skin, List<NeuralNetwork> networks);
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import net.nuggetmc.tplus.api.agent.legacyagent.ai.NeuralNetwork;
|
|||||||
import net.nuggetmc.tplus.api.event.BotDeathEvent;
|
import net.nuggetmc.tplus.api.event.BotDeathEvent;
|
||||||
import net.nuggetmc.tplus.api.utils.MojangAPI;
|
import net.nuggetmc.tplus.api.utils.MojangAPI;
|
||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.craftbukkit.v1_19_R2.entity.CraftPlayer;
|
import org.bukkit.craftbukkit.v1_19_R2.entity.CraftPlayer;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
@@ -36,23 +37,12 @@ public class BotManagerImpl implements BotManager, Listener {
|
|||||||
public boolean joinMessages = false;
|
public boolean joinMessages = false;
|
||||||
private boolean mobTarget = false;
|
private boolean mobTarget = false;
|
||||||
private boolean addPlayerList = false;
|
private boolean addPlayerList = false;
|
||||||
private Location spawnLoc;
|
|
||||||
|
|
||||||
public BotManagerImpl() {
|
public BotManagerImpl() {
|
||||||
this.agent = new LegacyAgent(this, TerminatorPlus.getInstance());
|
this.agent = new LegacyAgent(this, TerminatorPlus.getInstance());
|
||||||
this.bots = ConcurrentHashMap.newKeySet(); //should fix concurrentmodificationexception
|
this.bots = ConcurrentHashMap.newKeySet(); //should fix concurrentmodificationexception
|
||||||
this.numberFormat = NumberFormat.getInstance(Locale.US);
|
this.numberFormat = NumberFormat.getInstance(Locale.US);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Location getSpawnLoc() {
|
|
||||||
return spawnLoc;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setSpawnLoc(Location loc) {
|
|
||||||
spawnLoc = loc;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<Terminator> fetch() {
|
public Set<Terminator> fetch() {
|
||||||
@@ -70,16 +60,16 @@ public class BotManagerImpl implements BotManager, Listener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Terminator getFirst(String name, Location target) {
|
public Terminator getFirst(String name, Location target) {
|
||||||
if (target != null) {
|
if (target != null) {
|
||||||
Terminator closest = null;
|
Terminator closest = null;
|
||||||
for (Terminator bot : bots) {
|
for (Terminator bot : bots) {
|
||||||
if (name.equals(bot.getBotName()) && (closest == null
|
if (name.equals(bot.getBotName()) && (closest == null
|
||||||
|| target.distanceSquared(bot.getLocation()) < target.distanceSquared(closest.getLocation()))) {
|
|| target.distanceSquared(bot.getLocation()) < target.distanceSquared(closest.getLocation()))) {
|
||||||
closest = bot;
|
closest = bot;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return closest;
|
return closest;
|
||||||
}
|
}
|
||||||
for (Terminator bot : bots) {
|
for (Terminator bot : bots) {
|
||||||
if (name.equals(bot.getBotName())) {
|
if (name.equals(bot.getBotName())) {
|
||||||
return bot;
|
return bot;
|
||||||
@@ -104,12 +94,12 @@ public class BotManagerImpl implements BotManager, Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createBots(Player sender, String name, String skinName, int n) {
|
public void createBots(CommandSender sender, String name, String skinName, int n, Location loc) {
|
||||||
createBots(sender, name, skinName, n, null);
|
createBots(sender, name, skinName, n, null, loc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createBots(Player sender, String name, String skinName, int n, NeuralNetwork network) {
|
public void createBots(CommandSender sender, String name, String skinName, int n, NeuralNetwork network, Location location) {
|
||||||
long timestamp = System.currentTimeMillis();
|
long timestamp = System.currentTimeMillis();
|
||||||
|
|
||||||
if (n < 1) n = 1;
|
if (n < 1) n = 1;
|
||||||
@@ -121,18 +111,17 @@ public class BotManagerImpl implements BotManager, Listener {
|
|||||||
|
|
||||||
skinName = skinName == null ? name : skinName;
|
skinName = skinName == null ? name : skinName;
|
||||||
|
|
||||||
if (spawnLoc != null) {
|
if (location != null) {
|
||||||
sender.sendMessage("The spawn location is "
|
createBots(location, name, MojangAPI.getSkin(skinName), n, network);
|
||||||
+ ChatColor.BLUE + String.format("(%s, %s, %s)", spawnLoc.getX(), spawnLoc.getY(), spawnLoc.getZ()) + ChatColor.RESET
|
} else {
|
||||||
+ ". This will be reset to the player location next time.");
|
if (sender instanceof Player player)
|
||||||
Location loc = sender.getLocation().clone();
|
createBots(player.getLocation(), name, MojangAPI.getSkin(skinName), n, network);
|
||||||
loc.setX(spawnLoc.getX());
|
else {
|
||||||
loc.setY(spawnLoc.getY());
|
Location l = new Location(Bukkit.getWorlds().get(0), 0, 0, 0);
|
||||||
loc.setZ(spawnLoc.getZ());
|
sender.sendMessage(ChatColor.RED + "No location specified, defaulting to " + l + ".");
|
||||||
createBots(loc, name, MojangAPI.getSkin(skinName), n, network);
|
createBots(l, name, MojangAPI.getSkin(skinName), n, network);
|
||||||
spawnLoc = null;
|
}
|
||||||
} else
|
}
|
||||||
createBots(sender.getLocation(), name, MojangAPI.getSkin(skinName), n, network);
|
|
||||||
|
|
||||||
sender.sendMessage("Process completed (" + ChatColor.RED + ((System.currentTimeMillis() - timestamp) / 1000D) + "s" + ChatColor.RESET + ").");
|
sender.sendMessage("Process completed (" + ChatColor.RED + ((System.currentTimeMillis() - timestamp) / 1000D) + "s" + ChatColor.RESET + ").");
|
||||||
}
|
}
|
||||||
@@ -237,7 +226,7 @@ public class BotManagerImpl implements BotManager, Listener {
|
|||||||
public void setMobTarget(boolean mobTarget) {
|
public void setMobTarget(boolean mobTarget) {
|
||||||
this.mobTarget = mobTarget;
|
this.mobTarget = mobTarget;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean addToPlayerList() {
|
public boolean addToPlayerList() {
|
||||||
return addPlayerList;
|
return addPlayerList;
|
||||||
@@ -265,8 +254,8 @@ public class BotManagerImpl implements BotManager, Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onMobTarget(EntityTargetLivingEntityEvent event) {
|
public void onMobTarget(EntityTargetLivingEntityEvent event) {
|
||||||
if (mobTarget || event.getTarget() == null)
|
if (mobTarget || event.getTarget() == null)
|
||||||
return;
|
return;
|
||||||
Bot bot = (Bot) getBot(event.getTarget().getUniqueId());
|
Bot bot = (Bot) getBot(event.getTarget().getUniqueId());
|
||||||
if (bot != null) {
|
if (bot != null) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|||||||
@@ -10,12 +10,11 @@ import net.nuggetmc.tplus.api.utils.MathUtils;
|
|||||||
import net.nuggetmc.tplus.bot.BotManagerImpl;
|
import net.nuggetmc.tplus.bot.BotManagerImpl;
|
||||||
import net.nuggetmc.tplus.command.CommandHandler;
|
import net.nuggetmc.tplus.command.CommandHandler;
|
||||||
import net.nuggetmc.tplus.command.CommandInstance;
|
import net.nuggetmc.tplus.command.CommandInstance;
|
||||||
import net.nuggetmc.tplus.command.annotation.Arg;
|
import net.nuggetmc.tplus.command.annotation.*;
|
||||||
import net.nuggetmc.tplus.command.annotation.Autofill;
|
|
||||||
import net.nuggetmc.tplus.command.annotation.Command;
|
|
||||||
import net.nuggetmc.tplus.command.annotation.OptArg;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.scheduler.BukkitScheduler;
|
import org.bukkit.scheduler.BukkitScheduler;
|
||||||
@@ -51,16 +50,48 @@ public class AICommand extends CommandInstance implements AIManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
name = "random",
|
name = "random",
|
||||||
desc = "Create bots with random neural networks, collecting feed data."
|
desc = "Create bots with random neural networks, collecting feed data."
|
||||||
)
|
)
|
||||||
public void random(Player sender, @Arg("amount") int amount, @Arg("name") String name, @OptArg("skin") String skin) {
|
public void random(CommandSender sender, List<String> args, @Arg("amount") int amount, @Arg("name") String name, @OptArg("skin") String skin, @OptArg("loc") @TextArg String loc) {
|
||||||
manager.createBots(sender, name, skin, amount, NeuralNetwork.RANDOM);
|
if (sender instanceof Player && args.size() < 2) {
|
||||||
|
sender.sendMessage(ChatColor.RED + "Usage: /ai random <amount> <name> [skin] [spawnLoc: [player Player]/[x,y,z]]");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Location location = (sender instanceof Player) ? ((Player) sender).getLocation() : new Location(Bukkit.getWorlds().get(0), 0, 0, 0);
|
||||||
|
if (loc != null && !loc.isEmpty()) {
|
||||||
|
Player player = Bukkit.getPlayer(loc);
|
||||||
|
if (player != null) {
|
||||||
|
location = player.getLocation();
|
||||||
|
} else {
|
||||||
|
String[] split = loc.split(" ");
|
||||||
|
if (split.length >= 3) {
|
||||||
|
try {
|
||||||
|
double x = Double.parseDouble(split[0]);
|
||||||
|
double y = Double.parseDouble(split[1]);
|
||||||
|
double z = Double.parseDouble(split[2]);
|
||||||
|
World world = Bukkit.getWorld(split.length >= 4 ? split[3] : location.getWorld().getName());
|
||||||
|
location = new Location(world, x, y, z);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
sender.sendMessage("The location '" + ChatColor.YELLOW + loc + ChatColor.RESET + "' is not valid!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sender.sendMessage("The location '" + ChatColor.YELLOW + loc + ChatColor.RESET + "' is not valid!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!(sender instanceof Player)) {
|
||||||
|
sender.sendMessage("Spawning bot at 0, 0, 0 in world " + location.getWorld().getName() + " because no location was specified.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
manager.createBots(sender, name, skin, amount, NeuralNetwork.RANDOM, location);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
name = "reinforcement",
|
name = "reinforcement",
|
||||||
desc = "Begin an AI training session."
|
desc = "Begin an AI training session."
|
||||||
)
|
)
|
||||||
public void reinforcement(Player sender, @Arg("population-size") int populationSize, @Arg("name") String name, @OptArg("skin") String skin) {
|
public void reinforcement(Player sender, @Arg("population-size") int populationSize, @Arg("name") String name, @OptArg("skin") String skin) {
|
||||||
//FIXME: Sometimes, bots will become invisible, or just stop working if they're the last one alive, this has been partially fixed (invis part) see Terminator#removeBot, which removes the bot.
|
//FIXME: Sometimes, bots will become invisible, or just stop working if they're the last one alive, this has been partially fixed (invis part) see Terminator#removeBot, which removes the bot.
|
||||||
@@ -83,8 +114,8 @@ public class AICommand extends CommandInstance implements AIManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
name = "stop",
|
name = "stop",
|
||||||
desc = "End a currently running AI training session."
|
desc = "End a currently running AI training session."
|
||||||
)
|
)
|
||||||
public void stop(CommandSender sender) {
|
public void stop(CommandSender sender) {
|
||||||
if (agent == null) {
|
if (agent == null) {
|
||||||
@@ -112,9 +143,9 @@ public class AICommand extends CommandInstance implements AIManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
name = "info",
|
name = "info",
|
||||||
desc = "Display neural network information about a bot.",
|
desc = "Display neural network information about a bot.",
|
||||||
autofill = "infoAutofill"
|
autofill = "infoAutofill"
|
||||||
)
|
)
|
||||||
public void info(CommandSender sender, @Arg("bot-name") String name) {
|
public void info(CommandSender sender, @Arg("bot-name") String name) {
|
||||||
sender.sendMessage("Processing request...");
|
sender.sendMessage("Processing request...");
|
||||||
@@ -149,9 +180,7 @@ public class AICommand extends CommandInstance implements AIManager {
|
|||||||
sender.sendMessage(ChatColor.DARK_GREEN + "NeuralNetwork" + ChatUtils.BULLET_FORMATTED + ChatColor.GRAY + "[" + ChatColor.GREEN + name + ChatColor.GRAY + "]");
|
sender.sendMessage(ChatColor.DARK_GREEN + "NeuralNetwork" + ChatUtils.BULLET_FORMATTED + ChatColor.GRAY + "[" + ChatColor.GREEN + name + ChatColor.GRAY + "]");
|
||||||
strings.forEach(sender::sendMessage);
|
strings.forEach(sender::sendMessage);
|
||||||
sender.sendMessage(ChatUtils.LINE);
|
sender.sendMessage(ChatUtils.LINE);
|
||||||
}
|
} catch (Exception e) {
|
||||||
|
|
||||||
catch (Exception e) {
|
|
||||||
sender.sendMessage(ChatUtils.EXCEPTION_MESSAGE);
|
sender.sendMessage(ChatUtils.EXCEPTION_MESSAGE);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -8,15 +8,9 @@ import net.nuggetmc.tplus.api.utils.ChatUtils;
|
|||||||
import net.nuggetmc.tplus.bot.BotManagerImpl;
|
import net.nuggetmc.tplus.bot.BotManagerImpl;
|
||||||
import net.nuggetmc.tplus.command.CommandHandler;
|
import net.nuggetmc.tplus.command.CommandHandler;
|
||||||
import net.nuggetmc.tplus.command.CommandInstance;
|
import net.nuggetmc.tplus.command.CommandInstance;
|
||||||
import net.nuggetmc.tplus.command.annotation.Arg;
|
import net.nuggetmc.tplus.command.annotation.*;
|
||||||
import net.nuggetmc.tplus.command.annotation.Autofill;
|
|
||||||
import net.nuggetmc.tplus.command.annotation.Command;
|
|
||||||
import net.nuggetmc.tplus.command.annotation.OptArg;
|
|
||||||
import net.nuggetmc.tplus.utils.Debugger;
|
import net.nuggetmc.tplus.utils.Debugger;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.*;
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.EquipmentSlot;
|
import org.bukkit.inventory.EquipmentSlot;
|
||||||
@@ -64,16 +58,72 @@ public class BotCommand extends CommandInstance {
|
|||||||
name = "create",
|
name = "create",
|
||||||
desc = "Create a bot."
|
desc = "Create a bot."
|
||||||
)
|
)
|
||||||
public void create(Player sender, @Arg("name") String name, @OptArg("skin") String skin) {
|
public void create(CommandSender sender, @Arg("name") String name, @OptArg("skin") String skin, @TextArg @OptArg("loc") String loc) {
|
||||||
manager.createBots(sender, name, skin, 1);
|
Location location = (sender instanceof Player) ? ((Player) sender).getLocation() : new Location(Bukkit.getWorlds().get(0), 0, 0, 0);
|
||||||
|
if (loc != null && !loc.isEmpty()) {
|
||||||
|
Player player = Bukkit.getPlayer(loc);
|
||||||
|
if (player != null) {
|
||||||
|
location = player.getLocation();
|
||||||
|
} else {
|
||||||
|
String[] split = loc.split(" ");
|
||||||
|
if (split.length >= 3) {
|
||||||
|
try {
|
||||||
|
double x = Double.parseDouble(split[0]);
|
||||||
|
double y = Double.parseDouble(split[1]);
|
||||||
|
double z = Double.parseDouble(split[2]);
|
||||||
|
World world = Bukkit.getWorld(split.length >= 4 ? split[3] : location.getWorld().getName());
|
||||||
|
location = new Location(world, x, y, z);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
sender.sendMessage("The location '" + ChatColor.YELLOW + loc + ChatColor.RESET + "' is not valid!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sender.sendMessage("The location '" + ChatColor.YELLOW + loc + ChatColor.RESET + "' is not valid!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!(sender instanceof Player)) {
|
||||||
|
sender.sendMessage("Spawning bot at 0, 0, 0 in world " + location.getWorld().getName() + " because no location was specified.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
manager.createBots(sender, name, skin, 1, location);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
name = "multi",
|
name = "multi",
|
||||||
desc = "Create multiple bots at once."
|
desc = "Create multiple bots at once."
|
||||||
)
|
)
|
||||||
public void multi(Player sender, @Arg("amount") int amount, @Arg("name") String name, @OptArg("skin") String skin) {
|
public void multi(CommandSender sender, @Arg("amount") int amount, @Arg("name") String name, @OptArg("skin") String skin, @TextArg @OptArg("loc") String loc) {
|
||||||
manager.createBots(sender, name, skin, amount);
|
Location location = (sender instanceof Player) ? ((Player) sender).getLocation() : new Location(Bukkit.getWorlds().get(0), 0, 0, 0);
|
||||||
|
if (loc != null && !loc.isEmpty()) {
|
||||||
|
Player player = Bukkit.getPlayer(loc);
|
||||||
|
if (player != null) {
|
||||||
|
location = player.getLocation();
|
||||||
|
} else {
|
||||||
|
String[] split = loc.split(" ");
|
||||||
|
if (split.length >= 3) {
|
||||||
|
try {
|
||||||
|
double x = Double.parseDouble(split[0]);
|
||||||
|
double y = Double.parseDouble(split[1]);
|
||||||
|
double z = Double.parseDouble(split[2]);
|
||||||
|
World world = Bukkit.getWorld(split.length >= 4 ? split[3] : location.getWorld().getName());
|
||||||
|
location = new Location(world, x, y, z);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
sender.sendMessage("The location '" + ChatColor.YELLOW + loc + ChatColor.RESET + "' is not valid!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sender.sendMessage("The location '" + ChatColor.YELLOW + loc + ChatColor.RESET + "' is not valid!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!(sender instanceof Player)) {
|
||||||
|
sender.sendMessage("Spawning bot at 0, 0, 0 in world " + location.getWorld().getName() + " because no location was specified.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
manager.createBots(sender, name, skin, amount, location);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
@@ -156,8 +206,7 @@ public class BotCommand extends CommandInstance {
|
|||||||
ItemStack[] armor = armorTiers.get(tier);
|
ItemStack[] armor = armorTiers.get(tier);
|
||||||
|
|
||||||
manager.fetch().forEach(bot -> {
|
manager.fetch().forEach(bot -> {
|
||||||
if (bot.getBukkitEntity() instanceof Player) {
|
if (bot.getBukkitEntity() instanceof Player botPlayer) {
|
||||||
Player botPlayer = (Player) bot.getBukkitEntity();
|
|
||||||
botPlayer.getInventory().setArmorContents(armor);
|
botPlayer.getInventory().setArmorContents(armor);
|
||||||
botPlayer.updateInventory();
|
botPlayer.updateInventory();
|
||||||
|
|
||||||
@@ -289,11 +338,10 @@ public class BotCommand extends CommandInstance {
|
|||||||
|
|
||||||
String extra = ChatColor.GRAY + " [" + ChatColor.YELLOW + "/bot settings" + ChatColor.GRAY + "]";
|
String extra = ChatColor.GRAY + " [" + ChatColor.YELLOW + "/bot settings" + ChatColor.GRAY + "]";
|
||||||
|
|
||||||
if (arg1 == null || (!arg1.equalsIgnoreCase("spawnloc") && !arg1.equalsIgnoreCase("setgoal") && !arg1.equalsIgnoreCase("mobtarget") && !arg1.equalsIgnoreCase("playertarget")
|
if (arg1 == null || (!arg1.equalsIgnoreCase("setgoal") && !arg1.equalsIgnoreCase("mobtarget") && !arg1.equalsIgnoreCase("playertarget")
|
||||||
&& !arg1.equalsIgnoreCase("addplayerlist") && !arg1.equalsIgnoreCase("region"))) {
|
&& !arg1.equalsIgnoreCase("addplayerlist") && !arg1.equalsIgnoreCase("region"))) {
|
||||||
sender.sendMessage(ChatUtils.LINE);
|
sender.sendMessage(ChatUtils.LINE);
|
||||||
sender.sendMessage(ChatColor.GOLD + "Bot Settings" + extra);
|
sender.sendMessage(ChatColor.GOLD + "Bot Settings" + extra);
|
||||||
sender.sendMessage(ChatUtils.BULLET_FORMATTED + ChatColor.YELLOW + "spawnloc" + ChatUtils.BULLET_FORMATTED + "Set the location where the bots should spawn. This will be reset after a spawn command is executed.");
|
|
||||||
sender.sendMessage(ChatUtils.BULLET_FORMATTED + ChatColor.YELLOW + "setgoal" + ChatUtils.BULLET_FORMATTED + "Set the global bot target selection method.");
|
sender.sendMessage(ChatUtils.BULLET_FORMATTED + ChatColor.YELLOW + "setgoal" + ChatUtils.BULLET_FORMATTED + "Set the global bot target selection method.");
|
||||||
sender.sendMessage(ChatUtils.BULLET_FORMATTED + ChatColor.YELLOW + "mobtarget" + ChatUtils.BULLET_FORMATTED + "Allow all bots to be targeted by hostile mobs.");
|
sender.sendMessage(ChatUtils.BULLET_FORMATTED + ChatColor.YELLOW + "mobtarget" + ChatUtils.BULLET_FORMATTED + "Allow all bots to be targeted by hostile mobs.");
|
||||||
sender.sendMessage(ChatUtils.BULLET_FORMATTED + ChatColor.YELLOW + "playertarget" + ChatUtils.BULLET_FORMATTED + "Sets a player name for spawned bots to focus on if the goal is PLAYER.");
|
sender.sendMessage(ChatUtils.BULLET_FORMATTED + ChatColor.YELLOW + "playertarget" + ChatUtils.BULLET_FORMATTED + "Sets a player name for spawned bots to focus on if the goal is PLAYER.");
|
||||||
@@ -302,50 +350,7 @@ public class BotCommand extends CommandInstance {
|
|||||||
sender.sendMessage(ChatUtils.LINE);
|
sender.sendMessage(ChatUtils.LINE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else if (arg1.equalsIgnoreCase("setgoal")) {
|
||||||
if (arg1.equalsIgnoreCase("spawnloc")) {
|
|
||||||
if (arg2 == null) {
|
|
||||||
if (manager.getSpawnLoc() == null)
|
|
||||||
sender.sendMessage("No custom spawn location has been set. The bots will spawn at the player location.");
|
|
||||||
else {
|
|
||||||
Location loc = manager.getSpawnLoc();
|
|
||||||
sender.sendMessage("The next spawn location will be at " + ChatColor.BLUE + String.format("(%s, %s, %s)", loc.getX(), loc.getY(), loc.getZ()) + ChatColor.RESET + ".");
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (arg2.equalsIgnoreCase("clear")) {
|
|
||||||
manager.setSpawnLoc(null);
|
|
||||||
sender.sendMessage("The spawn location has been reset to the player location.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (arg2.equalsIgnoreCase("playerloc")) {
|
|
||||||
if (!(sender instanceof Player)) {
|
|
||||||
sender.sendMessage("You must be a player to do this!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Location loc = ((Player)sender).getLocation();
|
|
||||||
manager.setSpawnLoc(loc.clone());
|
|
||||||
sender.sendMessage("The spawn location has been set to " + ChatColor.BLUE + formatter.format(loc.getX()) + ", " + formatter.format(loc.getY()) + ", " + formatter.format(loc.getZ()) + ChatColor.RESET + ".");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (args.size() != 4) {
|
|
||||||
sender.sendMessage("Incorrect argument size. Correct syntax: " + ChatColor.YELLOW + "/bot settings spawnloc <x> <y> <z>" + ChatColor.RESET);
|
|
||||||
sender.sendMessage("Additionally, to specify a spawnloc at the current player position: " + ChatColor.YELLOW + "/bot settings spawnloc playerloc" + ChatColor.RESET);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
double x, y, z;
|
|
||||||
try {
|
|
||||||
x = Double.parseDouble(args.get(1));
|
|
||||||
y = Double.parseDouble(args.get(2));
|
|
||||||
z = Double.parseDouble(args.get(3));
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
sender.sendMessage("The block coordinates must be doubles!");
|
|
||||||
sender.sendMessage("Correct syntax: " + ChatColor.YELLOW + "/bot settings spawnloc <x> <y> <z>" + ChatColor.RESET);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
manager.setSpawnLoc(new Location(null, x, y, z));
|
|
||||||
sender.sendMessage("The next spawn location has been set to " + ChatColor.BLUE + String.format("(%s, %s, %s)", x, y, z) + ChatColor.RESET + ".");
|
|
||||||
} else if (arg1.equalsIgnoreCase("setgoal")) {
|
|
||||||
if (arg2 == null) {
|
if (arg2 == null) {
|
||||||
sender.sendMessage("The global bot goal is currently " + ChatColor.BLUE + agent.getTargetType() + ChatColor.RESET + ".");
|
sender.sendMessage("The global bot goal is currently " + ChatColor.BLUE + agent.getTargetType() + ChatColor.RESET + ".");
|
||||||
return;
|
return;
|
||||||
@@ -486,7 +491,6 @@ public class BotCommand extends CommandInstance {
|
|||||||
// lookall
|
// lookall
|
||||||
|
|
||||||
if (args.length == 2) {
|
if (args.length == 2) {
|
||||||
output.add("spawnloc");
|
|
||||||
output.add("setgoal");
|
output.add("setgoal");
|
||||||
output.add("mobtarget");
|
output.add("mobtarget");
|
||||||
output.add("playertarget");
|
output.add("playertarget");
|
||||||
|
|||||||
@@ -3,4 +3,4 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "net.nuggetmc"
|
group = "net.nuggetmc"
|
||||||
version = "4.1.0-BETA"
|
version = "4.2.0-BETA"
|
||||||
|
|||||||
Reference in New Issue
Block a user