Files
Shiroha/shiroha-server/minecraft-patches/features/0008-Do-not-load-too-far-poi-chunk-in-poi-compete-scan.patch
T
2026-07-14 13:29:52 +08:00

33 lines
2.3 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <mrhua269@gmail.com>
Date: Fri, 17 Apr 2026 23:25:45 +0800
Subject: [PATCH] Do not load too far poi chunk in poi compete scan
Beeeeeeeeeeeeeeee
diff --git a/net/minecraft/world/entity/ai/behavior/PoiCompetitorScan.java b/net/minecraft/world/entity/ai/behavior/PoiCompetitorScan.java
index 53131c1b8d5562f9a1b45dfab4fdbdd37b655139..f4c171c06ac2a3d45c91365781d0789e4ee74fe8 100644
--- a/net/minecraft/world/entity/ai/behavior/PoiCompetitorScan.java
+++ b/net/minecraft/world/entity/ai/behavior/PoiCompetitorScan.java
@@ -24,8 +24,18 @@ public class PoiCompetitorScan {
return true;
}
// Folia end - region threading
- level.getPoiManager()
- .getType(pos.pos())
+ // Shiroha start - Do not load too far poi chunk in poi compete scan
+ var blockPosOfJobSite = pos.pos();
+ var sectionPosOfJobSite = net.minecraft.core.SectionPos.asLong(blockPosOfJobSite);
+ var poiManager = level.getPoiManager();
+ // we don't care if we should clear the memory of JOB_SITE
+ // as it will be automatically removed in SetWalkTargetFromBlockMemory
+ // so simply break down if it's not loaded
+ var poiChunk = io.nanachiyo0721.shiroha.config.modules.fixes.POIRangeFixes.doNotCompetePOIIfUnloaded ? poiManager.get(sectionPosOfJobSite) : poiManager.getOrLoad(sectionPosOfJobSite);
+ poiChunk.flatMap(poiSection -> poiSection.getType(blockPosOfJobSite))
+ // Shiroha end - Do not load too far poi chunk in poi compete scan
+ /*level.getPoiManager() // Shiroha - Do not load too far poi chunk in poi compete scan
+ .getType(pos.pos())*/ // Shiroha - Do not load too far poi chunk in poi compete scan
.ifPresent(
// Paper start - Improve performance of PoiCompetitorScan by unrolling stream
// The previous logic used Stream#reduce to simulate a form of single-iteration bubble sort