SPIGOT-7079: Allays don't call EntityTargetEvent on ground items
This commit is contained in:
parent
f80adb8b9f
commit
e714262016
@ -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);
|
||||||
|
}
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user