13
0
geforkt von Mirrors/Paper
Paper/paper-server/nms-patches/BehaviorAttackTargetSet.patch
CraftBukkit/Spigot b2efd58164 Organise imports
By: md_5 <git@md-5.net>
2021-03-09 08:47:33 +11:00

40 Zeilen
1.7 KiB
Diff

--- a/net/minecraft/server/BehaviorAttackTargetSet.java
+++ b/net/minecraft/server/BehaviorAttackTargetSet.java
@@ -5,6 +5,12 @@
import java.util.function.Function;
import java.util.function.Predicate;
+// CraftBukkit start
+import org.bukkit.craftbukkit.entity.CraftLivingEntity;
+import org.bukkit.craftbukkit.event.CraftEventFactory;
+import org.bukkit.event.entity.EntityTargetEvent;
+// CraftBukkit end
+
public class BehaviorAttackTargetSet<E extends EntityInsentient> extends Behavior<E> {
private final Predicate<E> b;
@@ -33,13 +39,21 @@
}
protected void a(WorldServer worldserver, E e0, long i) {
- ((Optional) this.c.apply(e0)).ifPresent((entityliving) -> {
+ (this.c.apply(e0)).ifPresent((entityliving) -> { // CraftBukkit - decompile error
this.a(e0, entityliving);
});
}
private void a(E e0, EntityLiving entityliving) {
- e0.getBehaviorController().setMemory(MemoryModuleType.ATTACK_TARGET, (Object) entityliving);
+ // CraftBukkit start
+ EntityTargetEvent event = CraftEventFactory.callEntityTargetLivingEvent(e0, entityliving, (entityliving instanceof EntityPlayer) ? EntityTargetEvent.TargetReason.CLOSEST_PLAYER : EntityTargetEvent.TargetReason.CLOSEST_ENTITY);
+ if (event.isCancelled()) {
+ return;
+ }
+ entityliving = (event.getTarget() != null) ? ((CraftLivingEntity) event.getTarget()).getHandle() : null;
+ // CraftBukkit end
+
+ e0.getBehaviorController().setMemory(MemoryModuleType.ATTACK_TARGET, entityliving); // CraftBukkit - decompile error
e0.getBehaviorController().removeMemory(MemoryModuleType.CANT_REACH_WALK_TARGET_SINCE);
}
}