Turn an OpenStreetMap selection into one seamless Minecraft world. Meld tiles the area, builds every tile in parallel, and melds them with no height cliffs and no seams. From a city block to a whole continent.
Windows · macOS · Linux
Meld is a real world Minecraft world generator. You draw an area on a map, pick a cell size, and Meld splits the selection into region aligned tiles, generates each tile in parallel with a custom Arnis fork, and merges every tile into one master world. Every seam lands on a Minecraft region boundary, so the join is exact and the surface is about 99 percent seamless. Cities, regions, whole continents, built as one world.
Meld is an orchestrator, not a new generator. It drives Arnis to build the blocks, then handles the hard part: tiling, a shared OSM fetch, one global elevation lock, and a region perfect merge. The win is scale and reliability on a single PC.
The headline is scale: build a whole city, country, or continent as one seamless world, with no
seams and no height cliffs at the joins. On the same area Meld runs about 2x faster than a single
Arnis pass, because it builds the tiles in parallel rather than one after another. The ceiling on
that speed is your CPU: the rule is to keep workers times threads at or under your cores, with RAM and
save-disk speed as secondary caps. Meld 1.1.0 also closes the reliability gaps that show up at large
scale: it repairs the elevation no-data holes that caused dark bands and in-game dips, smooths water
artifacts, removes duplicate block entities on the parallel path, and fixes the crashes that big
parallel runs could hit. 1.2.0 takes it offline and faster: bake a region's OSM once from local
.pbf files and generate with zero Overpass calls, skip the supplementary building fetch that
dominated per-cell time, reuse cached map tiles across overlapping selections, and fix the diagonal
water/sand wedges near cell edges. 1.3.0 makes it easy to drive, tunable while it runs, and
measurable: one guided rail, live mid-run tuning of workers/threads/CPU budget, and a benchmark
report (machine specs, CPU/RAM and activity graphs, a per-worker timeline, Save as PDF) written
into every world. Plus fast-first-build defaults (1:10 scale, buildings off), a readable scale, a free
1 to 64 cell size, and accurate CPU/RAM gauges. 1.4.0 makes the world feel alive and ownable: a
region-aware tree pack (1,959 hand-made models across 10 world regions by
paleozoey, placed by location with density-driven
groves, five toggleable size tiers, and montane/wetland remaps), terrain shaping (vertical
exaggeration to make mountains taller without widening the map, plus snow modes), and a Border &
zones server tool that turns a country into WorldGuard regions, point files and a ready Skript, then
trims the world to its border so it feels infinite but is bounded to that country.
New here? Read the docs or try the live preview, an interactive, simulated copy of the app.
Docs. The full guide lives at the docs hub. In this repo, the
docs/ folder holds the per-release deep dives (start with
docs/whats-new-1.3.0.mdx), and RELEASE-NOTES.md
has the highlights of each release.
| Feature | What it does |
|---|---|
| Region perfect merge | Every cell boundary is snapped to a Minecraft region edge, so tiles join exactly. About 99 percent seamless surface, no height cliffs. |
| Custom Arnis fork | Meld ships a fork of Arnis with a --download-only OSM mode and tile invariant rendering, so neighbouring cells agree on terrain and scatter. |
| Shared OSM prefetch | The selection's OpenStreetMap data is downloaded once and reused by every cell, so parallel runs never hit the Overpass rate limit. |
| Parallel workers | Builds many Arnis instances at once. One click Recommend tunes cell size and workers to your machine: CPU is the main limit (keep workers x threads at or under your cores), with RAM and save disk as secondary caps. |
| One elevation lock | A single global elevation range plus a tile invariant seed, so terrain height and building or scatter choices match on both sides of every border. |
| Region data packs (1.1.0) | Download a whole region's elevation once into a shared cache, then generate offline with no rate limits. Check coverage, preview the height map, or import a folder of tiles. |
| Height preview (1.1.0) | A grayscale or hillshade overlay of the cached elevation right on the map. Red means a tile is not cached yet. Click a tile to see its height range and status. |
| Elevation detail (1.1.0) | Pick the terrarium zoom, or let Auto match it to your scale (1:1 picks the finest, 1:10 picks a lighter, lossless one). Lower zoom is far fewer tiles and dodges the no-data gaps. |
| No-data hole repair (1.1.0) | The source data has gaps at the highest zooms that looked like dark bands and in-game dips. Meld rebuilds them from a lower zoom that has data, for one tile, a selection, or the whole cache. |
| No-buildings mode (1.1.0) | A Buildings toggle for a roads and land-cover only world. Roads, bridges, railways, water, natural, and terrain all stay; building footprints are emptied so land cover fills in cleanly. |
| Road detail + flat bridges (1.1.0) | A Road detail mode (auto, max, clean, or compact) keeps roads legible at small scales by dropping footways, crossings, and lane clutter. At scale 0.3 or smaller, bridges become a flat one-block deck so tall arches do not collapse into noise. |
| OSM data packs (1.2.0) | Bake a whole region's OpenStreetMap data once from local Geofabrik .pbf files, so generation needs no Overpass at all. Pairs with elevation packs for a fully offline region. Needs the optional osmium package. |
| Reusable OSM cache (1.2.0) | Map data is cached on a fixed map grid, so overlapping selections share tiles. Shift your area and only the new edge downloads; re-run the same area and nothing does. |
| Faster cells (1.2.0) | The supplementary Overture building fetch (about 93 percent of a roads-only cell's time) is skipped with buildings off and cached to disk with them on; each cell reads its map tiles directly with no merge step, and the terrain warm is skipped when elevation is already cached. |
| Remembered selection (1.2.0) | Your drawn area and its cells save into each world and redraw on a server restart, per world. |
| Benchmark report (1.3.0) | Every finished or stopped run writes meld-report.html + .json into the world: summary tiles, your machine (CPU model, cores and threads, RAM type/speed, drive type), the run settings, CPU/RAM and activity graphs, a per-worker cell timeline with merge playback, and a Save-as-PDF. |
| Live mid-run tuning (1.3.0) | Change workers, threads per worker or CPU budget during a run; the next cells use the new values, no restart, no re-plan. Origin, seed, elevation and scale stay locked. |
| Guided rail (1.3.0) | The right rail is one numbered top-to-bottom flow (steps 1 to 6) with the advanced cards collapsed at the bottom. One-click Prepare and build runs the prep then generates. |
| Fast first build + readable scale (1.3.0) | New projects start at 1:10 with buildings off and solid ground; the scale field shows the ratio (1:10) in blocks and metres; cell size is a free 1 to 64 fill-in. |
| Accurate gauges + snappier UI (1.3.0) | CPU% from a background sampler and RAM as Task Manager's "in use"; the rail polls on your actions and idles when nothing runs, so buttons respond instantly. |
| Region trees (1.4.0) | A region-aware schematic tree pack - 1,959 hand-made models across 448 species and 10 world regions, by paleozoey - placed by location with density-driven groves, five toggleable size tiers, and conifer-on-mountains / mangrove-on-coast remaps. Toggle in Settings; ships with Meld. See docs. |
| Terrain height + snow (1.4.0) | Vertical exaggeration makes mountains taller without widening the map; Snow has four modes (off, real latitude line, top-N% peaks, or a fixed height). See docs. |
| Border & zones (1.4.0) | Build country borders for a server: preview concentric rings on the map, export WorldGuard regions + point files + a ready border.sk Skript, and trim the world so it feels infinite but is bounded to the country. See docs. |
| LOD ready | Chunk lighting is baked in, so distant chunks render lit in Distant Horizons and Voxy without flying the whole world first. |
| Resume and retry | Re-run only unfinished cells after a stop, click one cell to regenerate it, and keep many worlds in your saves folder. |
git clone https://github.com/Teddy563/meld
cd meld
pip install -r requirements.txt
python server.py # then open http://127.0.0.1:5630Get the generator: use the bundled arnis.exe, or download the latest from the
Teddy563/arnis releases and drop the binary next to
server.py. Pillow is optional, only the automatic elevation survey needs it.
Linux / macOS: the binary must be named
arnis(no.exe) and be the matching OS build - Meld runs whatever it finds, and a Windows.exehere fails withExec format error. If you build the fork yourself, usecargo build --release --no-default-features: the defaultguifeature pulls in Tauri/GTK/cairo system libraries (thecairo-gobject/PKG_CONFIG_PATHerror), and Meld only needs the headless CLI ---no-default-featuresskips all of that and builds clean. Or just download the prebuilt Linux binary and rename itarnis.
Then, in the app: draw an area, set the cell size in Settings, and hit Generate and merge.
Windows: double click
start.bat. macOS or Linux: run./start.sh. Both just launchpython server.py. The port is5630, or setPORTto override it.
- Origin. Anchor a project origin, one lat/lon snapped to a region corner. Every cell is measured from it, so the whole world shares one coordinate convention.
- Survey. Lock one global elevation range and seed for the area, so heights and choices are consistent across every tile.
- Plan. Split the selection into a grid of region aligned cells at your chosen cell size.
- Prefetch. Download the OSM data once for the whole selection, then feed it to every cell.
- Generate. Build the cells in parallel with the Arnis fork, bounded by a worker pool.
- Merge. Strip each cell to its canonical regions and write them into the master world, with a drift guard so nothing overlaps.
server.py Flask orchestrator + the HTTP API
src/
coords.py the coordinate convention (origin anchored)
grid.py selection bbox to region aligned cell list
prefetch.py ensure each cell's OSM grid tiles are cached, then point cells at the cache dir
osm_grid.py the stable web mercator OSM tile grid (filenames, bbox math, bake merge)
osm_pack.py bake OSM offline from local Geofabrik .pbf files (pyosmium)
datapack.py bulk elevation download, coverage, and no-data hole repair
arnis_cmd.py build the Arnis argv, run it, find the world dir
merge.py canonical region strip + drift guard
survey.py elevation min/max (Pillow optional)
workers.py bounded parallel worker pool
project.py project.json + grid.json state
level_dat.py master level.dat handling
constants.py shared defaults
web/index.html the Leaflet app UI served by Flask
experimental/ headless tools (region repair, full re-run, wedge scan) for power users
tests/ coordinate round trip tests
- Generation is mostly CPU bound. The lever that matters is keeping workers x threads at or under your CPU cores; going over oversubscribes the cores and slows the build. On 24 cores, 12 x 2 and 8 x 3 perform about the same, so the exact split barely matters under that line. Save-disk speed and RAM are secondary caps that Recommend still applies (a slow drive or low RAM lowers the suggested worker count). Meld defaults to cell size 4.
- One Arnis binary required. Meld will not generate without
arnis.exe(orarnis) next toserver.py. The app says so on startup if it is missing.
Versioned with SemVer. See CHANGELOG.md for the full history
and RELEASE-NOTES.md for the highlights of each release. Tag a release as
vX.Y.Z; the matching CHANGELOG section is the release body.
Built on the open source Arnis generator by louis-e. Meld drives a custom Arnis fork for the shared OSM prefetch and tile invariant rendering that make the tiles line up. Respect the upstream Arnis license for the generator.
The bundled region-aware tree models (1.4.0) are created by paleozoey. Meld bundles and places them with attribution; the artistry is theirs.
Not affiliated with Mojang AB or Minecraft.