diff --git a/resources/plugin.yml b/resources/plugin.yml index ca8edef..eaf4488 100644 --- a/resources/plugin.yml +++ b/resources/plugin.yml @@ -1,7 +1,7 @@ name: MobArena author: garbagemule main: com.garbagemule.MobArena.MobArena -version: 0.96.6.1 +version: 0.96.6.2 softdepend: [Multiverse-Core,Towny,Heroes,MagicSpells,Vault] commands: ma: diff --git a/src/com/garbagemule/MobArena/ArenaListener.java b/src/com/garbagemule/MobArena/ArenaListener.java index e468658..a7c3a6b 100644 --- a/src/com/garbagemule/MobArena/ArenaListener.java +++ b/src/com/garbagemule/MobArena/ArenaListener.java @@ -776,20 +776,38 @@ public class ArenaListener public void onPotionSplash(PotionSplashEvent event) { ThrownPotion potion = event.getPotion(); - if (!region.contains(potion.getLocation()) || pvpEnabled) { + if (!region.contains(potion.getLocation())) { 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 (LivingEntity le : event.getAffectedEntities()) { - if (le instanceof Player) { - event.setIntensity(le, 0.0); + if (potion.getShooter() instanceof Player) { + // Check for PvP stuff if the shooter is a player + if (!pvpEnabled) { + // 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 (LivingEntity le : event.getAffectedEntities()) { + if (le instanceof Player) { + event.setIntensity(le, 0.0); + } + } + break; } } - break; + } + } else if (!monsterInfight) { + // Otherwise, check for monster infighting + for (PotionEffect effect : potion.getEffects()) { + PotionEffectType type = effect.getType(); + if (type.equals(PotionEffectType.HARM) || type.equals(PotionEffectType.POISON)) { + for (LivingEntity le : event.getAffectedEntities()) { + if (!(le instanceof Player)) { + event.setIntensity(le, 0.0); + } + } + break; + } } } }