From 8974323406dad8e35d1ba98c0c80b6f7ab68bb08 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Thu, 4 Jul 2024 16:15:51 -0500 Subject: [PATCH] Fix Api client level not containing the generic renderer --- .../wrappers/world/ClientLevelWrapper.java | 31 +++++-------------- .../wrappers/world/ServerLevelWrapper.java | 24 +++++++++----- coreSubProjects | 2 +- 3 files changed, 25 insertions(+), 32 deletions(-) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java index 49886cc55..872cc09e8 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ClientLevelWrapper.java @@ -9,9 +9,7 @@ import com.seibel.distanthorizons.common.wrappers.block.cache.ClientBlockDetailM import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper; import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftClientWrapper; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; -import com.seibel.distanthorizons.core.level.ClientLevelModule; -import com.seibel.distanthorizons.core.level.DhClientLevel; -import com.seibel.distanthorizons.core.level.IKeyedClientLevelManager; +import com.seibel.distanthorizons.core.level.*; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.pos.DhBlockPos; import com.seibel.distanthorizons.core.pos.DhChunkPos; @@ -22,9 +20,7 @@ import com.seibel.distanthorizons.core.wrapperInterfaces.world.IClientLevelWrapp import com.seibel.distanthorizons.core.wrapperInterfaces.world.IDimensionTypeWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.IServerLevelWrapper; import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.LightLayer; import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkSource; import org.apache.logging.log4j.Logger; @@ -43,7 +39,7 @@ import net.minecraft.world.level.chunk.status.ChunkStatus; public class ClientLevelWrapper implements IClientLevelWrapper { private static final Logger LOGGER = DhLoggerBuilder.getLogger(ClientLevelWrapper.class.getSimpleName()); - private static final ConcurrentHashMap LEVEL_WRAPPER_BY_CLIENT_LEVEL = new ConcurrentHashMap<>(); + private static final ConcurrentHashMap LEVEL_WRAPPER_BY_CLIENT_LEVEL = new ConcurrentHashMap<>(); // TODO can leak private static final IKeyedClientLevelManager KEYED_CLIENT_LEVEL_MANAGER = SingletonInjector.INSTANCE.get(IKeyedClientLevelManager.class); private final ClientLevel level; @@ -51,7 +47,8 @@ public class ClientLevelWrapper implements IClientLevelWrapper private BlockStateWrapper dirtBlockWrapper; private BiomeWrapper plainsBiomeWrapper; - private DhClientLevel parentClientLevel; + @Deprecated // TODO circular references are bad + private IDhLevel parentDhLevel; @@ -235,7 +232,7 @@ public class ClientLevelWrapper implements IClientLevelWrapper public void onUnload() { LEVEL_WRAPPER_BY_CLIENT_LEVEL.remove(this.level); - this.parentClientLevel = null; + this.parentDhLevel = null; } @@ -245,29 +242,17 @@ public class ClientLevelWrapper implements IClientLevelWrapper //===================// @Override - public void setParentClientLevel(DhClientLevel parentClientLevel) { this.parentClientLevel = parentClientLevel; } + public void setParentLevel(IDhLevel parentLevel) { this.parentDhLevel = parentLevel; } @Override public IDhApiCustomRenderRegister getRenderRegister() { - if (this.parentClientLevel == null) + if (this.parentDhLevel == null) { return null; } - ClientLevelModule clientLevelModule = this.parentClientLevel.clientside; - if (clientLevelModule == null) - { - return null; - } - - ClientLevelModule.ClientRenderState renderState = clientLevelModule.ClientRenderStateRef.get(); - if (renderState == null) - { - return null; - } - - return renderState.genericRenderer; + return this.parentDhLevel.getGenericRenderer(); } diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ServerLevelWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ServerLevelWrapper.java index 3a9f13f5d..c8fa4d3f5 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ServerLevelWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/world/ServerLevelWrapper.java @@ -30,6 +30,7 @@ import com.seibel.distanthorizons.common.wrappers.block.BlockStateWrapper; import com.seibel.distanthorizons.common.wrappers.block.cache.ServerBlockDetailMap; import com.seibel.distanthorizons.common.wrappers.chunk.ChunkWrapper; import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftClientWrapper; +import com.seibel.distanthorizons.core.level.IDhLevel; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.pos.DhBlockPos; import com.seibel.distanthorizons.core.pos.DhChunkPos; @@ -60,8 +61,9 @@ public class ServerLevelWrapper implements IServerLevelWrapper private static final Logger LOGGER = DhLoggerBuilder.getLogger(); private static final ConcurrentHashMap LEVEL_WRAPPER_BY_SERVER_LEVEL = new ConcurrentHashMap<>(); - final ServerLevel level; - ServerBlockDetailMap blockMap = new ServerBlockDetailMap(this); + private final ServerLevel level; + @Deprecated // TODO circular references are bad + private IDhLevel parentDhLevel; @@ -173,22 +175,28 @@ public class ServerLevelWrapper implements IServerLevelWrapper } @Override - public ServerLevel getWrappedMcObject() - { - return level; - } + public ServerLevel getWrappedMcObject() { return this.level; } @Override public void onUnload() { LEVEL_WRAPPER_BY_SERVER_LEVEL.remove(this.level); } + + @Override + public void setParentLevel(IDhLevel parentLevel) { this.parentDhLevel = parentLevel; } + @Override public IDhApiCustomRenderRegister getRenderRegister() { - // custom rendering isn't supported on the server-side - return null; + if (this.parentDhLevel == null) + { + return null; + } + + return this.parentDhLevel.getGenericRenderer(); } + //================// // base overrides // //================// diff --git a/coreSubProjects b/coreSubProjects index 88db5c959..120dddf84 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 88db5c95947593d21187ea98a3a7cf88884c9c64 +Subproject commit 120dddf84420f656934802ee4c7e1f4cc7d9c837