Expand description

A library for encoding and decoding Minecraft’s Named Binary Tag (NBT) format.

Examples

Encode NBT data to its binary form. We are using the compound! macro to conveniently construct Compound values.

use valence_nbt::{compound, to_binary_writer, List};

let c = compound! {
    "byte" => 5_i8,
    "string" => "hello",
    "list_of_float" => List::Float(vec![
        3.1415,
        2.7182,
        1.4142
    ]),
};

let mut buf = Vec::new();

to_binary_writer(&mut buf, &c, "").unwrap();

Decode NBT data from its binary form.

use valence_nbt::{compound, from_binary_slice};

let some_bytes = [10, 0, 0, 3, 0, 3, 105, 110, 116, 0, 0, 222, 173, 0];

let expected_value = compound! {
    "int" => 0xdead
};

let (nbt, root_name) = from_binary_slice(&mut some_bytes.as_slice()).unwrap();

assert_eq!(nbt, expected_value);
assert_eq!(root_name, "");

Features

  • preserve_order: Causes the order of fields in Compounds to be preserved during insertion and deletion at a slight cost to performance. The iterators on Compound can then implement DoubleEndedIterator.

Re-exports

pub use compound::Compound;
pub use value::List;
pub use value::Value;

Modules

Macros

A convenience macro for constructing Compounds.

Structs

Errors that can occur when encoding or decoding.

Functions

Decodes uncompressed NBT binary data from the provided slice.
Encodes uncompressed NBT binary data to the provided writer.