diff --git a/resources/plugin.yml b/resources/plugin.yml index 3586766..cff6975 100644 --- a/resources/plugin.yml +++ b/resources/plugin.yml @@ -1,7 +1,7 @@ name: MobArena author: garbagemule main: com.garbagemule.MobArena.MobArena -version: 0.95.5.11 +version: 0.95.5.12 softdepend: [Spout,Towny,Heroes,MagicSpells,Vault] commands: ma: diff --git a/src/com/garbagemule/MobArena/ArenaImpl.java b/src/com/garbagemule/MobArena/ArenaImpl.java index 65e8d86..0c52b4c 100644 --- a/src/com/garbagemule/MobArena/ArenaImpl.java +++ b/src/com/garbagemule/MobArena/ArenaImpl.java @@ -98,6 +98,9 @@ public class ArenaImpl implements Arena // Scoreboards private ScoreboardManager scoreboard; + + // Last player standing + private Player lastStanding; /** * Primary constructor. Requires a name and a world. @@ -484,6 +487,9 @@ public class ArenaImpl implements Arena if (event.isCancelled()) { return false; } + + // Reset last standing + lastStanding = null; // Set the running boolean and disable arena if not disabled. boolean en = enabled; @@ -652,9 +658,9 @@ public class ArenaImpl implements Arena public void playerDeath(Player p) { // Fire the event - ArenaPlayerDeathEvent event = new ArenaPlayerDeathEvent(p, this); + ArenaPlayerDeathEvent event = new ArenaPlayerDeathEvent(p, this, arenaPlayers.size() == 1); plugin.getServer().getPluginManager().callEvent(event); - + arenaPlayers.remove(p); if (!settings.getBoolean("auto-respawn", true)) { @@ -1053,7 +1059,7 @@ public class ArenaImpl implements Arena private void replacePermissions(Player p, PermissionAttachment rep) { PermissionAttachment old = attachments.get(p); if (old != null) { - p.removeAttachment(old); + old.remove(); p.recalculatePermissions(); } if (rep != null) { @@ -1403,6 +1409,11 @@ public class ArenaImpl implements Arena public boolean hasIsolatedChat() { return isolatedChat; } + + @Override + public Player getLastPlayerStanding() { + return lastStanding; + } /** * The "perfect equals method" cf. "Object-Oriented Design and Patterns" diff --git a/src/com/garbagemule/MobArena/events/ArenaPlayerDeathEvent.java b/src/com/garbagemule/MobArena/events/ArenaPlayerDeathEvent.java index aedde08..e8c8bc1 100644 --- a/src/com/garbagemule/MobArena/events/ArenaPlayerDeathEvent.java +++ b/src/com/garbagemule/MobArena/events/ArenaPlayerDeathEvent.java @@ -11,10 +11,12 @@ public class ArenaPlayerDeathEvent extends Event private static final HandlerList handlers = new HandlerList(); private Player player; private Arena arena; + private boolean last; - public ArenaPlayerDeathEvent(Player player, Arena arena) { + public ArenaPlayerDeathEvent(Player player, Arena arena, boolean last) { this.player = player; - this.arena = arena; + this.arena = arena; + this.last = last; } public Player getPlayer() { @@ -24,6 +26,10 @@ public class ArenaPlayerDeathEvent extends Event public Arena getArena() { return arena; } + + public boolean wasLastPlayerStanding() { + return last; + } public HandlerList getHandlers() { return handlers; diff --git a/src/com/garbagemule/MobArena/framework/Arena.java b/src/com/garbagemule/MobArena/framework/Arena.java index 23a42a4..90071df 100644 --- a/src/com/garbagemule/MobArena/framework/Arena.java +++ b/src/com/garbagemule/MobArena/framework/Arena.java @@ -239,4 +239,6 @@ public interface Arena public boolean canSpec(Player p); public boolean hasIsolatedChat(); + + public Player getLastPlayerStanding(); }