Arnis builds Minecraft worlds that mirror real-world locations. It pulls geospatial data from OpenStreetMap and combines it with elevation data to produce terrain, buildings, and roads that match an actual place, down to building footprints and topography. It's aimed at Minecraft players and mapmakers who want to recreate hometowns, cities, or landscapes without hand-placing blocks, and at developers interested in geospatial data processing written in Rust.
The tool ships as a desktop GUI app (built with Tauri) where you draw a bounding box on a map and click generate, or as a command-line binary for scripted/automated world generation. It supports Minecraft Java Edition (1.17+), Bedrock Edition, and Luanti (Minetest).
geo-terrain (buildings and roads on real elevation), geo-only (objects on flat ground), or terrain-only (elevation terrain without objects, skipping OSM and Overture fetches).nix run without a manual build step.Arnis fits players who want to recreate their hometown, a favorite city, or a natural landscape in Minecraft without manually placing thousands of blocks. It also works for educators building geography or urban-planning lessons in Minecraft, or for anyone running a server that benefits from recognizable real-world maps (the project has been referenced in flood-preparedness education research, for example).
It's a good fit if you're comfortable running a desktop app or compiling a Rust binary, and if you're generating areas at a scale the local Overpass/elevation data pipeline can realistically handle. For mobile generation or much larger map sizes, the README points to a separate browser-based tool (MapSmith) instead, since Arnis itself is a local desktop/CLI tool.
It's not the right choice if you need in-browser or mobile generation with no install, if you want fictional or non-real-world terrain, or if you need guaranteed block-perfect architectural replicas (accuracy depends on how detailed the underlying OSM data is for a given area).
Download a prebuilt binary from the latest release for your platform, or build from source with Rust installed:
# GUI build
cargo run --release
# Command-line build, generating a single world from a bounding box
cargo run --release --no-default-features -- --output-dir="C:/YOUR_PATH/.minecraft/saves/worldname" --bbox="min_lat,min_lng,max_lat,max_lng"
To generate into a persistent world that later runs extend:
cargo run --release --no-default-features -- --one-world --output-dir="C:/YOUR_PATH/.minecraft/saves" --world-name="My City" --bbox="min_lat,min_lng,max_lat,max_lng"
Control what gets generated with --mode, using geo-terrain (default, buildings/roads on real terrain), geo-only (flat ground), or terrain-only (elevation only, no OSM/Overture fetch).
If you use Nix, run it directly without building:
nix run github:louis-e/arnis -- --output-dir=YOUR_PATH/.minecraft/saves/worldname --bbox="min_lat,min_lng,max_lat,max_lng"
In the GUI, use the rectangle tool to select an area on the map, pick your Minecraft world folder, adjust generation settings if needed, and click Start Generation.