SPIGOT-7079: Allays don't call EntityTargetEvent on ground items

This commit is contained in:
Doc 2022-08-16 19:53:20 +10:00 committed by md_5
parent f80adb8b9f
commit e714262016
No known key found for this signature in database
GPG Key ID: E8E901AC7C617C11

View File

@ -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);
}