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); + } + }