diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/ChunkRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/ChunkRenderer.kt index d30c4623d..c3c523549 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/ChunkRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/chunk/ChunkRenderer.kt @@ -149,4 +149,15 @@ class ChunkRenderer(private val connection: Connection, private val world: World } } } + + fun unloadChunk(location: ChunkLocation) { + renderWindow.renderQueue.add { + chunkSectionsToDraw[location]?.let { + for ((_, mesh) in it) { + mesh.unload() + } + chunkSectionsToDraw.remove(location) + } + } + } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketUnloadChunk.java b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketUnloadChunk.java index 9b94583a3..87d6fb42c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketUnloadChunk.java +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketUnloadChunk.java @@ -31,6 +31,7 @@ public class PacketUnloadChunk extends ClientboundPacket { @Override public void handle(Connection connection) { connection.getPlayer().getWorld().unloadChunk(getLocation()); + connection.getRenderer().getRenderWindow().getChunkRenderer().unloadChunk(this.location); } @Override