Handle missing/corrupted block/biome ID's in the full data
This commit is contained in:
+2
-2
@@ -545,8 +545,8 @@ public class FullDataPointIdMap
|
||||
throw new DataCorruptedException("Failed to deserialize BiomeBlockStateEntry");
|
||||
}
|
||||
|
||||
IBiomeWrapper biome = WRAPPER_FACTORY.deserializeBiomeWrapper(stringArray[0], levelWrapper);
|
||||
IBlockStateWrapper blockState = WRAPPER_FACTORY.deserializeBlockStateWrapper(stringArray[1], levelWrapper);
|
||||
IBiomeWrapper biome = WRAPPER_FACTORY.deserializeBiomeWrapperOrGetDefault(stringArray[0], levelWrapper);
|
||||
IBlockStateWrapper blockState = WRAPPER_FACTORY.deserializeBlockStateWrapperOrGetDefault(stringArray[1], levelWrapper);
|
||||
return Entry.getEntry(biome, blockState);
|
||||
}
|
||||
|
||||
|
||||
+34
@@ -40,9 +40,43 @@ import java.util.HashSet;
|
||||
public interface IWrapperFactory extends IDhApiWrapperFactory, IBindable
|
||||
{
|
||||
AbstractBatchGenerationEnvironmentWrapper createBatchGenerator(IDhLevel targetLevel);
|
||||
|
||||
IBiomeWrapper deserializeBiomeWrapper(String str, ILevelWrapper levelWrapper) throws IOException;
|
||||
IBiomeWrapper getPlainsBiomeWrapper(ILevelWrapper levelWrapper); // TODO it would be nice to remove the level wrapper if possible to put this in line with getAirBlockStateWrapper() but it isn't necessary
|
||||
default IBiomeWrapper deserializeBiomeWrapperOrGetDefault(String str, ILevelWrapper levelWrapper)
|
||||
{
|
||||
IBiomeWrapper biome;
|
||||
try
|
||||
{
|
||||
biome = this.deserializeBiomeWrapper(str, levelWrapper);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
biome = this.getPlainsBiomeWrapper(levelWrapper);
|
||||
}
|
||||
|
||||
return biome;
|
||||
}
|
||||
|
||||
|
||||
IBlockStateWrapper deserializeBlockStateWrapper(String str, ILevelWrapper levelWrapper) throws IOException;
|
||||
IBlockStateWrapper getAirBlockStateWrapper();
|
||||
default IBlockStateWrapper deserializeBlockStateWrapperOrGetDefault(String str, ILevelWrapper levelWrapper)
|
||||
{
|
||||
IBlockStateWrapper blockState;
|
||||
try
|
||||
{
|
||||
blockState = this.deserializeBlockStateWrapper(str, levelWrapper);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
blockState = this.getAirBlockStateWrapper();
|
||||
}
|
||||
|
||||
return blockState;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the set of {@link IBlockStateWrapper}'s that shouldn't be rendered. <br>
|
||||
* Generally this contains blocks like: air, barriers, light blocks, etc.
|
||||
|
||||
Reference in New Issue
Block a user