#minecraft #nbt #serde #litematic #litematica

rustmatica

用于读取、编辑和写入 Minecraft litematic 文件的 Rust 库

7 个版本 (4 个破坏性更新)

0.5.0 2024 年 5 月 12 日
0.4.0 2024 年 5 月 9 日
0.3.1 2024 年 5 月 8 日
0.2.0 2024 年 4 月 26 日
0.1.1 2023 年 3 月 3 日

#802 in 编码

每月 36 次下载

GPL-3.0-only

49KB
847

rustmatica

Crates.io

一个用于处理 Minecraft litematic 文件的 Rust 包。

概述

此包的两个主要类型是 LitematicRegion。请参阅它们的文档以获取更多信息。

examples 目录 包含一些基本示例,说明如何使用此包。

mcdata 一起使用

rustmaticamcdata 紧密耦合,并利用其 traits 来处理方块状态、实体和方块实体。默认情况下,蓝图将使用 mcdata 的 "通用" 类型,这些类型使用 fastnbt::Value 存储大部分数据。

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");
# Ok::<(), rustmatica::Error>(())

但是,当启用某些 cargo 功能时,mcdata 也提供更具体的数据类型。要使用这些类型,请添加一个类似于下面的自定义依赖项到 mcdata

mcdata = { version = "<version>", features = ["latest", "block-states"] }

然后您可以使用 mcdata::latest::BlockState 类型来代替

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(),
});
# Ok::<(), rustmatica::Error>(())

依赖项

~7MB
~121K SLoC