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..47c84bd9c9f6c037c3888f16bc6d570b23dc8de9 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
|