From 522d2255485936f5574febb1c4410d6aafbbffcd Mon Sep 17 00:00:00 2001 From: Shane Bee Date: Tue, 9 Apr 2019 21:20:36 -0700 Subject: [PATCH] Protect wolves under certain conditions (#507) - Protects wolves unless the attacker is being targeted by the wolf. --- .../GriefPrevention/EntityEventHandler.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/main/java/me/ryanhamshire/GriefPrevention/EntityEventHandler.java b/src/main/java/me/ryanhamshire/GriefPrevention/EntityEventHandler.java index b76ba37..9571008 100644 --- a/src/main/java/me/ryanhamshire/GriefPrevention/EntityEventHandler.java +++ b/src/main/java/me/ryanhamshire/GriefPrevention/EntityEventHandler.java @@ -48,6 +48,7 @@ import org.bukkit.entity.WaterMob; import org.bukkit.entity.Llama; import org.bukkit.entity.Donkey; import org.bukkit.entity.Mule; +import org.bukkit.entity.Wolf; import org.bukkit.entity.minecart.ExplosiveMinecart; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -988,6 +989,25 @@ public class EntityEventHandler implements Listener if(sendErrorMessagesToPlayers) GriefPrevention.sendMessage(attacker, TextMode.Err, Messages.CantFightWhileImmune); return; } + // disallow players attacking tamed wolves (dogs) unless under attack by said wolf + else if (tameable.getType() == EntityType.WOLF) + { + if (!tameable.getOwner().equals(attacker)) + { + if (((Wolf) tameable).getTarget() != null) + { + if (((Wolf) tameable).getTarget() == attacker) return; + } + event.setCancelled(true); + String ownerName = GriefPrevention.instance.getServer().getOfflinePlayer(ownerID).getName(); + String message = GriefPrevention.instance.dataStore.getMessage(Messages.NoDamageClaimedEntity, ownerName); + if (attacker.hasPermission("griefprevention.ignoreclaims")) + message += " " + GriefPrevention.instance.dataStore.getMessage(Messages.IgnoreClaimsAdvertisement); + if (sendErrorMessagesToPlayers) + GriefPrevention.sendMessage(attacker, TextMode.Err, message); + return; + } + } } } }