From a4a7450530812eb0f7673f8defc4075e65906007 Mon Sep 17 00:00:00 2001 From: addstar Date: Mon, 20 Apr 2015 22:12:56 +1000 Subject: [PATCH] Add config option per arena to toggle the protection of seekers. Arena option "seekerProtection": - true = seekers can NOT be hurt/killed by hiders - false = seekers can be hurt/killed by hiders --- src/nl/Steffion/BlockHunt/Arena.java | 17 +++++++++-------- .../Steffion/BlockHunt/Commands/CMDcreate.java | 2 +- .../Listeners/OnEntityDamageByEntityEvent.java | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/nl/Steffion/BlockHunt/Arena.java b/src/nl/Steffion/BlockHunt/Arena.java index 0a9bc9c..a0250df 100644 --- a/src/nl/Steffion/BlockHunt/Arena.java +++ b/src/nl/Steffion/BlockHunt/Arena.java @@ -28,6 +28,7 @@ public class Arena implements ConfigurationSerializable { public int gameTime; public int timeUntilHidersSword; public int blockAnnouncerTime; + public boolean seekerProtection; public ArrayList disguiseBlocks; public LocationSerializable lobbyWarp; public LocationSerializable hidersWarp; @@ -47,7 +48,7 @@ public class Arena implements ConfigurationSerializable { public Scoreboard scoreboard; public Arena(String arenaName, LocationSerializable pos1, LocationSerializable pos2, int maxPlayers, int minPlayers, int amountSeekersOnStart, - int timeInLobbyUntilStart, int waitingTimeSeeker, int gameTime, int timeUntilHidersSword, int blockAnnouncerTime, ArrayList disguiseBlocks, + int timeInLobbyUntilStart, int waitingTimeSeeker, int gameTime, int timeUntilHidersSword, int blockAnnouncerTime, boolean seekerProtection, ArrayList disguiseBlocks, LocationSerializable lobbyWarp, LocationSerializable hidersWarp, LocationSerializable seekersWarp, LocationSerializable spawnWarp, List seekersWinCommands, List hidersWinCommands, List allowedCommands, int seekersTokenWin, int hidersTokenWin, int killTokens, List playersInArena, ArenaState gameState, int timer, List seekers, Scoreboard scoreboard) { @@ -135,13 +136,13 @@ public class Arena implements ConfigurationSerializable { public static Arena deserialize(Map map) { LocationSerializable loc = new LocationSerializable(Bukkit.getWorld("world"), 0, 0, 0, 0, 0); return new Arena((String) M.g(map, "arenaName", "UNKNOWN_NAME"), (LocationSerializable) M.g(map, "pos1", loc), (LocationSerializable) M.g(map, "pos2", loc), - (Integer) M.g(map, "maxPlayers", 12), (Integer) M.g(map, "minPlayers", 3), (Integer) M.g(map, "amountSeekersOnStart", 1), (Integer) M.g(map, - "timeInLobbyUntilStart", 90), (Integer) M.g(map, "waitingTimeSeeker", 20), (Integer) M.g(map, "gameTime", 200), (Integer) M.g(map, - "timeUntilHidersSword", 30), (Integer) M.g(map, "blockAnnouncerTime", 45), (ArrayList) M.g(map, "disguiseBlocks", new ArrayList()), (LocationSerializable) M.g(map, - "lobbyWarp", loc), (LocationSerializable) M.g(map, "hidersWarp", loc), (LocationSerializable) M.g(map, "seekersWarp", loc), - (LocationSerializable) M.g(map, "spawnWarp", loc), (ArrayList) M.g(map, "seekersWinCommands", new ArrayList()), (ArrayList) M.g( - map, "hidersWinCommands", new ArrayList()), (ArrayList) M.g(map, "allowedCommands", new ArrayList()), (Integer) M.g(map, - "seekersTokenWin", 10), (Integer) M.g(map, "hidersTokenWin", 50), (Integer) M.g(map, "killTokens", 8), new ArrayList(), + (Integer) M.g(map, "maxPlayers", 12), (Integer) M.g(map, "minPlayers", 3), (Integer) M.g(map, "amountSeekersOnStart", 1), (Integer) M.g(map, "timeInLobbyUntilStart", 90), + (Integer) M.g(map, "waitingTimeSeeker", 20), (Integer) M.g(map, "gameTime", 200), (Integer) M.g(map, "timeUntilHidersSword", 30), + (Integer) M.g(map, "blockAnnouncerTime", 45), (Boolean) M.g(map, "seekerProtection", false),(ArrayList) M.g(map, "disguiseBlocks", new ArrayList()), + (LocationSerializable) M.g(map, "lobbyWarp", loc), (LocationSerializable) M.g(map, "hidersWarp", loc), (LocationSerializable) M.g(map, "seekersWarp", loc), + (LocationSerializable) M.g(map, "spawnWarp", loc), (ArrayList) M.g(map, "seekersWinCommands", new ArrayList()), + (ArrayList) M.g(map, "hidersWinCommands", new ArrayList()), (ArrayList) M.g(map, "allowedCommands", new ArrayList()), + (Integer) M.g(map, "seekersTokenWin", 10), (Integer) M.g(map, "hidersTokenWin", 50), (Integer) M.g(map, "killTokens", 8), new ArrayList(), ArenaState.WAITING, 0, new ArrayList(), Bukkit.getScoreboardManager().getNewScoreboard()); } } \ No newline at end of file diff --git a/src/nl/Steffion/BlockHunt/Commands/CMDcreate.java b/src/nl/Steffion/BlockHunt/Commands/CMDcreate.java index 3fc114a..cc0dc10 100644 --- a/src/nl/Steffion/BlockHunt/Commands/CMDcreate.java +++ b/src/nl/Steffion/BlockHunt/Commands/CMDcreate.java @@ -25,7 +25,7 @@ public class CMDcreate extends DefaultCMD { } else { if (W.pos1.get(player) != null && W.pos2.get(player) != null) { if (W.pos1.get(player).getWorld().equals(W.pos2.get(player).getWorld())) { - Arena arena = new Arena(args[1], W.pos1.get(player), W.pos2.get(player), 12, 3, 1, 50, 20, 300, 30, 45, new ArrayList(), null, null, null, + Arena arena = new Arena(args[1], W.pos1.get(player), W.pos2.get(player), 12, 3, 1, 50, 20, 300, 30, 45, false, new ArrayList(), null, null, null, null, new ArrayList(), new ArrayList(), new ArrayList(), 10, 50, 8, new ArrayList(), ArenaState.WAITING, 0, new ArrayList(), Bukkit.getScoreboardManager().getNewScoreboard()); W.arenas.getFile().set(args[1], arena); diff --git a/src/nl/Steffion/BlockHunt/Listeners/OnEntityDamageByEntityEvent.java b/src/nl/Steffion/BlockHunt/Listeners/OnEntityDamageByEntityEvent.java index 1fc60f3..fe42ac8 100644 --- a/src/nl/Steffion/BlockHunt/Listeners/OnEntityDamageByEntityEvent.java +++ b/src/nl/Steffion/BlockHunt/Listeners/OnEntityDamageByEntityEvent.java @@ -46,7 +46,7 @@ public class OnEntityDamageByEntityEvent implements Listener { } else { if (arena.seekers.contains(player)) { event.setCancelled(true); - } else if (arena.playersInArena.contains(player) && arena.playersInArena.contains(event.getDamager()) + } else if (arena.seekerProtection && arena.playersInArena.contains(player) && arena.playersInArena.contains(event.getDamager()) && !arena.seekers.contains(event.getDamager()) && !arena.seekers.contains(player)) { event.setCancelled(true); } else {