diff --git a/09HDscape-server/src/plugin/command/AIPCommandPlugin.java b/09HDscape-server/src/plugin/command/AIPCommandPlugin.java index 9a5813d0a..bbec35221 100644 --- a/09HDscape-server/src/plugin/command/AIPCommandPlugin.java +++ b/09HDscape-server/src/plugin/command/AIPCommandPlugin.java @@ -33,176 +33,176 @@ import java.util.List; @InitializablePlugin public final class AIPCommandPlugin extends CommandPlugin { - @Override - public Plugin newInstance(Object arg) throws Throwable { - link(CommandSet.ADMINISTRATOR); - return this; - } + @Override + public Plugin newInstance(Object arg) throws Throwable { + link(CommandSet.ADMINISTRATOR); + return this; + } - @Override - public boolean parse(final Player player, String name, String[] args) { - List legion = player.getAttribute("aip_legion"); - switch (name) { - case "desaip": - player.removeAttribute("aip_select"); - return true; - case "sellegion": - if (legion != null && !legion.isEmpty()) { - player.setAttribute("aip_select", legion.get(0)); - } - return true; - case "regroup": - Player last = player; - if (legion != null && !legion.isEmpty()) { - for (AIPlayer p : legion) { - p.follow(last); - last = p; - } - } - player.removeAttribute("aip_select"); - return true; - case "clearlegion": - if (legion != null && !legion.isEmpty()) { - for (AIPlayer p : legion) { - AIPlayer.deregister(p.getUid()); - } - legion.clear(); - } - player.removeAttribute("aip_select"); - player.removeAttribute("aip_legion"); - return true; - case "clearaips": - for (Player p : Repository.getPlayers()) { - if (p.isArtificial()) { - p.clear(); - } - } - return true; - case "aip": - name = args.length < 2 ? player.getName() : args[1]; - AIPlayer p = AIPBuilder.copy(player, name, player.getLocation().transform(0, 1, 0)); - Repository.getPlayers().add(p); - p.init(); + @Override + public boolean parse(final Player player, String name, String[] args) { + List legion = player.getAttribute("aip_legion"); + switch (name) { + case "desaip": + player.removeAttribute("aip_select"); + return true; + case "sellegion": + if (legion != null && !legion.isEmpty()) { + player.setAttribute("aip_select", legion.get(0)); + } + return true; + case "regroup": + Player last = player; + if (legion != null && !legion.isEmpty()) { + for (AIPlayer p : legion) { + p.follow(last); + last = p; + } + } + player.removeAttribute("aip_select"); + return true; + case "clearlegion": + if (legion != null && !legion.isEmpty()) { + for (AIPlayer p : legion) { + AIPlayer.deregister(p.getUid()); + } + legion.clear(); + } + player.removeAttribute("aip_select"); + player.removeAttribute("aip_legion"); + return true; + case "clearaips": + for (Player p : Repository.getPlayers()) { + if (p.isArtificial()) { + p.clear(); + } + } + return true; + case "aip": + name = args.length < 2 ? player.getName() : args[1]; + AIPlayer p = AIPBuilder.copy(player, name, player.getLocation().transform(0, 1, 0)); + Repository.getPlayers().add(p); + p.init(); + + Interaction.sendOption(player, 7, "Control"); + return true; + case "legion": + int size = args.length < 2 ? 10 : Integer.parseInt(args[1]); + last = player; + if (legion == null) { + player.setAttribute("aip_legion", legion = new ArrayList<>()); + } + Interaction.sendOption(player, 7, "Control"); + boolean joinClan = player.getCommunication().getClan() != null && !player.getCommunication().getClan().isDefault(); + String message = player.getName().equals("ethan") ? "The Dark Army marches again!" : null; // Add + // your + // own + // message + for (int i = 0; i < size; i++) { + final AIPlayer aip = AIPBuilder.copy(player, last.getLocation().transform(0, 1, 0)); + Repository.getPlayers().add(aip); + aip.init(); + if (legion.isEmpty()) { + aip.setAttribute("aip_legion", legion); + } + legion.add(aip); + final Player l = last; + if (joinClan) { + if (player.getCommunication().getClan().enter(aip)) { + aip.getCommunication().setClan(player.getCommunication().getClan()); + } + if (player.getCommunication().getClan().getClanWar() != null) { + player.getCommunication().getClan().getClanWar().fireEvent("join", aip); + } + } + GameWorld.submit(new Pulse(1) { + @Override + public boolean pulse() { + aip.follow(l); + return true; + } + }); + if (message != null) { + aip.sendChat("The Dark Army marches again!"); + } + last = aip; + } + return true; + case "pvplegion": + size = args.length < 2 ? 10 : Integer.parseInt(args[1]); + last = player; + if (PVPAIPActions.pvp_players == null) { + player.setAttribute("aip_legion", PVPAIPActions.pvp_players = new ArrayList<>()); + } + for (int i = 0; i < size; i++) { + String aipName = PVPAIPBuilderUtils.names[i]; + final AIPlayer aip = AIPBuilder.create(aipName, generateLocation(player)); + aip.setControler(player); + aip.getAppearance().setGender(RandomFunction.random(3) == 1 ? Gender.FEMALE : Gender.MALE); + Repository.getPlayers().add(aip); + aip.init(); + PVPAIPBuilderUtils.generateClass(aip); + + if (PVPAIPActions.pvp_players.isEmpty()) { + aip.setAttribute("aip_legion", PVPAIPActions.pvp_players); + } + PVPAIPActions.pvp_players.add(aip); + last = aip; + } + return true; + + case "resourcelegion": + size = args.length < 2 ? 10 : Integer.parseInt(args[1]); + last = player; + if (ResourceAIPActions.resource_players == null) { + player.setAttribute("aip_legion", ResourceAIPActions.resource_players = new ArrayList<>()); + } + for (int i = 0; i < size; i++) { + String aipName = PVPAIPBuilderUtils.names[i]; + final AIPlayer aip = AIPBuilder.create(aipName, generateLocation(player)); + aip.setControler(player); + aip.getAppearance().setGender(RandomFunction.random(3) == 1 ? Gender.FEMALE : Gender.MALE); + Repository.getPlayers().add(aip); + aip.init(); + PVPAIPBuilderUtils.generateClass(aip); + + if (ResourceAIPActions.resource_players .isEmpty()) { + aip.setAttribute("aip_legion", ResourceAIPActions.resource_players ); + } + ResourceAIPActions.resource_players.add(aip); + last = aip; + } + return true; + case "syncresource": + ResourceAIPActions.syncBotThread(player); + break; + case "pvpfight": + PVPAIPActions.syncBotThread(player); + return true; - Interaction.sendOption(player, 7, "Control"); - return true; - case "legion": - int size = args.length < 2 ? 10 : Integer.parseInt(args[1]); - last = player; - if (legion == null) { - player.setAttribute("aip_legion", legion = new ArrayList<>()); - } - Interaction.sendOption(player, 7, "Control"); - boolean joinClan = player.getCommunication().getClan() != null && !player.getCommunication().getClan().isDefault(); - String message = player.getName().equals("ethan") ? "The Dark Army marches again!" : null; // Add - // your - // own - // message - for (int i = 0; i < size; i++) { - final AIPlayer aip = AIPBuilder.copy(player, last.getLocation().transform(0, 1, 0)); - Repository.getPlayers().add(aip); - aip.init(); - if (legion.isEmpty()) { - aip.setAttribute("aip_legion", legion); - } - legion.add(aip); - final Player l = last; - if (joinClan) { - if (player.getCommunication().getClan().enter(aip)) { - aip.getCommunication().setClan(player.getCommunication().getClan()); - } - if (player.getCommunication().getClan().getClanWar() != null) { - player.getCommunication().getClan().getClanWar().fireEvent("join", aip); - } - } - GameWorld.submit(new Pulse(1) { - @Override - public boolean pulse() { - aip.follow(l); - return true; - } - }); - if (message != null) { - aip.sendChat("The Dark Army marches again!"); - } - last = aip; - } - return true; - case "pvplegion": - size = args.length < 2 ? 10 : Integer.parseInt(args[1]); - last = player; - if (PVPAIPActions.pvp_players == null) { - player.setAttribute("aip_legion", PVPAIPActions.pvp_players = new ArrayList<>()); - } - for (int i = 0; i < size; i++) { - String aipName = PVPAIPBuilderUtils.names[i]; - final AIPlayer aip = AIPBuilder.create(aipName, generateLocation(player)); - aip.setControler(player); - aip.getAppearance().setGender(RandomFunction.random(3) == 1 ? Gender.FEMALE : Gender.MALE); - Repository.getPlayers().add(aip); - aip.init(); - PVPAIPBuilderUtils.generateClass(aip); + /* + Start regular bots + */ + case "manthiev": + new GeneralBotCreator("Bot", player.getLocation(), new ManThiever()); + break; - if (PVPAIPActions.pvp_players.isEmpty()) { - aip.setAttribute("aip_legion", PVPAIPActions.pvp_players); - } - PVPAIPActions.pvp_players.add(aip); - last = aip; - } - return true; - - case "resourcelegion": - size = args.length < 2 ? 10 : Integer.parseInt(args[1]); - last = player; - if (ResourceAIPActions.resource_players == null) { - player.setAttribute("aip_legion", ResourceAIPActions.resource_players = new ArrayList<>()); - } - for (int i = 0; i < size; i++) { - String aipName = PVPAIPBuilderUtils.names[i]; - final AIPlayer aip = AIPBuilder.create(aipName, generateLocation(player)); - aip.setControler(player); - aip.getAppearance().setGender(RandomFunction.random(3) == 1 ? Gender.FEMALE : Gender.MALE); - Repository.getPlayers().add(aip); - aip.init(); - PVPAIPBuilderUtils.generateClass(aip); - - if (ResourceAIPActions.resource_players .isEmpty()) { - aip.setAttribute("aip_legion", ResourceAIPActions.resource_players ); - } - ResourceAIPActions.resource_players.add(aip); - last = aip; - } - return true; - case "syncresource": - ResourceAIPActions.syncBotThread(player); - break; - case "pvpfight": - PVPAIPActions.syncBotThread(player); - return true; - - /* - Start regular bots - */ - case "manthiev": - new GeneralBotCreator("Bot", player.getLocation(), new ManThiever()); - break; - - } - return false; - } - - private Location generateLocation(Player player) { - Location random_location = player.getLocation().transform(RandomFunction.random(-15, 15), RandomFunction.random(-15, 15), 0); - if (!RegionManager.isTeleportPermitted(random_location)) { - return generateLocation(player); - } - if (!Pathfinder.find(player, random_location, false, Pathfinder.DUMB).isSuccessful()) { - return generateLocation(player); - } - if (RegionManager.getObject(random_location) != null) { - return generateLocation(player); - } - return random_location; - } + } + return false; + } + + private Location generateLocation(Player player) { + Location random_location = player.getLocation().transform(RandomFunction.random(-15, 15), RandomFunction.random(-15, 15), 0); + if (!RegionManager.isTeleportPermitted(random_location)) { + return generateLocation(player); + } + if (!Pathfinder.find(player, random_location, false, Pathfinder.DUMB).isSuccessful()) { + return generateLocation(player); + } + if (RegionManager.getObject(random_location) != null) { + return generateLocation(player); + } + return random_location; + } }