Crate rustmatica

source ·
Expand description

§rustmatica

Crates.io

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) — Use chrono types for timestamps.
  • image (enabled by default) — Use the image crate for preview images.
  • docs — Enable this when building the docs

Structs§

Enums§

  • The rustmatica error type.

Type Aliases§