9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-25 01:49:16 +00:00

fix async EndermanAttackPlayerEvent

This commit is contained in:
hayanesuru
2025-07-04 15:49:19 +09:00
parent b904e81e27
commit 8e2a94a7d2

View File

@@ -1899,44 +1899,6 @@ index 7ff380212ce5e56e0e58e5f52f8c75bda5061ef0..c21519490433dfb2da3435afe757df01
}
static class DrownedGoToWaterGoal extends Goal {
diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java
index 58887b2cc931892f96793edd7a7d1db22cb8686c..ac55224190c97e5785a295639154e80ac6054de9 100644
--- a/net/minecraft/world/entity/monster/EnderMan.java
+++ b/net/minecraft/world/entity/monster/EnderMan.java
@@ -588,10 +588,33 @@ public class EnderMan extends Monster implements NeutralMob {
@Override
public boolean canUse() {
+ // Leaf start - Async target finding
+ if (org.dreeam.leaf.config.modules.async.AsyncTargetFinding.searchEntity) {
+ if (poll()) {
+ return true;
+ }
+ final EnderMan enderman = this.enderman;
+ final var ctx = enderman.getGoalCtx();
+ if (!ctx.state) return false;
+ final var cond = this.startAggroTargetConditions.range(this.getFollowDistance()).copy();
+ ctx.wake = world -> world.getNearestPlayer(cond, enderman);
+ return false;
+ }
+ // Leaf end - Async target finding
this.pendingTarget = getServerLevel(this.enderman).getNearestPlayer(this.startAggroTargetConditions.range(this.getFollowDistance()), this.enderman);
return this.pendingTarget != null;
}
+ // Leaf start - Async target finding
+ protected boolean poll() {
+ if (!(this.mob.getGoalCtx().result() instanceof Player player)) return false;
+ var serverLevel = getServerLevel(this.enderman);
+ if (!this.startAggroTargetConditions.range(this.getFollowDistance()).test(serverLevel, enderman, player)) return false;
+ this.pendingTarget = player;
+ return true;
+ }
+ // Leaf end - Async target finding
+
@Override
public void start() {
this.aggroTime = this.adjustedTickDelay(5);
diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java
index e1717b5c854aa81fdd7b7e715d7c3498d9f86072..727effd31644432f9da04ee4e3aaa41ce45d6a2e 100644
--- a/net/minecraft/world/entity/monster/Strider.java