diff --git a/nms-patches/net/minecraft/world/entity/ai/behavior/BehaviorFindAdmirableItem.patch b/nms-patches/net/minecraft/world/entity/ai/behavior/BehaviorFindAdmirableItem.patch new file mode 100644 index 000000000..11c605563 --- /dev/null +++ b/nms-patches/net/minecraft/world/entity/ai/behavior/BehaviorFindAdmirableItem.patch @@ -0,0 +1,28 @@ +--- a/net/minecraft/world/entity/ai/behavior/BehaviorFindAdmirableItem.java ++++ b/net/minecraft/world/entity/ai/behavior/BehaviorFindAdmirableItem.java +@@ -35,6 +35,25 @@ + + @Override + protected void start(WorldServer worldserver, E e0, long i) { ++ // CraftBukkit start ++ if (e0 instanceof net.minecraft.world.entity.animal.allay.Allay) { ++ Entity target = this.getClosestLovedItem(e0); ++ org.bukkit.event.entity.EntityTargetEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTargetEvent(e0, target, org.bukkit.event.entity.EntityTargetEvent.TargetReason.CLOSEST_ENTITY); ++ ++ if (event.isCancelled()) { ++ return; ++ } ++ ++ target = (event.getTarget() == null) ? null : ((org.bukkit.craftbukkit.entity.CraftEntity) event.getTarget()).getHandle(); ++ if (target instanceof EntityItem item) { ++ e0.getBrain().setMemory(MemoryModuleType.NEAREST_VISIBLE_WANTED_ITEM, java.util.Optional.of(item)); ++ BehaviorUtil.setWalkAndLookTargetMemories(e0, target, this.speedModifier, 0); ++ } else { ++ e0.getBrain().eraseMemory(MemoryModuleType.NEAREST_VISIBLE_WANTED_ITEM); ++ } ++ return; ++ } ++ // CraftBukkit end + BehaviorUtil.setWalkAndLookTargetMemories(e0, (Entity) this.getClosestLovedItem(e0), this.speedModifier, 0); + } +