anvil-region

crates.io Build Status codecov

Region file format storage for chunks

Usage

Add this to your Cargo.toml:

toml [dependencies] anvil-region = "0.7"

Example

Read

```rust use anvilregion::provider::{FolderRegionProvider, RegionProvider}; use anvilregion::position::{RegionPosition, RegionChunkPosition};

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

let regionposition = RegionPosition::fromchunkposition(4, 2); let regionchunkposition = RegionChunkPosition::fromchunk_position(4, 2);

let mut region = provider.getregion(regionposition).unwrap();

let chunkcompoundtag = region.readchunk(regionchunkposition).unwrap(); let levelcompoundtag = chunkcompoundtag.getcompound_tag("Level").unwrap();

asserteq!(levelcompoundtag.geti32("xPos").unwrap(), 4); asserteq!(levelcompoundtag.geti32("zPos").unwrap(), 2); ```

Write

```rust use anvilregion::provider::{FolderRegionProvider, RegionProvider}; use nbt::CompoundTag; use anvilregion::position::{RegionPosition, RegionChunkPosition};

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

let regionposition = RegionPosition::fromchunkposition(31, 16); let regionchunkposition = RegionChunkPosition::fromchunk_position(31, 16);

let mut region = provider.getregion(regionposition).unwrap();

let mut chunkcompoundtag = CompoundTag::new(); let mut levelcompoundtag = CompoundTag::new();

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

chunkcompoundtag.insertcompoundtag("Level", levelcompoundtag);

region.writechunk(regionchunkposition, chunkcompound_tag); ```