diff --git a/MobArena.jar b/MobArena.jar index 8356f29..39641c4 100644 Binary files a/MobArena.jar and b/MobArena.jar differ diff --git a/resources/plugin.yml b/resources/plugin.yml index 39ea787..cd99cd5 100644 --- a/resources/plugin.yml +++ b/resources/plugin.yml @@ -1,6 +1,6 @@ name: MobArena main: com.garbagemule.MobArena.MobArena -version: 0.94.3.9 +version: 0.94.3.10 softdepend: [Spout,Permissions,MultiVerse,XcraftGate,Towny,Heroes,MagicSpells] commands: ma: diff --git a/src/com/garbagemule/MobArena/Arena.java b/src/com/garbagemule/MobArena/Arena.java index 13ff2c7..5f87db9 100644 --- a/src/com/garbagemule/MobArena/Arena.java +++ b/src/com/garbagemule/MobArena/Arena.java @@ -222,6 +222,7 @@ public class Arena // Initialize leaderboards and start displaying info. leaderboard.initialize(); + leaderboard.startTracking(); // Announce and notify. MAUtils.tellAll(this, Msg.ARENA_START); @@ -246,6 +247,7 @@ public class Arena running = false; // Stop tracking leaderboards + leaderboard.stopTracking(); leaderboard.update(); // Finish logging diff --git a/src/com/garbagemule/MobArena/ArenaPlayerStatistics.java b/src/com/garbagemule/MobArena/ArenaPlayerStatistics.java index be9f017..8b0289e 100644 --- a/src/com/garbagemule/MobArena/ArenaPlayerStatistics.java +++ b/src/com/garbagemule/MobArena/ArenaPlayerStatistics.java @@ -34,29 +34,46 @@ public class ArenaPlayerStatistics public int compare(ArenaPlayerStatistics s1, ArenaPlayerStatistics s2) { if (s1.kills > s2.kills) - return 1; - else if (s1.kills < s2.kills) return -1; + else if (s1.kills < s2.kills) + return 1; return 0; } }; } + private static int compareKills(ArenaPlayerStatistics s1, ArenaPlayerStatistics s2) + { + if (s1.kills > s2.kills) + return -1; + else if (s1.kills < s2.kills) + return 1; + return 0; + } + public static Comparator waveComparator() { return new Comparator() { public int compare(ArenaPlayerStatistics s1, ArenaPlayerStatistics s2) { - if (s1.lastWave > s2.lastWave) - return 1; - else if (s1.lastWave < s2.lastWave) - return -1; - return 0; + int result = compareWaves(s1, s2); + if (result != 0) return result; + + return compareKills(s1, s2); } }; } + private static int compareWaves(ArenaPlayerStatistics s1, ArenaPlayerStatistics s2) + { + if (s1.lastWave > s2.lastWave) + return -1; + else if (s1.lastWave < s2.lastWave) + return 1; + return 0; + } + public static Comparator dmgDoneComparator() { return new Comparator() @@ -64,9 +81,9 @@ public class ArenaPlayerStatistics public int compare(ArenaPlayerStatistics s1, ArenaPlayerStatistics s2) { if (s1.dmgDone > s2.dmgDone) - return 1; - else if (s1.dmgDone < s2.dmgDone) return -1; + else if (s1.dmgDone < s2.dmgDone) + return 1; return 0; } }; diff --git a/src/com/garbagemule/MobArena/MASpawnThread.java b/src/com/garbagemule/MobArena/MASpawnThread.java index 1160740..b0c9cf8 100644 --- a/src/com/garbagemule/MobArena/MASpawnThread.java +++ b/src/com/garbagemule/MobArena/MASpawnThread.java @@ -77,6 +77,9 @@ public class MASpawnThread implements Runnable // Find the wave to spawn spawnWave(wave); + // Update stats + updateStats(wave); + wave++; if (arena.monsters.isEmpty()) arena.resetIdleTimer(); @@ -130,6 +133,13 @@ public class MASpawnThread implements Runnable w.spawn(wave); } + private void updateStats(int wave) + { + for (ArenaPlayer ap: arena.getArenaPlayerSet()) + if (arena.getArenaPlayers().contains(ap.getPlayer())) + ap.getStats().lastWave++; + } + private SortedSet getMatchingRecurrentWaves(int wave) { TreeSet result = new TreeSet(WaveUtils.getRecurrentComparator()); diff --git a/src/com/garbagemule/MobArena/leaderboards/Leaderboard.java b/src/com/garbagemule/MobArena/leaderboards/Leaderboard.java index f95dc1e..9a9068e 100644 --- a/src/com/garbagemule/MobArena/leaderboards/Leaderboard.java +++ b/src/com/garbagemule/MobArena/leaderboards/Leaderboard.java @@ -99,6 +99,13 @@ public class Leaderboard initializeBoards(); initializeStats(); + clear(); + } + + public void clear() + { + for (LeaderboardColumn column : boards) + column.clear(); } public void update() diff --git a/src/com/garbagemule/MobArena/leaderboards/LeaderboardColumn.java b/src/com/garbagemule/MobArena/leaderboards/LeaderboardColumn.java index ffc36a5..2f7001d 100644 --- a/src/com/garbagemule/MobArena/leaderboards/LeaderboardColumn.java +++ b/src/com/garbagemule/MobArena/leaderboards/LeaderboardColumn.java @@ -66,6 +66,17 @@ public class LeaderboardColumn catch (Exception e) { e.printStackTrace(); } } + public void clear() + { + for (Sign s : signs) + { + s.setLine(0, ""); + s.setLine(1, ""); + s.setLine(2, ""); + s.setLine(3, ""); + } + } + public Sign getHeader() { return header;