33 lines
2.3 KiB
Diff
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())
|
||
|
|
+ // Camellia 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 = moe.monnairealms.camellia.config.modules.fixes.POIRangeFixes.doNotCompetePOIIfUnloaded ? poiManager.get(sectionPosOfJobSite) : poiManager.getOrLoad(sectionPosOfJobSite);
|
||
|
|
+ poiChunk.flatMap(poiSection -> poiSection.getType(blockPosOfJobSite))
|
||
|
|
+ // Camellia end - Do not load too far poi chunk in poi compete scan
|
||
|
|
+ /*level.getPoiManager() // Camellia - Do not load too far poi chunk in poi compete scan
|
||
|
|
+ .getType(pos.pos())*/ // Camellia - 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
|