diff --git a/MobArena.jar b/MobArena.jar index 300f2c1..49c30c5 100644 Binary files a/MobArena.jar and b/MobArena.jar differ diff --git a/resources/plugin.yml b/resources/plugin.yml index 3bef902..e371419 100644 --- a/resources/plugin.yml +++ b/resources/plugin.yml @@ -1,7 +1,7 @@ name: MobArena author: garbagemule main: com.garbagemule.MobArena.MobArena -version: 0.94.4.55 +version: 0.94.4.56 softdepend: [Spout,MultiVerse,XcraftGate,Towny,Heroes,MagicSpells,Vault] commands: ma: diff --git a/src/com/garbagemule/MobArena/ArenaListener.java b/src/com/garbagemule/MobArena/ArenaListener.java index 9e173bf..85fcb19 100644 --- a/src/com/garbagemule/MobArena/ArenaListener.java +++ b/src/com/garbagemule/MobArena/ArenaListener.java @@ -18,6 +18,7 @@ import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.entity.Slime; +import org.bukkit.entity.ThrownPotion; import org.bukkit.entity.Wolf; import org.bukkit.event.Event.Result; import org.bukkit.event.block.Action; @@ -40,6 +41,7 @@ import org.bukkit.event.entity.EntityRegainHealthEvent; import org.bukkit.event.entity.EntityTargetEvent; import org.bukkit.event.entity.EntityTeleportEvent; import org.bukkit.event.entity.FoodLevelChangeEvent; +import org.bukkit.event.entity.PotionSplashEvent; import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; import org.bukkit.event.entity.EntityTargetEvent.TargetReason; import org.bukkit.event.entity.PlayerDeathEvent; @@ -59,6 +61,8 @@ import org.bukkit.material.Attachable; import org.bukkit.material.Bed; import org.bukkit.material.Door; import org.bukkit.material.Redstone; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; import com.garbagemule.MobArena.MAUtils; import com.garbagemule.MobArena.MobArena; @@ -544,6 +548,24 @@ public class ArenaListener event.setCancelled(true); } } + + public void onPotionSplash(PotionSplashEvent event) { + ThrownPotion potion = event.getPotion(); + if (!region.contains(potion.getLocation()) || pvpEnabled) { + return; + } + + // If a potion has harmful effects, remove all players. + for (PotionEffect effect : potion.getEffects()) { + PotionEffectType type = effect.getType(); + if (type.equals(PotionEffectType.HARM) || type.equals(PotionEffectType.POISON)) { + for (Player p : arena.getPlayersInArena()) { + event.setIntensity(p, 0D); + } + break; + } + } + } public void onEntityChangeBlock(EntityChangeBlockEvent event) { if (arena.getRegion().contains(event.getBlock().getLocation())) diff --git a/src/com/garbagemule/MobArena/listeners/MAGlobalListener.java b/src/com/garbagemule/MobArena/listeners/MAGlobalListener.java index d260795..71af19d 100644 --- a/src/com/garbagemule/MobArena/listeners/MAGlobalListener.java +++ b/src/com/garbagemule/MobArena/listeners/MAGlobalListener.java @@ -172,6 +172,13 @@ public class MAGlobalListener implements Listener } } + @EventHandler(priority = EventPriority.NORMAL) + public void potionSplash(PotionSplashEvent event) { + for (Arena arena : am.getArenas()) { + arena.getEventListener().onPotionSplash(event); + } + } + ///////////////////////////////////////////////////////////////////////////