diff --git a/MobArena.jar b/MobArena.jar index 35ead64..d76a86b 100644 Binary files a/MobArena.jar and b/MobArena.jar differ diff --git a/resources/res/magicspells.yml b/resources/res/magicspells.yml index 88f5edc..996d8fb 100644 --- a/resources/res/magicspells.yml +++ b/resources/res/magicspells.yml @@ -10,4 +10,8 @@ disabled-spells: # Spells that will be disabled only while a boss is present. disabled-only-on-bosses: + - purge + +# Spells that will be disabled only during swarm waves. +disabled-only-on-swarms: - purge \ No newline at end of file diff --git a/src/com/garbagemule/MobArena/Arena.java b/src/com/garbagemule/MobArena/Arena.java index 9abd6ac..0a3aa94 100644 --- a/src/com/garbagemule/MobArena/Arena.java +++ b/src/com/garbagemule/MobArena/Arena.java @@ -86,6 +86,7 @@ public class Arena protected TreeSet singleWaves, singleWavesInstance; protected TreeSet recurrentWaves; protected BossWave bossWave; + protected Wave currentWave; // Arena sets/maps protected Set hasPaid, rewardedPlayers, notifyPlayers, randoms; @@ -438,6 +439,7 @@ public class Arena spawnTaskId = -1; sheepTaskId = -1; spawnThread = null; + currentWave = null; } else System.out.println("--------- THE SPAWNTHREAD IS NULL! ----------"); @@ -1098,6 +1100,16 @@ public class Arena { return world; } + + public Wave getWave() + { + return currentWave; + } + + public void setWave(Wave wave) + { + currentWave = wave; + } public void setBossWave(BossWave bossWave) { diff --git a/src/com/garbagemule/MobArena/MASpawnThread.java b/src/com/garbagemule/MobArena/MASpawnThread.java index 6a1f8bd..e02bba2 100644 --- a/src/com/garbagemule/MobArena/MASpawnThread.java +++ b/src/com/garbagemule/MobArena/MASpawnThread.java @@ -123,7 +123,8 @@ public class MASpawnThread implements Runnable // Notify listeners. for (MobArenaListener listener : plugin.getAM().listeners) listener.onWave(arena, wave, w.getName(), w.getBranch(), w.getType()); - + + arena.setWave(w); w.spawn(wave); } diff --git a/src/com/garbagemule/MobArena/listeners/MagicSpellsListener.java b/src/com/garbagemule/MobArena/listeners/MagicSpellsListener.java index 343ae7b..ba868ba 100644 --- a/src/com/garbagemule/MobArena/listeners/MagicSpellsListener.java +++ b/src/com/garbagemule/MobArena/listeners/MagicSpellsListener.java @@ -9,13 +9,14 @@ import org.bukkit.util.config.Configuration; import com.garbagemule.MobArena.Arena; import com.garbagemule.MobArena.MobArena; import com.garbagemule.MobArena.util.FileUtils; +import com.garbagemule.MobArena.waves.Wave.WaveType; import com.nisovin.MagicSpells.Events.SpellCastEvent; import com.nisovin.MagicSpells.Events.SpellListener; public class MagicSpellsListener extends SpellListener { private MobArena plugin; - private List disabled, disabledOnBoss; + private List disabled, disabledOnBoss, disabledOnSwarm; public MagicSpellsListener(MobArena plugin) { @@ -34,15 +35,19 @@ public class MagicSpellsListener extends SpellListener if (arena == null || !arena.isRunning()) return; String spell = event.getSpell().getName(); + WaveType type = (arena.getWave() != null) ? arena.getWave().getType() : null; - if (disabled.contains(spell) || (arena.isBossWave() && disabledOnBoss.contains(spell))) + if (disabled.contains(spell) || + (type == WaveType.BOSS && disabledOnBoss.contains(spell)) || + (type == WaveType.SWARM && disabledOnSwarm.contains(spell))) event.setCancelled(true); } private void setupSpells(Configuration config) { - this.disabled = config.getStringList("disabled-spells", new LinkedList()); - this.disabledOnBoss = config.getStringList("disabled-only-on-bosses", new LinkedList()); + this.disabled = config.getStringList("disabled-spells", new LinkedList()); + this.disabledOnBoss = config.getStringList("disabled-only-on-bosses", new LinkedList()); + this.disabledOnSwarm = config.getStringList("disabled-only-on-swarms", new LinkedList()); } public void disableSpell(String spell)