From 62ea59e8f600499921e2c8c72060e6658e330658 Mon Sep 17 00:00:00 2001 From: Akiranya Date: Wed, 31 Aug 2022 00:28:02 +0800 Subject: [PATCH] Actually clear axolotl's target --- .../towny/listeners/TownyEntityListener.java | 19 +++++++++++++++++++ .../bukkit/towny/utils/CombatUtil.java | 3 --- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/com/palmergames/bukkit/towny/listeners/TownyEntityListener.java b/src/com/palmergames/bukkit/towny/listeners/TownyEntityListener.java index ee24ec6a30..dd7f99c8fd 100644 --- a/src/com/palmergames/bukkit/towny/listeners/TownyEntityListener.java +++ b/src/com/palmergames/bukkit/towny/listeners/TownyEntityListener.java @@ -25,12 +25,14 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Mob; import org.bukkit.entity.Monster; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.entity.ThrownPotion; import org.bukkit.entity.Vehicle; import org.bukkit.entity.Villager; +import org.bukkit.entity.memory.MemoryKey; import org.bukkit.event.Cancellable; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -46,6 +48,7 @@ import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.EntityInteractEvent; +import org.bukkit.event.entity.EntityTargetLivingEntityEvent; import org.bukkit.event.entity.LingeringPotionSplashEvent; import org.bukkit.event.entity.PigZapEvent; import org.bukkit.event.entity.PotionSplashEvent; @@ -144,6 +147,22 @@ public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { } } + /** + * Prevent axolotl from targeting protected mobs. + * + * @param event - EntityTargetLivingEntityEvent + */ + @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + public void onAxolotlTarget(EntityTargetLivingEntityEvent event) { + if (event.getEntity() instanceof Mob attacker && + attacker.getType().name().equals("AXOLOTL") && + event.getTarget() instanceof Mob defender && + CombatUtil.preventDamageCall(attacker, defender, DamageCause.ENTITY_ATTACK)) { + attacker.setMemory(MemoryKey.HAS_HUNTING_COOLDOWN, true); + event.setCancelled(true); + } + } + /** * Prevent monsters from dropping blocks if within an arena plot. * diff --git a/src/com/palmergames/bukkit/towny/utils/CombatUtil.java b/src/com/palmergames/bukkit/towny/utils/CombatUtil.java index 7c7edba93e..4b32f71c37 100644 --- a/src/com/palmergames/bukkit/towny/utils/CombatUtil.java +++ b/src/com/palmergames/bukkit/towny/utils/CombatUtil.java @@ -24,7 +24,6 @@ import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.block.Block; -import org.bukkit.entity.Axolotl; import org.bukkit.entity.Entity; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.LightningStrike; @@ -294,8 +293,6 @@ && preventPvP(world, defenderTB)) { } if (attackingEntity.getType().name().equals("AXOLOTL") && EntityTypeUtil.isInstanceOfAny(TownySettings.getProtectedEntityTypes(), defendingEntity)) { - //TODO: Targeting not actually removed - ((Axolotl) attackingEntity).setTarget(null); return true; } }