From 7c4b0f19dd70a0fb99506136f235fa88e6c79e94 Mon Sep 17 00:00:00 2001 From: Player Name Date: Sat, 20 Jun 2026 19:27:23 +0200 Subject: [PATCH] Fix flashing --- .../global/skill/construction/HouseManager.java | 2 +- Server/src/main/core/game/world/map/RegionChunk.java | 4 ++-- .../main/core/game/world/update/MapChunkRenderer.kt | 10 ++++++---- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Server/src/main/content/global/skill/construction/HouseManager.java b/Server/src/main/content/global/skill/construction/HouseManager.java index 48786ae1c..884ce5a7f 100644 --- a/Server/src/main/content/global/skill/construction/HouseManager.java +++ b/Server/src/main/content/global/skill/construction/HouseManager.java @@ -172,7 +172,7 @@ public final class HouseManager { } private void submitCloseLoadInterfacePulse(Player player) { - GameWorld.getPulser().submit(new Pulse(2, player) { + GameWorld.getPulser().submit(new Pulse(1, player) { @Override public boolean pulse() { player.getInterfaceManager().close(); diff --git a/Server/src/main/core/game/world/map/RegionChunk.java b/Server/src/main/core/game/world/map/RegionChunk.java index 7ee787878..cf406ffca 100644 --- a/Server/src/main/core/game/world/map/RegionChunk.java +++ b/Server/src/main/core/game/world/map/RegionChunk.java @@ -393,11 +393,11 @@ public class RegionChunk { if (dyn == stat) { continue; } - if (stat != null) { + if (stat != null && (dyn == null || !dyn.isRenderable())) { ClearScenery.write(buffer, stat); updated = true; } - if (dyn != null) { + if (dyn != null && dyn.isRenderable()) { ConstructScenery.write(buffer, dyn); updated = true; } diff --git a/Server/src/main/core/game/world/update/MapChunkRenderer.kt b/Server/src/main/core/game/world/update/MapChunkRenderer.kt index fadf94fb1..9f6f0cff6 100644 --- a/Server/src/main/core/game/world/update/MapChunkRenderer.kt +++ b/Server/src/main/core/game/world/update/MapChunkRenderer.kt @@ -2,6 +2,8 @@ package core.game.world.update import core.game.node.entity.player.Player import core.game.world.map.RegionChunk +import core.game.world.map.RegionManager +import core.game.world.map.build.DynamicRegion import core.net.packet.PacketRepository import core.net.packet.context.ClearChunkContext import core.net.packet.out.ClearRegionChunk @@ -28,7 +30,7 @@ object MapChunkRenderer { for (dcx in -buildAreaDepth..+buildAreaDepth) { val addX = ArrayList() for (dcy in -buildAreaDepth..+buildAreaDepth) { - val newloc = player.location.chunkBase.transform(dcx*8, dcy*8, player.location.z) + val newloc = player.location.transform(dcx*8, dcy*8, 0) addX.add(newloc.chunk) } current.add(addX) @@ -39,10 +41,10 @@ object MapChunkRenderer { val sizeY: Int = last[x].size for (y in 0 until sizeY) { val previous = last[x][y] ?: continue - if (!containsChunk(current, previous)) { - PacketRepository.send(ClearRegionChunk::class.java, ClearChunkContext(player, previous)) - } else { + if (containsChunk(current, previous)) { updated.add(previous) + } else if (previous.region !is DynamicRegion) { //dynamic regions do not need a clear packet and briefly flash their cached states (e.g. POH with only hotspots) if you do send one + PacketRepository.send(ClearRegionChunk::class.java, ClearChunkContext(player, previous)) } } }