diff --git a/src/com/garbagemule/MobArena/ArenaListener.java b/src/com/garbagemule/MobArena/ArenaListener.java index abb8224..6e63822 100644 --- a/src/com/garbagemule/MobArena/ArenaListener.java +++ b/src/com/garbagemule/MobArena/ArenaListener.java @@ -314,7 +314,8 @@ public class ArenaListener if (!monsters.getMonsters().contains(event.getEntity()) && !arena.getRegion().contains(event.getLocation(), 10)) return; - monsters.removeMonster(event.getEntity()); + // The generic remove method removes bosses as well + monsters.remove(event.getEntity()); // Cancel if the arena isn't running if (!arena.isRunning()) { diff --git a/src/com/garbagemule/MobArena/MASpawnThread.java b/src/com/garbagemule/MobArena/MASpawnThread.java index cc88d9b..f3a8a36 100644 --- a/src/com/garbagemule/MobArena/MASpawnThread.java +++ b/src/com/garbagemule/MobArena/MASpawnThread.java @@ -235,7 +235,7 @@ public class MASpawnThread implements Runnable } if (e.isDead() || !region.contains(e.getLocation())) { - monsterManager.removeMonster(e); + monsterManager.remove(e); e.remove(); } } @@ -247,10 +247,6 @@ public class MASpawnThread implements Runnable if (region.contains(p.getLocation())) { continue; } - - // TODO remove debug message - Location l = p.getLocation(); - System.out.println("Player: " + p.getName() + " found at location:" + l.getX() + ", " + l.getY() + ", " + l.getZ()); Messenger.tellPlayer(p, "Leaving so soon?"); p.getInventory().clear(); diff --git a/src/com/garbagemule/MobArena/MonsterManager.java b/src/com/garbagemule/MobArena/MonsterManager.java index 4f2d41d..5c42876 100644 --- a/src/com/garbagemule/MobArena/MonsterManager.java +++ b/src/com/garbagemule/MobArena/MonsterManager.java @@ -59,6 +59,19 @@ public class MonsterManager } } + public void remove(Entity e) { + if (monsters.remove(e)) { + sheep.remove(e); + golems.remove(e); + pets.remove(e); + suppliers.remove(e); + MABoss boss = bosses.remove(e); + if (boss != null) { + boss.setDead(true); + } + } + } + public Set getMonsters() { return monsters; } diff --git a/src/com/garbagemule/MobArena/waves/BossAbilityThread.java b/src/com/garbagemule/MobArena/waves/BossAbilityThread.java index fc0a447..0308b1d 100644 --- a/src/com/garbagemule/MobArena/waves/BossAbilityThread.java +++ b/src/com/garbagemule/MobArena/waves/BossAbilityThread.java @@ -38,6 +38,9 @@ public class BossAbilityThread implements Runnable if (bosses.isEmpty()) { return; } + for (MABoss boss : bosses) { + if (boss.isDead()) return; + } // Get the next ability in the list. Ability ability = abilities.get(counter++ % abilities.size());