Crate rustmatica
source ·Expand description
§rustmatica
A rust crate for working with Minecraft litematica files.
§Overview
The two main types of this crate are Litematic and Region. See their
documentation for more info.
The
examples directory
contains a few basic examples for how to use this crate.
§Usage with mcdata
rustmatica is tightly coupled with mcdata and makes use of its traits for
block states, entities, and block entities. By default, schematics will use
mcdatas “generic” types which store most of their data using
fastnbt::Values.
use rustmatica::Litematic;
use mcdata::util::UVec3;
// type must be declared explicitly for Rust to use the default generics
let schem: Litematic = Litematic::read_file("test_files/axolotl.litematic")?;
// block has type `mcdata::GenericBlockState`
let block = schem.regions[0].get_block(UVec3::new(1, 0, 1));
assert_eq!(block.name, "minecraft:water");
// properties aren't typed
assert_eq!(block.properties["level"], "0");But mcdata also offers more concrete types when enabling certain cargo
features. To use these, add a custom dependency on mcdata similar to this:
mcdata = { version = "<version>", features = ["latest", "block-states"] }
Then you can use the mcdata::latest::BlockState type instead:
use rustmatica::Litematic;
use mcdata::{util::UVec3, latest::BlockState};
use bounded_integer::BoundedU8;
let schem: Litematic<BlockState> = Litematic::read_file("test_files/axolotl.litematic")?;
// block has type `BlockState`
let block = schem.regions[0].get_block(UVec3::new(1, 0, 1));
assert_eq!(block, &BlockState::Water {
level: BoundedU8::new(0).unwrap(),
});§Features
chrono(enabled by default) — Usechronotypes for timestamps.docs— Enable this when building the docs
Structs§
- An iterator over all blocks in a
Region. - A litematica schematic.
- A single region of a litematica schematic.
Enums§
- The rustmatica error type.