9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-27 02:49:19 +00:00

backport: Re-route SetClosestHomeAsWalkTarget's poi finding to paper's faster logic

This commit is contained in:
Dreeam
2025-08-07 23:52:56 +08:00
parent e31d1587a9
commit 1f944bebf9

View File

@@ -0,0 +1,41 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
Date: Wed, 16 Jul 2025 11:13:38 +0800
Subject: [PATCH] Re-route SetClosestHomeAsWalkTarget's poi finding to paper's
faster logic
Also see findAnyPoiPositions in NearestBedSensor#doTick
diff --git a/net/minecraft/world/entity/ai/behavior/SetClosestHomeAsWalkTarget.java b/net/minecraft/world/entity/ai/behavior/SetClosestHomeAsWalkTarget.java
index 51413df5cd61b3ff59c6c6c3ec69d6732ab07d83..f89e6f4dfbb923cf851fc646a0ede8749fbdf89c 100644
--- a/net/minecraft/world/entity/ai/behavior/SetClosestHomeAsWalkTarget.java
+++ b/net/minecraft/world/entity/ai/behavior/SetClosestHomeAsWalkTarget.java
@@ -56,14 +56,14 @@ public class SetClosestHomeAsWalkTarget {
return true;
}
};
- Set<Pair<Holder<PoiType>, BlockPos>> set = poiManager.findAllWithType(
- poi -> poi.is(PoiTypes.HOME), predicate, mob.blockPosition(), 48, PoiManager.Occupancy.ANY
- )
- .collect(Collectors.toSet());
+ // Leaf start - Re-route SetClosestHomeAsWalkTarget's poi finding to paper's faster logic
+ java.util.List<Pair<Holder<PoiType>, BlockPos>> poiposes = new java.util.ArrayList<>();
+ io.papermc.paper.util.PoiAccess.findAnyPoiPositions(poiManager, poi -> poi.is(PoiTypes.HOME), predicate, mob.blockPosition(), 48, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes);
+ // Leaf end - Re-route SetClosestHomeAsWalkTarget's poi finding to paper's faster logic
// Kaiiju start - petal - Async path processing
if (org.dreeam.leaf.config.modules.async.AsyncPathfinding.enabled) {
// await on path async
- Path possiblePath = AcquirePoi.findPathToPois(mob, set);
+ Path possiblePath = AcquirePoi.findPathToPois(mob, new java.util.HashSet<>(poiposes)); // Leaf - Re-route SetClosestHomeAsWalkTarget's poi finding to paper's faster logic
// wait on the path to be processed
org.dreeam.leaf.async.path.AsyncPathProcessor.awaitProcessing(possiblePath, path -> {
@@ -71,7 +71,7 @@ public class SetClosestHomeAsWalkTarget {
});
} else {
// Kaiiju end
- Path path = AcquirePoi.findPathToPois(mob, set);
+ Path path = AcquirePoi.findPathToPois(mob, new java.util.HashSet<>(poiposes)); // Leaf - Re-route SetClosestHomeAsWalkTarget's poi finding to paper's faster logic
processPath(speedModifier, map, mutableLong, walkTarget, level, poiManager, mutableInt, path);
} // Kaiiju - async path processing