--- a/net/minecraft/world/entity/ai/goal/PathfinderGoalTempt.java +++ b/net/minecraft/world/entity/ai/goal/PathfinderGoalTempt.java @@ -11,6 +11,13 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeItemStack; +// 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 c = (new PathfinderTargetCondition()).a(10.0D).a().b().d().c(); @@ -21,7 +28,7 @@ private double g; private double h; private double i; - protected EntityHuman target; + protected EntityLiving target; // CraftBukkit private int j; private boolean k; private final RecipeItemStack l; @@ -49,7 +56,17 @@ return false; } else { this.target = this.a.world.a(PathfinderGoalTempt.c, (EntityLiving) this.a); - return this.target == null ? false : this.a(this.target.getItemInMainHand()) || this.a(this.target.getItemInOffHand()); + // CraftBukkit start + boolean tempt = this.target == null ? false : this.a(this.target.getItemInMainHand()) || this.a(this.target.getItemInOffHand()); + if (tempt) { + EntityTargetLivingEntityEvent event = CraftEventFactory.callEntityTargetLivingEvent(this.a, this.target, EntityTargetEvent.TargetReason.TEMPT); + if (event.isCancelled()) { + return false; + } + this.target = (event.getTarget() == null) ? null : ((CraftLivingEntity) event.getTarget()).getHandle(); + } + return tempt; + // CraftBukkit end } }