#nbt #minecraft #bedrock #serialization #serde #binary-format #file-format

bedrock-hematite-nbt

A Minecraft Bedrock compatible fork of hematite-nbt, published to support other crates. A full-featured library for working with Minecraft's Named Binary Tag (NBT) file format, including Serde support.

1 unstable release

Uses old Rust 2015

0.4.2 Feb 8, 2023

#1764 in Encoding


Used in bedrock-material-list

MIT license

81KB
2K SLoC

hematite_nbt hematite_nbt at crates.io hematite_nbt at docs.rs Build Status

This repository contains the Hematite project's standalone nbt crate for working with Minecraft's Named Binary Tag (NBT) format.

This repository is a fork of hematite-nbt, implementing ocecaco's bedrock compatible fork + additional patches necessary to get the library working with serde ^1, and a few other minor bug tweaks.

This crate is published to crates.io under bedrock-hematite-nbt

This is not the only NBT-related crate available, but it has some notable features:

  • Full support for serializing and deserializing types via Serde. This means that you can read and write the NBT binary format of any struct annotated with the standard #[derive(Serialize, Deserialize)] traits (provided it actually has a valid NBT representation).

  • An API that attempts to differentiate between complete and partial NBT objects via nbt::Blob and nbt::Value. Only complete objects can be serialized.

  • Support for the TAG_Long_Array data introduced in Minecraft 1.12.

  • Support for the modified UTF-8 encoding used by the vanilla Minecraft client.

License

Licensed under the terms of the MIT license.

Dependencies

~1–2MB
~42K SLoC