mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2026-01-04 15:41:40 +00:00
fix async EndermanAttackPlayerEvent
This commit is contained in:
@@ -1899,44 +1899,6 @@ index 7ff380212ce5e56e0e58e5f52f8c75bda5061ef0..c21519490433dfb2da3435afe757df01
|
|||||||
}
|
}
|
||||||
|
|
||||||
static class DrownedGoToWaterGoal extends Goal {
|
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
|
diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java
|
||||||
index e1717b5c854aa81fdd7b7e715d7c3498d9f86072..727effd31644432f9da04ee4e3aaa41ce45d6a2e 100644
|
index e1717b5c854aa81fdd7b7e715d7c3498d9f86072..727effd31644432f9da04ee4e3aaa41ce45d6a2e 100644
|
||||||
--- a/net/minecraft/world/entity/monster/Strider.java
|
--- a/net/minecraft/world/entity/monster/Strider.java
|
||||||
|
|||||||
Reference in New Issue
Block a user