This crate lets you read minetest worlds in a low-level way.
As this crate returns async-std based futures, you have to specify that along the dependencies:
toml
[dependencies]
minetestworld = "0.4"
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:?}"); } }); } ```
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.4", 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.