Changes

14 bytes added ,  18:45, 10 January 2024
m
Line 5: Line 5:  
== Serialization and Deserialization ==
 
== Serialization and Deserialization ==
   −
The primary use for Codecs is to serialize java objects to some serialized type, such as a JsonElement or a Tag, and to deserialize an serialized object back to its proper java type. This is accomplished with <code>Codec#encodeStart</code> and <code>Codec#parse</code>, respectively. Given a Codec<SomeJavaType> and a DynamicOps<SomeSerializedType>, we can convert instances of SomeJavaType to instances of SomeSerializedType and back.
+
The primary use for Codecs is to serialize java objects to some serialized type, such as a JsonElement or a Tag, and to deserialize a serialized object back to its proper java type. This is accomplished with <code>Codec#encodeStart</code> and <code>Codec#parse</code>, respectively. Given a Codec<SomeJavaType> and a DynamicOps<SomeSerializedType>, we can convert instances of SomeJavaType to instances of SomeSerializedType and back.
    
Each of these methods take a [[DynamicOps]] instance and an instance of the object we are serializing or deserializing, and returns a DataResult:
 
Each of these methods take a [[DynamicOps]] instance and an instance of the object we are serializing or deserializing, and returns a DataResult:
Line 18: Line 18:     
// deserialize some Tag instance back to a proper java object
 
// deserialize some Tag instance back to a proper java object
DataResult<SomeJavaType> result = someCodec.parse(NBTOps.INSTANCE, someTag );
+
DataResult<SomeJavaType> result = someCodec.parse(NBTOps.INSTANCE, someTag);
    
// serialize some java object to a JsonElement
 
// serialize some java object to a JsonElement
Line 92: Line 92:  
As previously mentioned, we can use <code>Codec.INT</code> for the integer codec, and <code>Registry.ITEM</code> for the Item codec. We don't have a builtin codec for list-of-blockpos, but we can use BlockPos.CODEC to create one.
 
As previously mentioned, we can use <code>Codec.INT</code> for the integer codec, and <code>Registry.ITEM</code> for the Item codec. We don't have a builtin codec for list-of-blockpos, but we can use BlockPos.CODEC to create one.
   −
== Lists ==
+
==Lists==
 
The <code>Codec#listOf</code> instance method can be used to generate a codec for a List from an existing codec:
 
The <code>Codec#listOf</code> instance method can be used to generate a codec for a List from an existing codec:
    
<syntaxhighlight lang="java">
 
<syntaxhighlight lang="java">
 
// BlockPos.CODEC is a Codec<BlockPos>
 
// BlockPos.CODEC is a Codec<BlockPos>
Codec<List<BlockPos>> = BlockPos.CODEC.listOf();
+
Codec<List<BlockPos>> blockPosListCodec = BlockPos.CODEC.listOf();
 
</syntaxhighlight>
 
</syntaxhighlight>