#region #file-format #minecraft #io #anvil

anvil-region

区块文件格式存储

11 个版本 (7 个重大更新)

0.8.1 2022年1月15日
0.8.0 2021年3月21日
0.7.0 2021年1月31日
0.4.0 2020年10月3日
0.3.0 2019年10月27日

#1667 in 编码

MIT 许可证

1MB
733 代码行数(不含注释)

anvil-region

crates.io Build Status codecov

区块文件格式存储

使用方法

将以下内容添加到您的 Cargo.toml

[dependencies]
anvil-region = "0.8"

示例

读取

use anvil_region::provider::{FolderRegionProvider, RegionProvider};
use anvil_region::position::{RegionPosition, RegionChunkPosition};

let provider = FolderRegionProvider::new("test/region");

let region_position = RegionPosition::from_chunk_position(4, 2);
let region_chunk_position = RegionChunkPosition::from_chunk_position(4, 2);

let mut region = provider.get_region(region_position).unwrap();

let chunk_compound_tag = region.read_chunk(region_chunk_position).unwrap();
let level_compound_tag = chunk_compound_tag.get_compound_tag("Level").unwrap();

assert_eq!(level_compound_tag.get_i32("xPos").unwrap(), 4);
assert_eq!(level_compound_tag.get_i32("zPos").unwrap(), 2);

写入

use anvil_region::provider::{FolderRegionProvider, RegionProvider};
use nbt::CompoundTag;
use anvil_region::position::{RegionPosition, RegionChunkPosition};

let provider = FolderRegionProvider::new("test/region");

let region_position = RegionPosition::from_chunk_position(31, 16);
let region_chunk_position = RegionChunkPosition::from_chunk_position(31, 16);

let mut region = provider.get_region(region_position).unwrap();

let mut chunk_compound_tag = CompoundTag::new();
let mut level_compound_tag = CompoundTag::new();

// To simplify example we add only coordinates.
// Full list of required tags https://minecraft.gamepedia.com/Chunk_format.
level_compound_tag.insert_i32("xPos", 31);
level_compound_tag.insert_i32("zPos", 16);

chunk_compound_tag.insert_compound_tag("Level", level_compound_tag);

region.write_chunk(region_chunk_position, chunk_compound_tag);

依赖项