diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/KeyedClientLevelManager.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/KeyedClientLevelManager.java index cb78384f6..1198885cd 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/KeyedClientLevelManager.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/KeyedClientLevelManager.java @@ -38,7 +38,7 @@ public class KeyedClientLevelManager implements IKeyedClientLevelManager @Override public IServerKeyedClientLevel setServerKeyedLevel(IClientLevelWrapper clientLevel, String levelKey) { - IServerKeyedClientLevel keyedLevel = new ServerKeyedClientLevel((ClientLevel) clientLevel.getWrappedMcObject(), levelKey); + IServerKeyedClientLevel keyedLevel = new ServerKeyedClientLevelWrapper((ClientLevel) clientLevel.getWrappedMcObject(), levelKey); this.serverKeyedLevel = keyedLevel; this.enabled = true; return keyedLevel; diff --git a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerKeyedClientLevel.java b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerKeyedClientLevelWrapper.java similarity index 65% rename from common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerKeyedClientLevel.java rename to common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerKeyedClientLevelWrapper.java index 811762b26..a6d15657f 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerKeyedClientLevel.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/wrappers/level/ServerKeyedClientLevelWrapper.java @@ -2,18 +2,20 @@ package com.seibel.distanthorizons.common.wrappers.level; import com.seibel.distanthorizons.common.wrappers.world.ClientLevelWrapper; import com.seibel.distanthorizons.core.level.IServerKeyedClientLevel; -import com.seibel.distanthorizons.core.wrapperInterfaces.world.ILevelWrapper; -import com.seibel.distanthorizons.coreapi.util.StringUtil; import net.minecraft.client.multiplayer.ClientLevel; -public class ServerKeyedClientLevel extends ClientLevelWrapper implements IServerKeyedClientLevel +public class ServerKeyedClientLevelWrapper extends ClientLevelWrapper implements IServerKeyedClientLevel { /** A unique identifier (generally the level's name) for differentiating multiverse levels */ private final String serverLevelKey; - public ServerKeyedClientLevel(ClientLevel level, String serverLevelKey) + //=============// + // constructor // + //=============// + + public ServerKeyedClientLevelWrapper(ClientLevel level, String serverLevelKey) { super(level); this.serverLevelKey = serverLevelKey; @@ -21,10 +23,16 @@ public class ServerKeyedClientLevel extends ClientLevelWrapper implements IServe + //======================// + // level identification // + //======================// + @Override public String getServerLevelKey() { return this.serverLevelKey; } @Override public String getDhIdentifier() { return this.getServerLevelKey(); } + + } 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 4b0e7f85b..095e988a3 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 @@ -73,9 +73,6 @@ public class ClientLevelWrapper implements IClientLevelWrapper private BlockStateWrapper dirtBlockWrapper; - private BlockStateWrapper waterBlockWrapper; - private BiomeWrapper plainsBiomeWrapper; - @Deprecated // TODO circular references are bad private IDhLevel parentDhLevel; @@ -168,13 +165,17 @@ public class ClientLevelWrapper implements IClientLevelWrapper { try { + // this method only makes sense if we are running a single-player server + if (MINECRAFT.getSingleplayerServer() == null) + { + return null; + } + Iterable serverLevels = MINECRAFT.getSingleplayerServer().getAllLevels(); // attempt to find the server level with the same dimension type - // TODO this assumes only one level per dimension type, the SubDimensionLevelMatcher will need to be added for supporting multiple levels per dimension + // Note: this assumes only one level per dimension type, multiverse servers may not behave correctly ServerLevelWrapper foundLevelWrapper = null; - - // TODO: Surely there is a more efficient way to write this code for (ServerLevel serverLevel : serverLevels) { if (serverLevel.dimension() == this.level.dimension()) @@ -232,49 +233,9 @@ public class ClientLevelWrapper implements IClientLevelWrapper return this.getBlockColor(DhBlockPos.ZERO, BiomeWrapper.EMPTY_WRAPPER, null, this.dirtBlockWrapper); } - @Override - public int getWaterBlockColor() - { - if (this.waterBlockWrapper == null) - { - try - { - this.waterBlockWrapper = (BlockStateWrapper) BlockStateWrapper.deserialize(BlockStateWrapper.WATER_RESOURCE_LOCATION_STRING, this); - } - catch (IOException e) - { - // shouldn't happen, but just in case - LOGGER.warn("Unable to get water color with resource location ["+BlockStateWrapper.WATER_RESOURCE_LOCATION_STRING+"] with level ["+this+"].", e); - return -1; - } - } - - return this.getBlockColor(DhBlockPos.ZERO, BiomeWrapper.EMPTY_WRAPPER, null, this.waterBlockWrapper); - } - @Override public void clearBlockColorCache() { this.blockCache.clear(); } - @Override - public IBiomeWrapper getPlainsBiomeWrapper() - { - if (this.plainsBiomeWrapper == null) - { - try - { - this.plainsBiomeWrapper = (BiomeWrapper) BiomeWrapper.deserialize(BiomeWrapper.PLAINS_RESOURCE_LOCATION_STRING, this); - } - catch (IOException e) - { - // shouldn't happen, but just in case - LOGGER.warn("Unable to get planes biome with resource location ["+BiomeWrapper.PLAINS_RESOURCE_LOCATION_STRING+"] with level ["+this+"].", e); - return null; - } - } - - return this.plainsBiomeWrapper; - } - @Override public IDimensionTypeWrapper getDimensionType() { return DimensionTypeWrapper.getDimensionTypeWrapper(this.level.dimensionType()); } @@ -331,20 +292,6 @@ public class ClientLevelWrapper implements IClientLevelWrapper return new ChunkWrapper(chunk, this); } - @Override - public boolean hasChunkLoaded(int chunkX, int chunkZ) - { - ChunkSource source = this.level.getChunkSource(); - return source.hasChunk(chunkX, chunkZ); - } - - @Override - public IBlockStateWrapper getBlockState(DhBlockPos pos) - { return BlockStateWrapper.fromBlockState(this.level.getBlockState(McObjectConverter.Convert(pos)), this); } - - @Override - public IBiomeWrapper getBiome(DhBlockPos pos) { return BiomeWrapper.getBiomeWrapper(this.level.getBiome(McObjectConverter.Convert(pos)), this); } - @Override public ClientLevel getWrappedMcObject() { return this.level; } 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 3576ffbd5..6f330fea0 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 @@ -180,26 +180,6 @@ public class ServerLevelWrapper implements IServerLevelWrapper return new ChunkWrapper(chunk, this); } - @Override - public boolean hasChunkLoaded(int chunkX, int chunkZ) - { - // world.hasChunk(chunkX, chunkZ); THIS DOES NOT WORK FOR CLIENT LEVEL CAUSE MOJANG ALWAYS RETURN TRUE FOR THAT! - ChunkSource source = this.level.getChunkSource(); - return source.hasChunk(chunkX, chunkZ); - } - - @Override - public IBlockStateWrapper getBlockState(DhBlockPos pos) - { - return BlockStateWrapper.fromBlockState(this.level.getBlockState(McObjectConverter.Convert(pos)), this); - } - - @Override - public IBiomeWrapper getBiome(DhBlockPos pos) - { - return BiomeWrapper.getBiomeWrapper(this.level.getBiome(McObjectConverter.Convert(pos)), this); - } - @Override public ServerLevel getWrappedMcObject() { return this.level; } diff --git a/coreSubProjects b/coreSubProjects index 0902d3f0f..f4ab10140 160000 --- a/coreSubProjects +++ b/coreSubProjects @@ -1 +1 @@ -Subproject commit 0902d3f0f5ec44ff128d919576397159fa238589 +Subproject commit f4ab1014033b411774f99fcbdf850b03f776b50e