diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/WrapperFactory.java b/common/src/main/java/com/seibel/lod/common/wrappers/WrapperFactory.java index 14a654d2a..f28ae5175 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/WrapperFactory.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/WrapperFactory.java @@ -29,6 +29,8 @@ import com.seibel.lod.core.wrapperInterfaces.world.IBiomeWrapper; import com.seibel.lod.core.wrapperInterfaces.worldGeneration.AbstractBatchGenerationEnvionmentWrapper; import com.seibel.lod.common.wrappers.worldGeneration.BatchGenerationEnvironment; +import java.io.IOException; + /** * This handles creating abstract wrapper objects. * @@ -52,12 +54,12 @@ public class WrapperFactory implements IWrapperFactory } @Override - public IBiomeWrapper deserializeBiomeWrapper(String str) { + public IBiomeWrapper deserializeBiomeWrapper(String str) throws IOException { return BiomeWrapper.deserialize(str); } @Override - public IBlockStateWrapper deserializeBlockStateWrapper(String str) { + public IBlockStateWrapper deserializeBlockStateWrapper(String str) throws IOException { return BlockStateWrapper.deserialize(str); } diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/block/BiomeWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/block/BiomeWrapper.java index 78ef6f984..1f317b06a 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/block/BiomeWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/block/BiomeWrapper.java @@ -19,6 +19,7 @@ package com.seibel.lod.common.wrappers.block; +import java.io.IOException; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -27,18 +28,19 @@ import java.util.function.Function; import com.google.common.collect.ImmutableBiMap; import com.google.gson.JsonParser; import com.mojang.serialization.JsonOps; +import com.mojang.serialization.Lifecycle; import com.seibel.lod.core.wrapperInterfaces.world.IBiomeWrapper; +import net.minecraft.client.Minecraft; import net.minecraft.core.Holder; -import net.minecraft.data.BuiltinRegistries; #if POST_MC_1_19 import net.minecraft.data.worldgen.biome.EndBiomes; import net.minecraft.data.worldgen.biome.NetherBiomes; #endif -import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.RegistryFixedCodec; +import net.minecraft.resources.RegistryOps; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.Biomes; -import net.minecraft.world.level.block.Blocks; //This class wraps the minecraft BlockPos.Mutable (and BlockPos) class @@ -74,7 +76,10 @@ public class BiomeWrapper implements IBiomeWrapper @Override public String serialize() { - return Biome.CODEC.encodeStart(JsonOps.COMPRESSED, biome).get().orThrow().toString(); + //FIXME: Pass in a level obj + String data = Biome.CODEC.encodeStart(RegistryOps.create(JsonOps.INSTANCE, Minecraft.getInstance().level.registryAccess()), + biome).get().orThrow().toString(); + return data; } @Override @@ -90,9 +95,14 @@ public class BiomeWrapper implements IBiomeWrapper return Objects.hash(biome); } - public static IBiomeWrapper deserialize(String str) { - #if PRE_MC_1_18_2 Biome #else Holder #endif - biome = Biome.CODEC.decode(JsonOps.COMPRESSED, JsonParser.parseString(str)).get().orThrow().getFirst(); - return getBiomeWrapper(biome); + public static IBiomeWrapper deserialize(String str) throws IOException { + try { + #if PRE_MC_1_18_2 Biome #else + Holder #endif + biome = Biome.CODEC.decode(JsonOps.INSTANCE, JsonParser.parseString(str)).get().orThrow().getFirst(); + return getBiomeWrapper(biome); + } catch (Exception e) { + throw new IOException("Failed to deserialize biome wrapper", e); + } } } diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/block/BlockStateWrapper.java b/common/src/main/java/com/seibel/lod/common/wrappers/block/BlockStateWrapper.java index 1a0aca554..7802e7e9c 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/block/BlockStateWrapper.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/block/BlockStateWrapper.java @@ -7,6 +7,7 @@ import com.seibel.lod.core.wrapperInterfaces.block.IBlockStateWrapper; import net.minecraft.world.level.block.state.BlockState; import org.apache.logging.log4j.Logger; +import java.io.IOException; import java.util.HashMap; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; @@ -39,13 +40,17 @@ public class BlockStateWrapper implements IBlockStateWrapper { return BlockState.CODEC.encodeStart(JsonOps.COMPRESSED, blockState).get().orThrow().toString(); } - public static BlockStateWrapper deserialize(String str) { + public static BlockStateWrapper deserialize(String str) throws IOException { if (str.equals("AIR")) { return AIR; } - return new BlockStateWrapper( - BlockState.CODEC.decode(JsonOps.COMPRESSED, JsonParser.parseString(str)).get().orThrow().getFirst() - ); + try { + return new BlockStateWrapper( + BlockState.CODEC.decode(JsonOps.COMPRESSED, JsonParser.parseString(str)).get().orThrow().getFirst() + ); + } catch (Exception e) { + throw new IOException("Failed to deserialize BlockStateWrapper", e); + } } @Override diff --git a/core b/core index f6e5bdbd2..d58cd204c 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit f6e5bdbd2f95efce8d8138010329d29a3fc3794c +Subproject commit d58cd204cc9c94866faff851930587dcb11c8e4e diff --git a/gradle.properties b/gradle.properties index 1e74d6ccc..5b4bb7f6b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,7 +20,7 @@ toml_version=3.6.5 json_version=1.1.1 flatlaf_version=2.3 svgSalamander_version=1.1.3 -manifold_version=2022.1.18 +manifold_version=2022.1.19 mcVersions=1.16.5,1.17.1,1.18.1,1.18.2,1.19 # Internal Properties (These are set at runtime)