minetestworld

This crate lets you read minetest worlds in a low-level way.

Build Crates.io Documentation dependency status

Usage

As this crate returns async-std based futures, you have to specify that along the dependencies: toml [dependencies] minetestworld = "0.5" async-std = "1"

Here is an example that reads all nodes of a specific map block: ```rs use minetestworld::{World, Position}; use async_std::task;

fn main() { let blockpos = Position { x: -13, y: -8, z: 2, }; task::blockon(async { let world = World::new("TestWorld"); let mapdata = world.getmapdata().await.unwrap(); for (pos, node) in mapdata.itermapblock_nodes(blockpos).await.unwrap() { println!("{pos:?}, {node:?}"); } }); } ```

Selectable backends

The Cargo features sqlite, redis, and postgres enable the respective map data backend. They are enabled by default and can be selected individually: toml [dependencies] minetestworld = { version = "0.5", default-features = false, features = [ "sqlite" ] }

This crate only compiles if at least one backend is enabled, because it becomes pointless without.

See minetest-worldmapper for a real-world example.