// changelog
Changelog
Meld is the orchestrator and UI. It drives a custom Arnis fork to generate each cell.
Every version below links to its release on GitHub, where you can download that exact build. All releases: Meld and the Arnis fork.
Meld (orchestrator)
v1.8.1 · Height ↗
2026-08-06
current
Minecraft version selector, terrain-fitted build height
Pick the Minecraft version you are building for, and let a world’s vertical range follow its terrain instead of vanilla’s −64 to 319. Mountains keep their peaks, and for the first time terrain can go below vanilla’s floor. Bundles the Arnis fork 3.0.5. Defaults are untouched: a project that never opens these settings emits no new flags and builds exactly as 1.8 did. Read the guide →
Version-aware generation
- Minecraft version selector. Decides the DataVersion written into every chunk, whether extended height can be declared at all, and the shape of the datapack. Only versions whose constants were read out of a real world or a real pack are offered, nothing is written from memory, and an unrecognised version is refused with the list of known ones rather than approximated.
- A pre-1.17 target disables extended height with the reason inline, not hidden: that is the release the feature arrived in.
Terrain-fitted height
- The smallest legal world that fits. The range is derived from the region’s real elevation, never a fixed 4064-block preset, every extra 16 blocks is another chunk section in every column. If the terrain fits vanilla anyway you get vanilla geometry and no datapack at all: no experimental-features prompt and no permanent pack for nothing gained.
- Headroom and underroom sliders. Room reserved above the peak for trees and buildings, and below the floor for caves and water carving. Push underroom past 8 and the world floor drops below vanilla’s −64 with solid rock filled down to it, verified at Y −160.
- World floor / ceiling boxes to state the range outright. Checked, not clamped: a value that would cut into the terrain is refused and says what it would have cost.
- Compression is reported, never silent. If a region cannot fit even at the engine maximum, the vertical scale is squashed and the ratio is stated, the alternative is a world that looks 1:1 and is not.
Fixed
- The master world lost its datapack. The merge copied region files and
level.dat but not the datapacks/ folder that level.dat referenced, so a merged extended world asked for a pack that was not there, and Minecraft loaded it at vanilla height, discarding every block above Y 319. Packs now travel with level.dat, and worlds merged before the fix are backfilled.
- A Y-cliff along coastlines. The datum reserves room beneath the terrain for the deepest water carve, and that was measured from each cell’s own land cover. A cell holding deep water placed its terrain about 5 blocks above an inland neighbour (measured: Y −62 against Y −57) and the shared border became a visible step. Every cell now reserves the same clearance.
- Two datapack bugs only the game could find. The pack was written in the 1.21.x metadata schema, which 26.x rejects outright, and an intermediate change restamped
level.dat’s version so Minecraft skipped the migration pass and the world failed even in Safe Mode. Neither was visible to any file-level check, the files were internally consistent and said exactly what was intended.
- OSM cache expiry. The 30-day tile TTL became 365 days (with a setting, 0 = never). A mass expiry re-downloaded a whole country through the public Overpass rate limit, hours of “Fetch OSM” on an area already sitting on disk.
Verified in game
- Yosemite, 4096×4096 blocks, four cells. Generated at 1:4 as four independent processes and merged: all four declared the same world (Y −80 to 831), chose the same datum and stamped the same DataVersion, every section landed inside the declared world, and terrain reached Y 559, 240 blocks above vanilla’s ceiling. The merged world opens in Minecraft 26.1.2 with the height datapack active.
Worth knowing
- The terrain datum moved from Y −62 to Y −56 inland. Fresh worlds are unaffected, but re-rendering cells into an existing world places them 6 blocks higher, do not mix old and new cells in one world.
- Extended height on 26.2 is refused for now: it uses the 26.x pack schema, but no pack format for it has been read out of a real pack yet, and a guessed one produces a world that will not open.
v1.8 · Farmlands ↗
2026-07-26
Field parcels, crop plots, wildflower meadows, rocks & bushes
The countryside comes alive. Farmland, grassland, and the plains OSM never mapped turn into real agricultural land: rotated field parcels that follow the road network, monoculture crop plots at different growth stages, wildflower meadows, dirt tracks, hay bales, and scattered rocks and bushes, with live pattern previews and a mix panel per land kind. Bundles the Arnis fork 3.0.4. Everything is additive and seam-safe: a project that never opens the Farmland drawer builds exactly as before.
Field parcels
- Real plot layout. Fields split into rectangular parcels, long strips and blocky plots at multiple angles, separated by dirt tracks, with noise-textured interiors. Field systems change orientation along organically wandering borders, and each area aligns its grid to the dominant nearby road, the way real cadastre follows its access roads.
- Sized like the real world. Parcel sizes are defined in real metres and track the map scale; a Pattern size slider (25–400%) zooms the whole layout. Farmland polygons feather into the surrounding grassland instead of hard-cutting at the OSM boundary.
Real crop plots
- One crop per field. Wheat, potato, carrot, beetroot, sunflower rows, pumpkin patches on a grass mosaic, or resting fallow ground, weighted by a new Farm plots slider group. Neighbouring fields ripen at different growth stages, bird-sown stray patches break up the monoculture, and wheat and fallow plots carry hay-bale bundles.
- Terrain-aware sunflowers. Sunflower fields cluster in the low, open plains and thin out uphill.
Three land profiles
- Farmland / Grassland / Untagged land. A Profile picker gives each land kind its own five-way mix (Coarse dirt / Plains / Flowers / Farmland / Moss). Grassland defaults grassy; the huge satellite-classified plains OSM leaves blank default to open fields instead of endless crops; villages get grassy ground instead of wheat.
- Vanilla-density cover everywhere. Short grass, ferns, two-block large ferns, tall grass, ten wildflower species, sunflowers, dead bushes and moss, at the density a vanilla plains biome would have.
Rocks, bushes and the preview
- 68 bundled schematics. Eight andesite/tuff rock formations and sixty bushes across ten species scatter at random rotations over farm, grass and untagged land, bushes in about 5% of chunks, the much rarer rocks in about 2%, never on rivers, lakes, roads or tilled fields.
- Live pattern preview. The preview canvas mirrors the generator, angled parcels, strips, domain borders, per-crop plot tints, vegetation speckle, scatter dots, and follows the selected profile.
- Fixes. Flat lowland farmland no longer gets stray snow speckle, and nothing floats over water any more.
A big usability pass focused on guiding people to run and build everything easily. The right rail becomes one three-step flow with a settings search and a single Generate button; the Projects gallery gains folders and a render queue that builds worlds one after another; borders can be built from any drawn shape; and a one-click launcher installs and starts Meld on Windows, macOS and Linux. Bundles the Arnis fork 3.0.3 (the 1.6 water and cave rendering fixes: uniform water colour, no thin land or road lines across water, no cave lava seams, and organic climate boundaries).
Guided flow
- Three numbered steps. The rail is 1 Settings, 2 Prepare data, 3 Generate; Project & world, Selection and Edit & retry live inside Generate, and every section opens one at a time.
- Settings search. Type any setting, toggle or button at the top of the rail; Enter cycles the matches, opens the section and scrolls to it.
- One Generate button. Prepare, build and resume collapse into a single Generate world that does the right thing for the current stage, including resuming after a stop or crash.
Projects, folders and a render queue
- Gallery with folders. Keep many worlds side by side: clone, rename, locate on the map, drag to reorder, and group into folders. Click a folder to focus the map on only its areas.
- Render queue. Queue a folder or any set of projects to build one after another, with pause, stop and kill, plus per-project and combined output-size estimates that react to the export format.
- Smarter clone. Cloning copies the settings, pre-plans the cells so the preview shows on open, and drops the copy next to its source.
Borders and server
- Borders from any shape. A zone can use the rectangle or polygon you drew as its boundary instead of a country; the rings, WorldGuard regions and border.sk build for the custom shape.
- Server in place. Server setup can run a Leaf server on the world's real files, with no copy and no doubled disk.
One-click on every OS
- Double-click to run. meld.bat on Windows, meld.command on macOS, meld.sh on Linux: the launcher makes a private environment, installs the dependencies, fetches or builds the generator, and starts Meld in your browser. Run python meld_launch.py --check to see what is installed or missing without changing anything.
- Polish. A darker glass skin, tidier drawers, a stronger hillshade preview, and the page is served no-store so UI updates always show on a plain refresh.
An above ground release to match the underground one. The bundled Arnis fork jumps to 3.0.1, matching upstream Arnis 3.0.0 feature for feature, and Meld puts the new world shaping options in front of you: bundled props placed at real map features, a visual chest loot editor, per world game mode and time of day, an in world map item, richer building facades, and a new global elevation source that replaces the old broken tile cliffs. Multi cell worlds still merge seamlessly: the shared origin grid and the position based rendering did not change.
Things placed in the world
- Props at map features. A Props menu turns on families of bundled models placed where they belong: boats on water, cars in car parks, cranes and excavators on construction sites, tractors on farmland, wind turbines at wind generators, lighthouses, fountains, playgrounds and cemetery headstones. A family that is off costs nothing in time or memory.
- Chest loot you can edit. Set what interior chests contain, per theme, with item sprites and a searchable picker. 56 presets copy real structures (trial chambers, stronghold, buried treasure and more), and there is a raw JSON box for anything else. Every item is checked against the block registry, so a typo cannot reach generation.
- World settings. Game mode and time of day are written into the world, and a World map item option drops a locked map of the whole build into your inventory. The map is made in one pass after the merge, so a region built from many cells still gets a single correct map.
Buildings and surroundings
- Richer facades. Downtown towers pick from six styles based on real OSM material and historic tags, with stone bases, glass shopfronts, cornice lines and matching window frames. Each building also gets its own window offset, so neighbours stop sharing one city wide grid.
- More detail everywhere. Sport pitch markings, furnished bedrooms, rail catenary wires, street lamps, road tunnels, modular bridges, helipads, more surface materials, climate driven biomes with warm, cold and frozen water, and street trees on plazas. Trees no longer grow through bridge decks, and canopies drape over low roofs.
Changed
- Better elevation by default. Terrain now comes from Mapterhorn, a global source with holes filled in. Regional high resolution data still wins where it covers your area, and the old AWS source stays available as a fallback. Offline builds serve from cache and fall back to flat ground rather than reaching for the network.
Fixed
- Large exports could truncate saved chunk data when streaming to disk.
- Players could spawn buried or in mid air when the output path was nested.
- Farmland irrigation washed crops out on slopes; water is now kept to real basins.
The long-awaited underground release, and it is live. Worlds are no longer solid rock below the surface: one Caves toggle carves a full vanilla-style cave system into every cell at generation time, caverns, tunnels, rivers, lakes, ores, geodes and eight themed cave biomes, deterministic and seam-safe across tiles. Around it: an Export & compression suite that shrinks a finished world up to ~4.9×, a one-click Leaf server builder that turns the world into a running localhost server with the border plugins pre-staged, and the Border & zones Skript completing its real particle wall.
Caves
- Vanilla-style cave worldgen, one toggle. The Arnis fork ports Minecraft 1.21.8 cave generation to Rust and carves it into the filled ground during generation: cheese caverns, spaghetti tunnels and noodle worms from the vanilla noise density field (with vanilla's own cell interpolation), plus the random-walk tunnel and ravine carvers. On top of the vanilla base: pool caves, long snake rivers that pour into caves only while descending, a contained deep lava sea at the very bottom, the vanilla ore table plus stone-variety patches, and amethyst geodes.
- Eight cave biomes. Lush, dripstone, deep dark, mushroom, ice under mountains, amethyst, volcanic at the world floor, and coral in water pools, covering about half the underground, with plain-rock buffers between zones so themes read as places, not noise.
- Seam-safe by construction. Every cave pass is a pure function of seed and position, so adjacent cells generated independently carve the same caves at their shared seam, the same guarantee the surface already had.
- Formation packs. A cave-pack folder of schematic formations (ice spikes, dripstone columns, crystal clusters) decorates floors and ceilings when present; caves generate fully without it.
- Your mix, previewed honestly. A Cave biomes panel gives every theme its own slider (0–200% of its default share, 0 = off; type an exact % or double-click to reset), and a Preview renders the real zone layout for your world's seed, patches in their noise shapes over gray rock, upper and deep cave layers, measured percentages, and hover a biome to light up just its patches. Untouched sliders keep the world byte-identical to the default.
- Vanilla stone variety, fixed for real-world terrain. Deep dark now lives only below the deepslate line like vanilla, and diorite/granite/andesite/dirt patches are placed relative to the local surface (not absolute Y), so they fill the rock under every column at any terrain height.
Export & compression
- Zip / tar.zst, universal archives that extract back to a vanilla single-player world (~1.85× smaller; Anvil chunks are already compressed, which is the honest ceiling for archives).
- Linear, per-region .linear for Leaf/Folia servers, ~4.85× smaller at level 9, written next to the .mca or as a separate [Linear] sibling world with the original untouched.
- B_Linear, a [BLinear] sibling world for Leaf's B_LINEAR via a bundled cross-platform Rust converter, with keep-modes (keep both / B_Linear only / archive the .mca first). The .mca is only ever removed after everything verifies.
- meldconvert CLI, standalone mca ↔ linear ↔ blinear conversion with the same verified codecs.
One-click Leaf server
- World to server in five steps. Pick any Leaf version (1.21.4 to latest, fetched live), mount the world as the main world or a Multiverse sub-world, then Plan (a dry run listing the exact jar build and plugin versions with hashes), Stage, Download (hash-verified, confirmation required), accept the EULA as its own deliberate step, and Start, with a live console in the app.
- Format-correct every time. Choose which world files feed the server (auto, .mca, [Linear] or [BLinear]); the server's region-format config always matches the files actually staged.
- Borders pre-staged. WorldGuard, WorldEdit, Skript and the addons the border system needs install automatically, and the exported border files are pushed and loaded on first start.
- Voxy option. Installs Voxy Server Side so players with the Voxy client see the whole map as distant terrain the moment they join, streamed straight from the world files, any region format.
- Localhost by design. Servers are set up for 127.0.0.1:25565, offline mode, with a crash watchdog and an optional automatic first-start world backup (toggle it off for big worlds). Anything beyond local play is your own server.properties edit.
- Tuned to your machine. RAM and CPU sliders sized from your actual hardware (heap capped below your total RAM, CPU % mapped to the JVM's real processor count) with live readouts, a pop-out live console window with a command input, and every choice, version, world files, folder, extras, remembered per project.
Borders
- The particle wall is real. The generated border Skript now embeds its wall geometry and draws per-player dust curtains, hard wall yellow, safe edge orange, country borders aqua, scanning only the segments near each player. No point files, no extra addons.
v1.4 ↗
2026-06-22
Region trees, terrain shaping, border & zones
Real trees, shape the land, and bound a world to a country. Meld places a region-aware schematic tree pack instead of procedural trees: 1,959 hand-made models across 448 species and 10 world regions, chosen by location, scattered into natural groves, in five size tiers, anchored reliably on slopes and at water edges. Two terrain knobs make mountains as tall as you want without widening the map and put snow exactly where you want it. And Border & zones turns one or more countries into ready WorldGuard regions, point files, and a generated Skript that fences a server to that border.
- Region trees. A bundled region-aware schematic tree pack (1,959 models, 448 species, 10 world regions, 172 communities): the region comes from your selection, a community from the terrain, then a weighted species, with familiar vanilla trees mixed in. Five size tiers with toggles; a disabled tier falls back to a smaller one, never a gap. Models by the artist paleozoey.
- Terrain height ×. Vertical exaggeration multiplies terrain height only, not the map footprint, so mountains get taller at the same map size and auto-compress to the build height.
- Snow modes. Off, realistic (the real latitude snow line), peaks (the top N% of the world's height), or manual (above a Y you pick).
- Border & zones. Pick one country or several, set the band sizes, preview the rings on the map, and export WorldGuard regions, per-ring point files and a generated Skript (country titles, an escalating kill-zone, a fling-back wall). An optional trim limits generation to the border so the void hides behind the wall.
- Float fix. Trees anchor on slopes and at water edges; no floating trunks.
v1.3 ↗
2026-06-19
Guided start, live tuning, benchmark report
Guided start, live tuning, and a benchmark report. Same engine (the Arnis fork is unchanged from 1.2.0), much easier to drive and to understand. The right rail is one numbered, guided flow, you can retune a run while it runs (workers, threads and CPU budget apply to the next cells), and every finished or stopped run drops a benchmark report into the world: machine specs, CPU/RAM and activity graphs, a per-worker timeline, and a Save-as-PDF. New projects start with fast first-build defaults, cell size is a free 1 to 64 fill-in, and the live CPU/RAM gauges read accurately now. Existing worlds and settings are untouched; the new defaults apply to new projects only.
Measure every run
- Benchmark report. When a run finishes (or you stop it), Meld writes meld-report.html and meld-report.json next to the world. The page shows the time and cells, your machine (CPU model, physical cores and logical threads, RAM type and speed, drive type), the exact run settings, CPU and RAM over the run, activity over the run, and a per-worker cell timeline you can replay. Save as PDF turns it into a tidy two-pager. Open it from Benchmark report in the Build card.
- Tune it while it runs. Change workers, threads per worker or CPU budget mid-run and the next cells use the new numbers, no restart, no re-plan. The world's origin, seed, elevation and scale stay locked, so a live tweak never desyncs the build.
- Explore the map. A new Explore mode toggle in the Build card turns the map into a coordinate picker: turn it on, click anywhere, and get the Minecraft teleport command for that spot (/tp @s X ~ Z), computed from the origin and scale, with a Copy button. It hides the cell preview, shows the world border, has a search box to find and zoom to a place, and works before you build.
Easier to start
- One guided rail. The right rail is a single top-to-bottom flow, steps 1 to 6, with the advanced cards collapsed at the bottom. One Prepare and build button runs the prep then generates. No Simplified/Advanced switch; every control is there.
- Fast first build, readable scale. New projects start at 1:10 scale with buildings off and solid ground; the scale field shows the ratio (one block is 10 m, a 1 km city is 100 blocks); cell size is a free 1 to 64 fill-in with presets.
Accurate and snappy
- Gauges read correctly. CPU% now comes from a background sampler (it was reading near zero), and RAM shows the in-use figure Task Manager reports. Recommend suggests both a worker count and a threads-per-worker so workers times threads fits your logical CPUs.
- A UI that responds. No more once-a-second tick: polling kicks on your actions and idles when nothing runs, Stop reacts instantly, folder pickers are one Browse, and Prepare no longer nests dropdowns. Generation is mostly CPU bound, so keep workers times threads at or under your cores; stream to disk carries the big cells.
v1.2 ↗
2026-06-18
Offline OSM, much faster cells, cleaner water
Offline, faster, cleaner. Bake a whole region's OSM once from local Geofabrik .pbf files and generate with zero Overpass calls, with the OSM cache keyed to a fixed map grid so overlapping selections reuse tiles. The biggest per cell cost was a supplementary building fetch that ran even with buildings off; it is now skipped for roads only builds (a measured cell dropped from about 29s to 4s) and caches to disk when buildings are on. Your drawn area is remembered per world across a restart, and the diagonal water and sand wedges are fixed.
Build offline
- OSM data packs. Drop Geofabrik .osm.pbf files in a folder and bake them once into the shared cache, so generation needs no Overpass. The OSM data pack card has Check coverage, Bake from .pbf, Scan folder and live progress; baked tiles share the same grid as the live fetch. Needs an optional osmium dependency.
- OSM cache that reuses. Map data is cached on a fixed web mercator grid keyed only by tile, independent of scale and selection, so a 90 percent overlapping selection downloads only the new edge and an identical re run downloads nothing.
- Empty tiles and retry. Sea and no data tiles are baked as valid empty tiles so coverage reads a true 100 percent, and rate limited fetches retry with backoff and cache instead of re fetching every run.
Faster cells
- Overture gate. The fork's supplementary Overture Maps building fetch, measured at about 93 percent of a cell's time, now runs only when buildings are enabled. A roads only cell dropped from 28.8s to 4.2s.
- Overture cache. With buildings on, the index and partition files cache to disk and download once instead of once per cell.
- No merge step. Each cell reads its own grid tiles straight from the shared cache (the fork takes a tile directory and computes the covering tiles from the bbox), so there is no per cell or per group OSM file to assemble before a build.
- Skip the terrain warm when elevation is already cached, removing minutes from every run on a complete pack.
Cleaner and remembered
- Water wedge fix. A water polygon that crosses a cell edge could leave an open outline that the bbox clip closed with a straight chord, flooding a triangle of water and a band of sand across correct land. A broken outline is now dropped instead of closed with a fake edge, so the wedge is gone and real water is preserved.
- Selection persistence. The drawn area, its polygon and the planned cells save into each project and redraw on a server restart, per world.
- Detail and reliability. Road detail clean and compact modes, a custom Overpass URL, sub world operations, and disk recovery of orphaned patches.
v1.1 ↗
2026-06-16
Bigger builds, region data packs, one shared cache
Go bigger, see more, waste nothing. The fork picked up an in process multi core engine and stream to disk, so a single cell can be huge. Map data now lives in one shared, visible folder reused by every world, and a per spawn cache walk that was quietly adding seconds to every cell is gone. Build a small area first to confirm your scale, elevation detail and save location before you commit a whole country.
Bigger builds
- In process multi core generation. A cell spanning three or more region tiles now builds its tiles in parallel inside one Arnis process, on top of Meld's existing cross process parallelism. Small cells keep the unchanged sequential path; big cells go wide.
- Stream to disk. Big cells evict finished regions to disk during generation instead of holding the whole world in RAM, so 8x8 and 16x16 cells complete without running out of memory.
- Cell sizes 1, 2, 4, 8 and 16 (powers of two, default 4; 8 and 16 marked as testing). The cap is raised from 6 to 16.
- Spiral generation order. Cells build center out in concentric rings instead of edge first.
See more
- Region data packs. Bulk download a whole region's elevation once into the shared cache, so generation runs offline and is never rate limited. The Data pack card has Check coverage, Download elevation, a re fetch this view button, a packs list, and Import folder (drop in a folder of tiles to use them with no download).
- Height preview. A grayscale or hillshade overlay of the cached elevation on the map, so you can see the terrain before you build. Red means a tile is not cached yet. Zoom out for a regional view or in for full detail, and click a tile for its height range, size and status.
- No data hole repair. The terrain source has real gaps that served all black tiles, showing up as dark bands in the preview and flat dips in game. Meld now rebuilds each hole by upsampling the deepest zoom that does have data, baked into the cache so both the preview and Arnis read real terrain.
- Selectable elevation detail. An Elevation detail dropdown picks the terrain zoom used for download and generation. Auto matches the zoom to your scale, so you get the right detail with no waste; a lower zoom is far fewer tiles, dodges the no data holes, and stays lossless against the roughly 30 m source.
- Left status rail. A second thin panel mirrors the right: a live System card (CPU, RAM, save disk free with a low disk warning), the Build estimate, Workers, and the Log. A Cache card shows where the shared cache lives plus per type size with Clear buttons.
- No buildings mode. A Buildings toggle in the Meld settings and the Arnis GUI for a roads and land cover only world; building footprints are emptied so land cover fills in cleanly with no building shaped holes.
Waste nothing
- One shared cache. OSM, terrain and land cover caches now live under one folder in the Meld project (override with
MELD_CACHE_DIR), reused by every world instead of being hidden in AppData and re downloaded per project.
- Paint tool. In Edit mode, click and drag across the map to add or remove cells; the whole drag persists in one atomic write.
- Select to retry. Drag to mark a clump of cells with a distinct blue dashed ring, then re run them with one button.
- CPU controls. A CPU budget slider, a threads per task floor, a stagger toggle and step, and adaptive pacing that spaces worker starts from the measured average cell time so cores stay busy without all 16 launching at once.
- Failed cells say why (out of memory, disk full, rate limit, network timeout, or crash), and a cell that fails for a transient reason is auto retried up to twice; deterministic failures are not.
Fixes
- Floating vegetation over water and roads on big and streamed exports; the cleanup now runs per tile instead of post merge after regions were already evicted.
- Duplicate banners, signs and chests on the parallel path are now deduped by coordinate on the Java write path.
- A worker thread crash on the parallel path from the fork's wider block IDs meeting an undersized palette array.
- Cross tile seams and water artifacts settled by the 2.9.0 engine bump; editing the plan during a run no longer desyncs the worker pool (cell and plan edit routes refuse while a run or prefetch is active).
v1.0 ↗
2026-06-13
First release
Pipeline
- OSM Leaflet selection, then a region aligned cell grid, then parallel Arnis workers, then a canonical region merge.
- Global elevation lock plus a tile invariant seed for seamless adjacent cells.
- Origin anchored coordinate convention shared by the orchestrator, merge, JS and the fork, plus a merge time drift guard.
- Shared OSM prefetch. Meld downloads the selection's OpenStreetMap data once (one request, split into quarters only if the endpoint rejects it), caches it, and feeds every cell via
--file, so parallel runs never hit the Overpass per IP rate limit. A cyan dashed overlay shows the download footprint.
Workers and performance
- Worker pool, default 4 and cell size 4 (the safe sweet spot), up to 16, with a warning above 8. Generation is mostly CPU bound, so keep workers times threads at or under your cores; RAM and save disk are secondary caps. Worker count can be changed live during a run.
- Recommend reads your CPU, RAM and disk speed and suggests the best cell size and worker count.
- LOD ready. Chunk lighting is baked by default, so distant chunks render lit in Distant Horizons and Voxy without flying the whole world first.
Experience
- One detailed panel, auto center origin on selection, live mouse coordinates, themed in app dialogs (no browser popups).
- Estimated size, a live elapsed timer, a live per worker panel, and a finished run stats popup (actual time, on disk size, region file count).
- Resume unfinished, and Generate skips already merged cells (crash and overnight safe). Click a cell to regenerate it.
- New world keeps the finished world, then resets for the next (
Meld World 2, and so on) in the same saves folder, with a gold world title in Minecraft's world list.
- Editable Arnis settings (terrain, roofs, interiors, land cover, fill ground, height limit, bake lighting) in the panel, plus a 3D models toggle.
- Cell size from 1 to 16 (default 4), remembered across refreshes and new worlds.
The generator Meld runs for each cell. These are the changes that make adjacent cells line up.
v3.0.5 ↗
2026-08-06
latest
Configurable, version-aware build height
The generator behind Meld 1.8.1 “Height”. A world’s vertical range is derived from the terrain it holds and declared by a generated datapack instead of a fixed 4064-block preset, and the target Minecraft version becomes a real input rather than a hardcoded constant. Every flag is additive: without them the generator behaves exactly as 3.0.4 did.
- One HeightProfile. A single object defines
min_y, height, datum, vertical scale and target version; the datapack writer, the chunk writer and the reported geometry all read it and nothing computes its own. Every engine invariant, 16-alignment, the −2032 to 2031 range, min_y + height ≤ 2032, the signed-byte section index, is enforced in one place, and a violation is a refusal, never a clamp.
- Fitting rules. The smallest legal height rather than the maximum, explicit
--height-headroom and --height-underroom, and vertical compression only as a last resort, always reported.
- A verified version table.
--mc-version resolves the DataVersion, extended-height support, chunk layout and datapack schema from a checked-in table whose rule is that no value is written from memory, every row records where its numbers were read. Unknown versions are refused with the list of known ones.
- Explicit bounds.
--min-y and --max-y set the range directly, checked rather than clamped: a ceiling under the terrain’s peak or a floor over its base is refused and says what it would have cost.
- Fixed: the floor was a lie. The bundled pack declared
min_y −2032 while every write was clamped by a compile-time −64, so extended height only ever extended upward and terrain below vanilla’s floor was impossible at any setting. The write path now follows the profile and the under-terrain fill reaches the world floor, so a declared basement is solid rock rather than void.
- Fixed: the datum depended on how much water a tile held, a coastal tile sat about 5 blocks above an inland one, which is a Y-cliff along every coastline crossing a cell border.
--water-carve-clearance max reserves the engine’s bounded worst case in every tile instead.
- Fixed: two DataVersions in one world. The bundled region template shipped chunks baked at an older version; any chunk the generator never overwrote kept it, so a finished world held two and the game ran its upgrade pass over part of it.
- Fixed: the datapack schema. The pack was emitted in the 1.21.x metadata shape, which 26.x rejects outright, the world would not open at all. It is now written in the target version’s schema, with the format number verified from a pack that version loads, and a refusal where no verified number exists.
Verified in Minecraft 26.1.2: a four-cell, 4096×4096-block Yosemite build merges into a world that opens in game with terrain 240 blocks above vanilla’s ceiling. 342 unit tests pass.
v3.0.4 ↗
2026-07-26
Farmlands: field parcels, crop plots, land coverage, scatter
The generator behind Meld 1.8 “Farmlands”, on top of the 3.0.x line (the upstream Arnis 3.0 merge and the 3.0.1–3.0.3 water, cave and climate fixes, see the GitHub releases). Every flag is additive and every decision is a pure function of world coordinates, so adjacent cells agree at their seams and default runs stay byte-identical.
- Field parcels.
--field-mix splits farmland into five weighted styles (coarse / plains / flower / farm / moss) laid out as rectangular parcels with dirt-track boundaries. Orientation domains with noise-warped borders pick an angle and a layout (strips or blocky plots) and align to the dominant nearby road from a coarse road-bearing grid. Parcel sizes are real-metre and map-scale-bound; --field-scale zooms the pattern.
- Crop plots.
--farm-crops weights seven monoculture plot kinds (wheat, potato, carrot, beetroot, sunflower rows, pumpkin patches, fallow). Per-field growth stages with in-field jitter, bird-sown stray-crop patches, hay-bale bundles, and terrain-aware sunflower fields that cluster in lowlands. Crop-planted farmland never decays; fallow uses a locked bare palette.
- Land coverage.
--grass-texture and --land-texture extend the pattern to OSM grassland and to untagged satellite land (ESA WorldCover), each with its own mix (--grass-mix, --land-mix); villages get grassy ground. All textured styles carry vanilla-density cover: grasses, ferns, ten wildflower species, sunflowers, dead bushes, moss.
- Rock & bush scatter.
--rocks / --bushes stamp 68 bundled schematics at random rotations, chunk-rolled (bushes ~5%, rocks ~2%), only on natural dry ground, never on water, roads or tilled fields.
- New blocks. beetroots, pumpkin, sunflower, packed mud, and six new flower species, wired through the Java, Bedrock and Luanti maps.
- Fixes.
--snow-mode peaks ignores flat terrain (no more snow speckle on lowland plains), and the floating-vegetation sweep covers the new species so nothing hovers over rivers.
v2.9.3 ↗
2026-07-04
The cave engine (Meld Depths)
Underground update: one cave system, done right. The experimental cave engine is gone; --caves now runs a from-scratch Rust port of Minecraft 1.21.8 cave worldgen, carved directly into the filled ground at generation time. This is the engine behind Meld 1.5 "Meld Depths". Measured against 2.9.2: 31 files, +6,178 / −169 lines.
- Vanilla cave worldgen. The vanilla noise density field (cheese caverns, spaghetti tunnels, entrance pockets, pillars, noodle worms) sampled with vanilla's 4×8×4 cell interpolation, plus the random-walk tunnel and ravine carvers. Deterministic and seam-safe: every pass is a pure function of seed and position, so independently generated adjacent tiles carve the same caves at the seam.
- Water and lava that behave. Pool caves (multi-lobe, half-flooded, grand and coral-reef variants), long snake rivers that split into up to three streams and pour into caves only while descending, and a contained deep lava sea at the very bottom with obsidian and magma rims. Verified by a region auditor gating every build on zero floating fluid and zero water-lava contact.
- Ores, geodes and stone variety. The vanilla ore table (with deepslate variants at depth), three size tiers of stone-variant patches, and amethyst geodes cut correctly by cave air.
- Eight cave biome themes. Lush, dripstone, deep dark, mushroom, ice under mountains only, amethyst, volcanic at the bottom of the world, coral in water pools, about half the underground, with plain-rock buffer strips between zones. 72 new block definitions carry the coral, ice, snow and sculk sets.
- Cave asset packs. A cave-pack directory of schematic formations (ice spikes, dripstone columns, amethyst clusters, clay pool basins) stamped onto floors and ceilings, themed by zone, with block states preserved and rotated; formations sink into the ground, clip against walls, and never touch fluids. Caves generate fully without one.
- Biome mix control + layout preview.
--cave-biomes takes per-theme percentages (100 = default share, 0 = off, 200 ≈ double) on a smooth curve that keeps the field seam-safe and the default byte-identical; --cave-zone-map renders the zone layout for a bbox to PNG overlays plus measured per-theme shares, using the exact picker generation uses. Meld's cave-biome preview runs on it.
- Cave polish. Deep dark gated to below the deepslate line (deep-only, like vanilla), and stone-variant patches (diorite/granite/andesite/dirt) placed surface-relative so they appear at any real-world terrain height, a valley region went from 4 diorite blocks to ~173,000.
- Cleanup. The old experimental cave engine (~3,900 lines) and its flags are removed, along with the Underilla pipeline hooks the new engine supersedes; the deepslate transition moved to its own small module and behaves identically.
v2.9.2 ↗
2026-06-22
Tree packs, terrain shaping
Load your own tree models, and shape the terrain. A pack-agnostic schematic tree system and two terrain knobs on top of the 2.9.1 generator. It ships no tree art; it places whatever pack directory you point it at.
- Schematic tree packs.
--tree-pack <DIR> points at a directory of .schem tree models plus a manifest, and places those models instead of the built-in procedural trees, a realm by location, a community by terrain, then a weighted species, blended with vanilla trees, inside the normal tree-spawn pass so density and clearings stay natural. --tree-sizes gates which height tiers may place.
- Vertical exaggeration.
--vertical-exaggeration multiplies terrain height only, not the map footprint, so relief that flattens at small scales comes back.
- Snow modes.
--snow-mode off|realistic|peaks|manual, the real latitude snow line, the top N percent of world height, or a fixed Y.
- Tree anchoring. Trees anchor on slopes and at water edges instead of floating, never root in water, and never clip into buildings.
- Small-scale water. Scale-aware river and pool depth, line-river width capped at small scales, a more varied riverbed, and trees swept off the water surface.
v2.9.1 ↗
2026-06-18
Direct tile reads, water wedge fix
A maintenance release on top of 2.9.0. A cell can read its own slice of a shared OSM tile cache directly, with no per cell merge step, and a water rendering artifact that could flood a triangle of a cell is fixed.
- Read OSM from a tile directory. A new option points Arnis at a directory of grid tiles; it computes the tiles overlapping the bbox, loads each and de duplicates them, so a Meld orchestrator fills the directory once and hands the same directory to every cell with zero assembly.
- Water wedge fix. A water multipolygon with member ways missing for a cell left its outline open; the bbox clip then closed it with a straight chord and flooded a triangle. The clip now drops a broken outline instead of closing it with a fake edge, so the wedge is gone and proper water is kept. Verified on real data, with a wedge cell dropping from 135,600 to 4,555 water blocks and a clean river cell byte identical.
- Overture gated and cached. The supplementary building fetch runs only when buildings are on, and its index and byte ranges cache to disk, so a roads only cell no longer downloads building data it will not use.
v2.9.0 ↗
2026-06-16
Upstream 2.9.0 engine, seam preserved
Pulls the fork up to the upstream 2.9.0 line (53 merged commits, in process tile parallelization, stream to disk region eviction, the mimalloc allocator) while keeping the cross tile seam intact. Two independently generated overlapping cells agree block for block (0 of 1024 boundary chunks differ).
- Merged 53 upstream louis-e/arnis commits. In process tile parallelization, stream to disk region eviction, the mimalloc allocator, the large area warning and the GUI ETA, with the master origin tile invariant seam preserved through the merge.
--no-buildings (alias --no-structures) drops all OSM buildings plus building adjacent features while keeping roads, rail, water, land cover and terrain, for a roads and ground only base layer.
ARNIS_ELEV_ZOOM caps the terrain tile zoom for the whole run, so elevation stays lighter and hole free; a coarser zoom such as z13 still carries the full roughly 30 m signal while sidestepping the no data holes and downloading far fewer tiles.
--download-terrain-only warms the AWS terrain cache for a bbox in one pass, and --offline (alias --elevation-cache-only) serves cache hits but errors on a miss instead of re downloading, so a batch run never quietly hammers the source.
- Parallel safe terrain fetch. Under Meld's roughly 64 concurrent fetches, cells were getting rate limited and truncated tiles that became flat seams. Fetch now uses 6 retries with backoff, deterministic per tile jitter, atomic cache writes and retry missing rounds, killing the staircase seam at the build center.
- Fixed an i32 corner sum overflow crash on far from origin master coordinates, plus the cross tile coordinate drift under master origin (longitude now anchored at the origin latitude so it maps to one block X project wide). Plain single world generation is byte identical.
Lets an external scheduler pre-fetch a region's OSM once and feed it to many cells, instead of every cell querying Overpass.
--download-only. Fetches the OSM data to --save-json-file and exits before any world generation. Meld uses it to download the whole selection once, then passes --file to every cell, so parallel runs make zero Overpass calls and never trip the per IP rate limit. Purely additive, behaviour is unchanged when the flag is omitted.
v2.8.5 ↗
2026-06-11
Seamless multi tile rendering
Makes adjacent tiles agree at their shared borders, so the merge is visually seamless (~97% of rendered surface). All gated to --seed; single world output is byte identical.
- Trees, parks & vegetation meld. Scatter areas (forest, wood, tree_row, leisure, landuse) now decide each tile with a position seeded RNG instead of a shared stream consumed in flood fill order, so the scatter no longer relocates on one side of a seam. Scatter ways and relation members render unclipped (cap guarded) so both tiles flood fill an identical interior.
- Buildings. Multipolygon (relation) buildings no longer split at a tile border; buildings whose footprint is mostly water are skipped.
- Terrain. Elevation and land cover grids are sized with the world's origin anchored metric (no ~0.1% drift off OSM); robust parallel AWS fetch (more retries, retry missing tiles, atomic cache writes); the global outlier filter is skipped in tile mode (it caused a coastal border step).
- Biome. Cell local biome lookup plus a globally continuous chunk latitude removes the grass and leaf colour seam.
v2.8.4
2026-06-09
Coordinate seam fix
- Fixed cross tile coordinate drift under
--master-origin-lat/lng. The longitude to block X factor was computed from avg_lat = (point + origin)/2, so one longitude mapped to different block X by latitude, shearing each tile off the region grid and leaving unrendered grass strips at seams. Now anchored at origin_lat, so tiles align exactly on region boundaries. Adds a latitude invariance regression test.
v2.8.3
2026-06-02
Meld water update
- Comprehensive underwater, shore and wetland rewrite: vanilla MC ocean floor (mostly GRAVEL, rare CLAY, SAND, DIRT patches), rare MAGMA and SOUL_SAND vents, domain warped organic shapes.
- Prominent dunes, sand to grass shore fade, wetland MOSS rings, tiered cattail with state stacked candles.
--seed (alias of --tile-invariant-rendering) drives the global noise seed, so beds, dunes and shores are reproducible.
- A sweep pass removes vegetation left floating over water and roads.
v2.8.1
earlier
- Tile invariant building rendering: pre clip bounds plus seeded salted RNG, so a building straddling two tiles renders identically in both.
- Global elevation min and max flags for cross tile Y normalisation,
--master-origin global coordinates, --road-detail clean and compact modes, and --overpass-url override.
The Arnis fork tracks louis-e/arnis, merged up to the v2.9.0 line; 2.9.1–2.9.3 are fork releases on top of it.