--- a/net/minecraft/world/entity/ai/goal/PathfinderGoalTempt.java +++ b/net/minecraft/world/entity/ai/goal/PathfinderGoalTempt.java @@ -10,6 +10,13 @@ import net.minecraft.world.entity.player.EntityHuman; import net.minecraft.world.item.ItemStack; +// CraftBukkit start +import org.bukkit.craftbukkit.entity.CraftLivingEntity; +import org.bukkit.craftbukkit.event.CraftEventFactory; +import org.bukkit.event.entity.EntityTargetEvent; +import org.bukkit.event.entity.EntityTargetLivingEntityEvent; +// CraftBukkit end + public class PathfinderGoalTempt extends PathfinderGoal { private static final PathfinderTargetCondition TEMP_TARGETING = PathfinderTargetCondition.forNonCombat().range(10.0D).ignoreLineOfSight(); @@ -22,7 +29,7 @@ private double pRotX; private double pRotY; @Nullable - protected EntityHuman player; + protected EntityLiving player; // CraftBukkit private int calmDown; private boolean isRunning; private final Predicate items; @@ -44,6 +51,15 @@ return false; } else { this.player = this.mob.level().getNearestPlayer(this.targetingConditions, this.mob); + // CraftBukkit start + if (this.player != null) { + EntityTargetLivingEntityEvent event = CraftEventFactory.callEntityTargetLivingEvent(this.mob, this.player, EntityTargetEvent.TargetReason.TEMPT); + if (event.isCancelled()) { + return false; + } + this.player = (event.getTarget() == null) ? null : ((CraftLivingEntity) event.getTarget()).getHandle(); + } + // CraftBukkit end return this.player != null; } }