From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: mrhua269 Date: Tue, 28 Oct 2025 23:19:33 +0800 Subject: [PATCH] Fix possible delayed POI updates while block updating diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java index 87377bba2ebdc0eba5b7b212d971994c35ca0b62..64b221fd15b5c26621a412dc152647908da850ec 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -2394,11 +2394,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe Optional> optional1 = PoiTypes.forState(newState); if (!Objects.equals(optional, optional1)) { BlockPos blockPos = pos.immutable(); - optional.ifPresent(holder -> io.papermc.paper.threadedregions.RegionizedServer.getInstance().taskQueue.queueChunkTask(this, blockPos.getX() >> 4, blockPos.getZ() >> 4, () -> { // Folia - region threading + final java.util.concurrent.Executor scheduler = this.regionizedBlockableEventLoop.asExecutor(pos, true); // Luminol - Instant POI updates + optional.ifPresent(holder -> /*io.papermc.paper.threadedregions.RegionizedServer.getInstance().taskQueue.queueChunkTask(this, blockPos.getX() >> 4, blockPos.getZ() >> 4,*/scheduler.execute( () -> { // Folia - region threading // Luminol - Instant POI updates this.getPoiManager().remove(blockPos); DebugPackets.sendPoiRemovedPacket(this, blockPos); })); - optional1.ifPresent(holder -> io.papermc.paper.threadedregions.RegionizedServer.getInstance().taskQueue.queueChunkTask(this, blockPos.getX() >> 4, blockPos.getZ() >> 4, () -> { // Folia - region threading + optional1.ifPresent(holder -> /*io.papermc.paper.threadedregions.RegionizedServer.getInstance().taskQueue.queueChunkTask(this, blockPos.getX() >> 4, blockPos.getZ() >> 4,*/scheduler.execute( () -> { // Folia - region threading // Luminol - Instant POI updates // Paper start - Remove stale POIs if (optional.isEmpty() && this.getPoiManager().exists(blockPos, ignored -> true)) { this.getPoiManager().remove(blockPos);