Implemented untested FullDataType serialize & deserialize
This commit is contained in:
@@ -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
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user