26 lines
2.2 KiB
Diff
26 lines
2.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: mrhua269 <mrhua269@gmail.com>
|
|
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<Holder<PoiType>> 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);
|