From 125595e6b97cfc62e608805ef526597557cd279e Mon Sep 17 00:00:00 2001 From: sk89q Date: Sun, 31 Aug 2014 18:28:50 -0700 Subject: [PATCH] Fix mobs not being able to attack players regardless of permission. Fixes WORLDGUARD-3172. --- .../bukkit/listener/RegionProtectionListener.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionProtectionListener.java b/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionProtectionListener.java index 5d9afcce..c1e7acda 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionProtectionListener.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/listener/RegionProtectionListener.java @@ -401,12 +401,13 @@ public void onDamageEntity(DamageEntityEvent event) { RegionAssociable associable = createRegionAssociable(event.getCause()); RegionQuery query = getPlugin().getRegionContainer().createQuery(); + Object rootCause = event.getCause().getRootCause(); Player attacker; boolean canDamage; String what; /* Hostile / ambient mob override */ - if (Entities.isHostile(event.getEntity()) || Entities.isAmbient(event.getEntity())) { + if (isWhitelistedEntity(event.getEntity()) || (rootCause instanceof Entity && isWhitelistedEntity((Entity) rootCause))) { canDamage = true; what = "hit that"; @@ -465,4 +466,8 @@ public void onVehicleExit(VehicleExitEvent event) { } } + private boolean isWhitelistedEntity(Entity entity) { + return Entities.isHostile(entity) || Entities.isAmbient(entity); + } + }