Crate zuri_nbt

Crate zuri_nbt 

Source
Expand description

§Overview

Read and write NBT data.

Named Binary Tag (NBT) is a structured binary format used throughout Minecraft for a multitude of things. This crate mainly focuses on Minecraft: Bedrock Edition, and supports the little endian and network little endian encoding. Big endian, which is more commonly used in Minecraft: Java Edition, is also supported, however.

§Feature flags

  • serde - Allows rust types to be serialized and deserialized into NBT using serde.

§Examples

NBT data can be constructed and written as follows:

use zuri_nbt::encoding::LittleEndian;
use zuri_nbt::NBTTag;
use zuri_nbt::tag;

let nbt = tag::Compound::builder()
  .with_string("name", "Zuri")
  .with_int("age", 18)
  .build();

let mut buf = Vec::new();
nbt.write(&mut buf, LittleEndian).expect("Something went wrong while writing nbt");

Reading NBT data can be done as follows:

use zuri_nbt::encoding::LittleEndian;
use zuri_nbt::NBTTag;

let mut bytes: &[u8] = &[
   0x08, 0x00, 0x00, 0x0c,
   0x00, 0x48, 0x65, 0x6c,
   0x6c, 0x6f, 0x20, 0x57,
   0x6f, 0x72, 0x6c, 0x64,
   0x21, 0x00, 0x00, 0x00,
];

let value = NBTTag::read(bytes, LittleEndian).expect("Something went wrong while reading nbt");

assert_eq!(value, NBTTag::String("Hello World!".to_string().into()));

Modules§

encoding
Contains all the standard NBT encodings.
err
See [NbtError].
reader
See Reader.
tag
Contains all NBT tags.
view
The View struct is a utility for easily traversing and reading NBT data in an efficient manner and without too much boilerplate.
writer
See Writer.

Enums§

NBTTag
An enum representing all possible NBT data.
NBTTagType
An enum representing all possible NBT tag types.