| 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> |
| | | | |