diff --git a/MobArena.jar b/MobArena.jar index 903c370..d5157eb 100644 Binary files a/MobArena.jar and b/MobArena.jar differ diff --git a/bin/plugin.yml b/bin/plugin.yml index d7dc33e..0ebd6e0 100644 --- a/bin/plugin.yml +++ b/bin/plugin.yml @@ -1,6 +1,6 @@ name: MobArena main: com.garbagemule.MobArena.MobArena -version: 0.93.2 +version: 0.93.3 softdepend: [MultiVerse,XcraftGate] commands: ma: diff --git a/src/com/garbagemule/MobArena/Arena.java b/src/com/garbagemule/MobArena/Arena.java index f6afd5b..d9628c3 100644 --- a/src/com/garbagemule/MobArena/Arena.java +++ b/src/com/garbagemule/MobArena/Arena.java @@ -59,7 +59,7 @@ public class Arena protected List entryFee; // Arena sets/maps - protected Set /*livePlayers, */deadPlayers, readyPlayers, specPlayers, waitPlayers, hasPaid, arenaPlayers, lobbyPlayers, notifyPlayers, randoms; + protected Set arenaPlayers, lobbyPlayers, readyPlayers, specPlayers, waitPlayers, hasPaid, rewardedPlayers, notifyPlayers, randoms; protected Set monsters; protected Set blocks; protected Set pets; @@ -98,32 +98,31 @@ public class Arena plugin = (MobArena) Bukkit.getServer().getPluginManager().getPlugin("MobArena"); log = new ArenaLog(plugin, this); - arenaPlayers = new HashSet(); - lobbyPlayers = new HashSet(); - notifyPlayers = new HashSet(); - //livePlayers = new HashSet(); - deadPlayers = new HashSet(); - readyPlayers = new HashSet(); - specPlayers = new HashSet(); - waitPlayers = new HashSet(); - hasPaid = new HashSet(); - monsters = new HashSet(); - blocks = new HashSet(); - pets = new HashSet(); - petMap = new HashMap(); - classMap = new HashMap(); - randoms = new HashSet(); - rewardMap = new HashMap>(); - repairList = new LinkedList(); + arenaPlayers = new HashSet(); + lobbyPlayers = new HashSet(); + notifyPlayers = new HashSet(); + readyPlayers = new HashSet(); + specPlayers = new HashSet(); + waitPlayers = new HashSet(); + rewardedPlayers = new HashSet(); + hasPaid = new HashSet(); + monsters = new HashSet(); + blocks = new HashSet(); + pets = new HashSet(); + petMap = new HashMap(); + classMap = new HashMap(); + randoms = new HashSet(); + rewardMap = new HashMap>(); + repairList = new LinkedList(); - running = false; - edit = false; + running = false; + edit = false; - allowMonsters = world.getAllowMonsters(); - allowAnimals = world.getAllowAnimals(); - spawnMonsters = ((net.minecraft.server.World) ((CraftWorld) world).getHandle()).spawnMonsters; + allowMonsters = world.getAllowMonsters(); + allowAnimals = world.getAllowAnimals(); + spawnMonsters = ((net.minecraft.server.World) ((CraftWorld) world).getHandle()).spawnMonsters; - eventListener = new MAListener(this, plugin); + eventListener = new MAListener(this, plugin); } public boolean startArena() @@ -210,6 +209,7 @@ public class Arena MAUtils.tellAll(this, MAMessages.get(Msg.ARENA_END), true); arenaPlayers.clear(); notifyPlayers.clear(); + rewardedPlayers.clear(); classMap.clear(); rewardMap.clear(); waveMap.clear(); @@ -286,7 +286,7 @@ public class Arena public void playerLeave(Player p) { // Clear class inventory, restore old inventory and fork over rewards. - restoreInvAndGiveRewards(p, !specPlayers.contains(p)); + restoreInvAndGiveRewards(p, arenaPlayers.contains(p)); // Grab the player's entry location, and warp them there. Location entry = locations.get(p); @@ -305,7 +305,7 @@ public class Arena endArena(); } - public void playerDeath(final Player p) + public void playerDeath(Player p) { // If spectate-on-death: false, pass on to playerLeave. if (!specOnDeath) @@ -408,6 +408,7 @@ public class Arena { Bukkit.getServer().getScheduler().cancelTask(spawnThread.taskId); Bukkit.getServer().getScheduler().cancelTask(spawnTaskId); + spawnThread = null; spawnTaskId = -1; } @@ -438,6 +439,7 @@ public class Arena public void restoreInvAndGiveRewards(final Player p, final boolean clear) { final List rewards = rewardMap.get(p); + final boolean hadRewards = rewardedPlayers.contains(p); Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() @@ -449,7 +451,14 @@ public class Arena if (!emptyInvJoin) MAUtils.restoreInventory(p); + + //if (rewardedPlayers.contains(p)) + if (hadRewards) + return; + MAUtils.giveRewards(p, rewards, plugin); + if (running) + rewardedPlayers.add(p); } }); } @@ -827,13 +836,6 @@ public class Arena return result; } - public List getDeadPlayers() - { - List result = new LinkedList(); - result.addAll(deadPlayers); - return result; - } - public void resetIdleTimer() { if (maxIdleTime <= 0 || !running) diff --git a/src/com/garbagemule/MobArena/ArenaLog.java b/src/com/garbagemule/MobArena/ArenaLog.java index 3da9500..83898aa 100644 --- a/src/com/garbagemule/MobArena/ArenaLog.java +++ b/src/com/garbagemule/MobArena/ArenaLog.java @@ -73,10 +73,7 @@ public class ArenaLog log.add(" "); // Player data - int NAME = 12; - int CLASS = 0; - int WAVE = 4; - int KILLS = 5; + int NAME = 12; int CLASS = 0; int WAVE = 4; int KILLS = 5; for (String c : plugin.getAM().classes) if (c.length() > CLASS) CLASS = c.length(); diff --git a/src/com/garbagemule/MobArena/MAUtils.java b/src/com/garbagemule/MobArena/MAUtils.java index b4b0a7f..9ae1515 100644 --- a/src/com/garbagemule/MobArena/MAUtils.java +++ b/src/com/garbagemule/MobArena/MAUtils.java @@ -904,12 +904,11 @@ public class MAUtils public static void tellAll(Arena arena, String msg, boolean waitPlayers) { Set tmp = new HashSet(); - //tmp.addAll(arena.livePlayers); tmp.addAll(arena.arenaPlayers); tmp.addAll(arena.lobbyPlayers); - tmp.addAll(arena.deadPlayers); - tmp.addAll(arena.specPlayers); tmp.addAll(arena.readyPlayers); + tmp.addAll(arena.notifyPlayers); + tmp.addAll(arena.specPlayers); if (waitPlayers) tmp.addAll(arena.waitPlayers); for (Player p : tmp) tellPlayer(p, msg);