From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: MrHua269 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 = moe.monnairealms.camellia.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