Arnis: turning OpenStreetMap data into Minecraft worlds
Generate any location from the real world in Minecraft with a high level of detail.
At a glance
- What is it?
- Arnis is a Rust desktop tool that reads OpenStreetMap geometry and elevation data and writes a Minecraft Java, Bedrock or Luanti world folder. It is quick to try, but the documentation lives in the wiki and the CLI surface is small.
- Who is it for?
- Arnis fits players and researchers who want a real place reproduced in Minecraft without hand-building it, and who are comfortable reading the GitHub Wiki when the README stops short. It is the wrong tool if you need a headless generation service or a documented API contract, because the README documents a CLI and a GUI and nothing about embedding the generator.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Rust, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The problem Arnis solves for Minecraft builders
Hand-building a real town in Minecraft is a surveying job disguised as a hobby. You measure streets, guess building footprints, and invent terrain heights. Arnis removes that step by reading OpenStreetMap and elevation data and writing the result directly into a world folder. The README describes the output as "complex and accurate Minecraft Java Edition (1.17+), Bedrock Edition, and Luanti (Minetest) worlds that reflect real-world geography, topography, and architecture".
The audience is narrow and specific. It is for players who want their hometown or a city they know, for teachers building a recognizable local map, and for anyone doing procedural generation experiments where the source data is real geography rather than noise. It is not aimed at people who want a Minecraft mod that streams terrain while you play. Arnis runs before you launch the game and produces a save directory; the game then loads that directory like any other world.
The repository topics list minecraft, minecraft-world-generator, openstreetmap, osm, overpass-turbo, procedural-generation, rust and tauri. That combination tells you most of the architecture before you read a line of source: a Rust core, a Tauri shell for the GUI, and Overpass as the query endpoint for OSM data.
How the generation pipeline works
The README states that "the algorithm processes geospatial data from OpenStreetMap as well as elevation data". The Cargo.toml dependency list fills in the mechanics. reqwest with blocking, json and query features handles HTTP calls, which is consistent with querying Overpass. The parquet crate with snap and zstd features points at columnar elevation datasets, and the README links an AWS public sector blog post titled "Building realistic Minecraft worlds with Open Data on AWS: How Arnis uses elevation datasets at scale". The geo crate supplies geometry types, and dda-voxelize, pulled from a pinned git revision, does voxel rasterization. fastanvil and fastnbt write the region and NBT files that make up a Minecraft save.
The README also names a mode switch that mirrors the GUI dropdown. In the default geo-terrain mode you get "buildings, roads and other OSM objects on real elevation terrain". In geo-only you get OSM objects on flat ground. In terrain-only you get elevation with no objects, and the README notes that this mode "skips the OpenStreetMap query and the Overture fetch entirely, so --overture has no effect". That last clause is the most useful sentence in the README for anyone reasoning about cost: terrain-only never touches the network for map data.
Rayon and indicatif in the dependency list suggest parallel processing with a progress bar, which matches the GUI screenshot showing a generation in progress. The project lists modularity and performance optimization as key objectives, but the README does not publish generation timings, so treat any speed expectation as unverified until you run it on your own bounding box.
Installing Arnis and generating your first world
The README gives two routes. The first is to "download the latest release" from the GitHub releases page, which is the intended path for most users. The second is to compile it yourself, and the README supplies the commands.
For a GUI build, run the default feature set:
cargo run --releaseThat compiles with the gui feature, which Cargo.toml defines as pulling in tauri, tauri-plugin-log, tauri-plugin-shell, tokio, rfd and tauri-build. You should end up with the window shown in the README screenshot, with a map, a rectangle tool and a Start Generation button.
For a command line build, the README disables default features and passes an output directory and 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"The bounding box order is min_lat, min_lng, max_lat, max_lng. Point --output-dir at the saves folder of the Minecraft installation you will open, and use the world name you want to see in the launcher.
If you use Nix, the README offers a one-liner that runs the flake directly:
nix run github:louis-e/arnis -- --output-dir=YOUR_PATH/.minecraft/saves/worldname --bbox="min_lat,min_lng,max_lat,max_lng"The repository ships flake.nix and flake.lock at the top level, so the flake is part of the project rather than an external recipe.
The README documents a --mode flag whose values mirror the GUI's generation mode dropdown. The three values are geo-terrain (the default), geo-only and terrain-only, as listed in the README table.
After generation finishes, open Minecraft, select the world and check the spawn area. If the world does not appear, the most common cause is an output path that is not the saves directory Minecraft reads.
Where Arnis stops being the right tool
The README documents the CLI flags it uses in its own examples and little else. There is no reference table of every option, no description of error codes, and no statement about what happens when the Overpass query fails or times out. For a tool whose entire input is a remote API, that is a real gap: if Overpass is slow or rate-limits you, the README gives you nothing about retries or partial results.
Version support is another boundary. The README says Java Edition 1.17+, which means older worlds and older servers are out. If your group plays on a version below that, Arnis will not help.
Scale is the third constraint. The README points readers who want "mobile generation or larger map sizes" at MapSmith, a browser-based service on arnismc.com. That is an admission that the desktop tool has a practical ceiling on area, which is unsurprising when the input is a bounding box query against a public API. If you need a whole region rather than a neighborhood, the project itself directs you elsewhere.
Finally, Arnis is a save generator, not a plugin. It does not run inside a server, it does not update a world you are already playing in, and nothing in the README describes incremental regeneration of an existing save.
How Arnis differs from other Minecraft map generators
The obvious comparison is with WorldEdit and similar in-game building tools. Those operate on a world you already have, with schematics and brushes you place by hand or script. Arnis never touches the game; it writes region files from geospatial data before the game starts. The difference in workflow matters more than the difference in output: with WorldEdit you iterate inside the game, with Arnis you regenerate the folder and reload.
The closer comparison is with the browser-based MapSmith service that the README links for "mobile generation or larger map sizes". Both come from the same project page, but the split is clear: Arnis is the local, open source, Apache-2.0 tool you compile or download, while MapSmith is the hosted option for people who cannot or do not want to install anything. Choosing between them is a question of whether you need the source, offline generation, or a bigger area.
A third point of comparison is any pipeline you would build yourself on top of Overpass and a voxel library. Arnis has already made those choices, including the pinned dda-voxelize revision and the parquet elevation path. The trade-off is that you inherit its decisions about level of detail and object coverage, and the README does not document how to extend or replace the object mapping.
Maintenance, releases and what the Apache-2.0 licence means here
The repository is not archived and the last push was on 2026-09-21, so the project is being worked on. The release history supports that: v3.0.0 shipped on 2026-07-11, v3.1.0 on 2026-08-18, and v3.2.0 on 2026-09-09. Three minor releases in roughly two months, each with a name (Contour, Canopy, Horizon), suggests a steady cadence rather than long dormant stretches.
Upgrade cost is low for end users. You download a new release or rebuild from source; there is no server component, no database migration and no config file format described in the README that would need rewriting between versions. The CLI flags shown in the README are stable across the examples, though the README does not promise backward compatibility for flags between major versions.
The licence is Apache-2.0, and the README carries the standard notice text plus a copyright line for Louis Erbkamm covering 2022 to 2026. Apache-2.0 permits commercial use and modification and requires that you keep the licence and notice files. The repository includes both LICENSE and NOTICE at the top level. One thing worth checking before you redistribute anything: the Cargo.toml pins dda-voxelize to a specific git revision rather than a crates.io release, so its licence terms come from that repository, not from Arnis. That is a question for your own legal review, not something the README answers.
Editorial conclusion
Arnis fits players and researchers who want a real place reproduced in Minecraft without hand-building it, and who are comfortable reading the GitHub Wiki when the README stops short. It is the wrong tool if you need a headless generation service or a documented API contract, because the README documents a CLI and a GUI and nothing about embedding the generator. Before you rely on it, check that your target Minecraft version is 1.17 or newer, that your bounding box is small enough for the Overpass query to answer, and that the generated world lands in the correct saves directory by opening it once in the launcher. The last push to the repository was on 2026-09-21.
Frequently asked questions
What is Arnis and what is it for?
Arnis generates Minecraft Java Edition (1.17+), Bedrock Edition and Luanti worlds from real-world OpenStreetMap and elevation data, so a real location appears as terrain and buildings in the game. It runs as a desktop application with a map-based GUI or as a command line tool.
How do I install Arnis for Minecraft?
The README says to download the latest release from the GitHub releases page, or to compile it yourself. Compiling with cargo run --release builds the GUI, and cargo run --release --no-default-features builds the command line version.
How do I install Arnis on a Mac?
The README lists cross-platform support for Windows, macOS and Linux as a project objective, and the Nix command nix run github:louis-e/arnis works on systems with Nix installed. The README does not give macOS-specific install steps beyond that.
How do I use Arnis with Minecraft Java Edition?
Point --output-dir at your .minecraft/saves/worldname folder and pass a bounding box with --bbox in the order min_lat,min_lng,max_lat,max_lng. The README states the output targets Java Edition 1.17 and newer.
Can I use Arnis for free?
Yes. Arnis is free and open source under the Apache License 2.0, and the README describes it as a free and open source project. The README also warns that the GitHub page and arnismc.com are the only official project websites.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/louis-e-arnis)