Fix loading ClientLevel on server

This commit is contained in:
s809
2023-08-27 18:42:07 +05:00
parent e9a13dffb8
commit 40cd6c1386
5 changed files with 8 additions and 23 deletions
@@ -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!
@@ -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
@@ -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;