Implemented untested FullDataType serialize & deserialize

This commit is contained in:
TomTheFurry
2022-08-06 00:08:16 +08:00
parent 00e831c8f3
commit 427b54b1eb
5 changed files with 33 additions and 16 deletions
@@ -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);
}
@@ -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<Biome> #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<Biome> #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);
}
}
}
@@ -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
+1 -1
Submodule core updated: f6e5bdbd2f...d58cd204cc
+1 -1
View File
@@ -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)