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.5"

Example

Read

```rust use anvil_region::provider::{FolderRegionProvider, RegionProvider};

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

let chunkx = 4; let chunkz = 2;

let regionx = chunkx >> 31; let regionz = chunkz >> 31;

let regionchunkx = (chunkx & 31) as u8; let regionchunkz = (chunkz & 31) as u8;

let mut region = provider.getregion(regionx, region_z).unwrap();

let chunkcompoundtag = region.readchunk(regionchunkx, regionchunkz).unwrap(); let levelcompoundtag = chunkcompoundtag.getcompound_tag("Level").unwrap();

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

Write

```rust use anvil_region::provider::{FolderRegionProvider, RegionProvider}; use nbt::CompoundTag;

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

let chunkx = 31; let chunkz = 16;

let regionx = chunkx >> 31; let regionz = chunkz >> 31;

let regionchunkx = (chunkx & 31) as u8; let regionchunkz = (chunkz & 31) as u8;

let mut region = provider.getregion(regionx, region_z).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(regionchunkx, regionchunkz, chunkcompound_tag); ```