From 40cd6c1386eec84baf50bc1d06cf8b15e8a4943f Mon Sep 17 00:00:00 2001 From: s809 <11816467-s809@users.noreply.gitlab.com> Date: Sun, 27 Aug 2023 18:42:07 +0500 Subject: [PATCH] Fix loading ClientLevel on server --- .../common/wrappers/WrapperFactory.java | 18 ++++-------------- .../common/wrappers/block/BiomeWrapper.java | 2 +- .../wrappers/block/BlockStateWrapper.java | 6 ++---- coreSubProjects | 2 +- fabric/build.gradle | 3 --- 5 files changed, 8 insertions(+), 23 deletions(-) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/WrapperFactory.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/WrapperFactory.java index 01bcf52f7..1f33cb6ee 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/WrapperFactory.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/WrapperFactory.java @@ -131,19 +131,9 @@ public class WrapperFactory implements IWrapperFactory // level wrapper - ILevelWrapper levelWrapper; - if (level instanceof ServerLevel) - { - levelWrapper = ServerLevelWrapper.getWrapper((ServerLevel)level); - } - else if (level instanceof ClientLevel) - { - levelWrapper = ClientLevelWrapper.getWrapper((ClientLevel)level); - } - else - { - throw new ClassCastException(createChunkWrapperErrorMessage(objectArray)); - } + ILevelWrapper levelWrapper = level.isClientSide() + ? ClientLevelWrapper.getWrapper((ClientLevel)level) + : ServerLevelWrapper.getWrapper((ServerLevel)level); return new ChunkWrapper(chunk, lightSource, levelWrapper); @@ -177,7 +167,7 @@ public class WrapperFactory implements IWrapperFactory // MC 1.16, 1.18, 1.19, 1.20 #if POST_MC_1_17_1 || MC_1_16_5 message.append("[" + ChunkAccess.class.getName() + "], \n"); - message.append("[" + ServerLevel.class.getName() + "] or [" + ClientLevel.class.getName() + "]. \n"); + message.append("[ServerLevel] or [ClientLevel]. \n"); // Classes are not referenced by names to avoid exception when one is missing #else // See preprocessor comment in createChunkWrapper() for full documentation not implemented for this version of Minecraft! diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BiomeWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BiomeWrapper.java index aee4951ca..7c9bb534e 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BiomeWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BiomeWrapper.java @@ -176,7 +176,7 @@ public class BiomeWrapper implements IBiomeWrapper if (this.serialString == null) { - net.minecraft.core.RegistryAccess registryAccess = Minecraft.getInstance().level.registryAccess(); + net.minecraft.core.RegistryAccess registryAccess = ((Level) levelWrapper.getWrappedMcObject()).registryAccess(); ResourceLocation resourceLocation; #if MC_1_16_5 || MC_1_17_1 diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BlockStateWrapper.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BlockStateWrapper.java index 4923b9441..6fdc4bbc5 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BlockStateWrapper.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/block/BlockStateWrapper.java @@ -4,6 +4,7 @@ import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.wrapperInterfaces.block.IBlockStateWrapper; import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper; +import net.minecraft.client.Minecraft; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; @@ -23,7 +24,6 @@ import net.minecraft.world.level.Level; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; #else -import net.minecraft.client.Minecraft; import net.minecraft.world.level.Level; import net.minecraft.core.BlockPos; import net.minecraft.core.registries.Registries; @@ -297,9 +297,7 @@ public class BlockStateWrapper implements IBlockStateWrapper { #if !(MC_1_16_5 || MC_1_17_1) - // use the given level if possible, otherwise try using the currently loaded one - Level level = (levelWrapper != null ? (Level)levelWrapper.getWrappedMcObject() : null); - level = (level == null ? Minecraft.getInstance().level : level); + Level level = (Level)Objects.requireNonNull(levelWrapper.getWrappedMcObject()); #endif Block block; diff --git a/coreSubProjects b/coreSubProjects index 517925a20..51ad90120 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 517925a20705d54771a4285331afedee070f49c7 +Subproject commit 51ad9012069b3741468f9359a3b251712a5595b5 diff --git a/fabric/build.gradle b/fabric/build.gradle index 824cedccd..0f150cbff 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -12,9 +12,6 @@ loom { setConfigName("Fabric Client") ideConfigGenerated(false) runDir("run/client") -<<<<<<< Updated upstream -======= ->>>>>>> Stashed changes } server { server()