diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/ClientLevelModule.java b/core/src/main/java/com/seibel/distanthorizons/core/level/ClientLevelModule.java index 0c33a2bfc..0bc03ace4 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/level/ClientLevelModule.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/level/ClientLevelModule.java @@ -86,8 +86,14 @@ public class ClientLevelModule implements Closeable return; } + IClientLevelWrapper clientLevelWrapper = this.parentClientLevel.getClientLevelWrapper(); + if (clientLevelWrapper == null) + { + return; + } + clientRenderState.close(); - clientRenderState = new ClientRenderState(parentClientLevel, parentClientLevel.getFileHandler(), parentClientLevel.getSaveStructure()); + clientRenderState = new ClientRenderState(this.parentClientLevel, clientLevelWrapper, this.parentClientLevel.getFileHandler(), this.parentClientLevel.getSaveStructure()); if (!this.ClientRenderStateRef.compareAndSet(null, clientRenderState)) { //FIXME: How to handle this? @@ -117,9 +123,9 @@ public class ClientLevelModule implements Closeable //========// /** @return if the {@link ClientRenderState} was successfully swapped */ - public boolean startRenderer() + public boolean startRenderer(IClientLevelWrapper clientLevelWrapper) { - ClientRenderState ClientRenderState = new ClientRenderState(parentClientLevel, parentClientLevel.getFileHandler(), parentClientLevel.getSaveStructure()); + ClientRenderState ClientRenderState = new ClientRenderState(parentClientLevel, clientLevelWrapper, parentClientLevel.getFileHandler(), parentClientLevel.getSaveStructure()); if (!this.ClientRenderStateRef.compareAndSet(null, ClientRenderState)) { LOGGER.warn("Failed to start renderer due to concurrency"); @@ -280,10 +286,10 @@ public class ClientLevelModule implements Closeable public final LodRenderer renderer; public ClientRenderState( - IDhClientLevel dhClientLevel, IFullDataSourceProvider fullDataSourceProvider, + IDhClientLevel dhClientLevel, IClientLevelWrapper clientLevelWrapper, IFullDataSourceProvider fullDataSourceProvider, AbstractSaveStructure saveStructure) { - this.clientLevelWrapper = dhClientLevel.getClientLevelWrapper(); + this.clientLevelWrapper = clientLevelWrapper; this.renderSourceFileHandler = new RenderSourceFileHandler(fullDataSourceProvider, dhClientLevel, saveStructure); this.quadtree = new LodQuadTree(dhClientLevel, Config.Client.Advanced.Graphics.Quality.lodChunkRenderDistanceRadius.get() * LodUtil.CHUNK_WIDTH * 2, diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java b/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java index 824c8e636..316189645 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientLevel.java @@ -64,7 +64,7 @@ public class DhClientLevel extends DhLevel implements IDhClientLevel if (enableRendering) { - this.clientside.startRenderer(); + this.clientside.startRenderer(clientLevelWrapper); LOGGER.info("Started DHLevel for " + this.levelWrapper + " with saves at " + this.saveStructure); } } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientServerLevel.java b/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientServerLevel.java index cde8c6d0a..3f098d7f0 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientServerLevel.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/level/DhClientServerLevel.java @@ -120,10 +120,7 @@ public class DhClientServerLevel extends DhLevel implements IDhClientLevel, IDhS // render // //========// - public void startRenderer(IClientLevelWrapper clientLevel) - { - clientside.startRenderer(); - } + public void startRenderer(IClientLevelWrapper clientLevel) { this.clientside.startRenderer(clientLevel); } public void stopRenderer() { this.clientside.stopRenderer(); }