
TifWorldGen
Build real-world terrain in Minecraft 1.20.1 from your own GIS GeoTIFF maps – heightmaps,
Оцените первым
56
2
Список изменений
Changelog
0.1.0-beta3 — dimensions, structures & reliable Distant Horizons pregeneration
✨ Added
- The End and Nether dimensions – vanilla generators as data-pack JSONs, included in the void world preset. Portals work out of the box (the cave generator already creates nether portals), so the game can be finished on a TifWorldGen world.
- Vanilla-stronghold generation on custom maps – strongholds now spawn via the vanilla
concentric-rings placement (28 strongholds, vanilla rarity) but are guaranteed to stay
inside the height map.
/locateworks consistently. - Ancient Cities can now generate – the deep_dark biome noise thresholds were above the noise output range (0% coverage); recalibrated so deep dark regions appear and ancient cities have a place to spawn.
🐛 Fixed
- DH pregeneration no longer loses chunks – Distant Horizons has an internal 500-item chunk update queue and silently discards the furthest queued chunks when it overflows. Large pregeneration runs lost most of their data (progress reached 100% while LODs were missing). The pregenerator now applies backpressure: workers wait until the DH queue drains below a safe level before each injection.
- DH injection failures are no longer silent – the result of every
overwriteChunkDataAsynccall is checked and the first rejections are logged with the DH error message; a read-only DH session is reported in chat and the log. - Stale DH level wrappers – the DH level wrapper is cached per
ServerLevelinstance and refreshed when the world changes; injections no longer disappear into a dead level after switching worlds. - Structures respect the underground floor – mineshafts and strongholds can no longer
anchor below the void floor (starts entirely below the floor are invalidated). Vanilla
anchoring code (
moveBelowSeaLevel) now sees vanilla-safeminY/seaLevelvalues, so pieces land at proper vanilla depths instead of up to 2000 blocks below the floor. - Nothing generates outside the height map – outside the map is the void biome, which
also prevents vanilla from placing structures and from
/locatepointing at empty spots.
🔄 Changed
- Underground depth rule – height maps with a high
minY(≥ 40) get stone, caves and bedrock only down to vanilla Y −64 with plain void below (same as a regular world). Deep maps (minY< 40) still generate across the full world depth. - Pixel-exact biomes –
edgeSmoothnow defaults to 0 (no border wobble); the height map min/max is computed exactly (full scan) instead of sampled, so biome band boundaries no longer shift by ~2 blocks. - Maps auto-align to the height map – forest and water maps scale independently on both axes (X and Z) to match the height map resolution, including different aspect ratios. The height map is the master; everything else adapts.
- LOD trees match the real world – the DH pregeneration builds simulated chunks with
the full pipeline (biomes → terrain → surface → trees). Trees use per-biome species and
density: old-growth taigas mix giant and regular spruces, birch forests have tall
birches, savannas get acacias; windswept hills are treeless and overall forest density
is roughly halved so canopies no longer merge into solid bands.
forestTyperules are respected (-1 forbids trees, 0 = auto, 1 = broadleaf, 2 = spruce). - LOD snow follows the seasons – simulated chunks use the current seasonal freeze line (snapshotted at pregeneration start) so the LOD visually matches the world, where Serene Seasons + Snow Real Magic place snow along the same line. Real terrain keeps the permanent (highest) line as a stable snow base.
- Faster DH pregeneration – chunk simulation runs on a worker pool (up to 8 threads) and simulated chunks are filled surface-only: stone is placed only ~8 blocks below the chunk's lowest surface instead of down to the world floor. LOD output is identical, chunk building is much cheaper.
- Automatic LOD invalidation – the chunk registry fingerprint (now v10) covers the pipeline version, snow lines, maps, slopes, Y range and all biome rules; chunks generated with an older config or code are regenerated automatically.
- All in-game messages, log output and code comments are in English (chat messages,
[TIFWORLDGEN]/[TIF-SEASONS]logs, build output). - Config screen – hover tooltips removed from the layer and configure buttons (they were rendered twice).
0.1.0-beta2 — stability & worldgen fixes
🐛 Fixed
- Worlds now save correctly on disconnect – map readers were closed before the
world finished saving, which could abort the save entirely, or silently complete
in-flight chunks as empty "ghost chunks" when leaving during terrain generation.
Readers are now released only after the world is fully saved (
ServerStoppedEvent). - No more ghost chunks – chunk generation refuses to run without a working heightmap reader: the chunk is left ungenerated and retried later, instead of being saved as empty terrain.
- Generation errors can no longer destroy chunks – every generation step (terrain, biomes, surface, caves, structures, decorations, mob spawning) is guarded: on an unexpected error the chunk keeps safe fallback terrain and the error is logged with the chunk position and a full stack trace (log messages in English).
- Color Mapping screen at high GUI scale – the tab no longer overflows the screen at GUI scale Auto / 4 (small windows). Widgets stay vanilla-sized, long buttons adapt their width, overlong map names are shortened with "…" and show the full name in a tooltip, and the whole tab scrolls when the window is short.
✨ Added
- River and ocean biomes from the water mask – narrow water areas get a river biome, large lakes get an ocean biome (kelp-friendly). River depth adapts to the width of the water area.
- Unified map list (
maps[]) – every map is an equal entry in one list; no more "custom vs fixed" split. Old configurations migrate automatically on first start.
🔧 Changed
- Map layer generators always read through the current map reader instance (no stale references after a config reload).
- Slovak in-game log messages with a unified
[TIFWORLDGEN]prefix. - Documentation and in-jar descriptions updated.
0.1.0-beta1 — first public beta
✨ Highlights
- Built-in pure-Java GeoTIFF engine – the mod no longer depends on GDAL or any native library. Reads classic TIFF and BigTIFF (tested with a 14 GB heightmap, designed for 100 GB+ files), stripped and tiled layouts, LZW and Deflate compression. Verified pixel-perfect against GDAL before the switch (336,959 sampled pixels, 0 differences).
- Zero-install experience – no DLLs, no system packages, no
.sofiles. Works on Windows, Linux and macOS out of the box: just drop the jar intomods/. - Dedicated server support – create worlds with
level-type=tifworldgen:void_presetand manage everything in-game (verified on a production Forge server):/tifworldgen info– loaded heightmap size and path/tifworldgen maps– configured maps overview with missing-file check/tifworldgen config– effective configuration overview/tifworldgen reload– reload config and map readers without restart/tifworldgen set <key> <value>– change any setting in-game (saved + applied instantly)/tifworldgen map add/remove– register map files without editing JSON- works over RCON for headless servers
- Portable configuration – map paths now support relative paths (resolved against the
game directory on both client and server). Configure everything comfortably in
singleplayer, then copy
config/tifworldgen.jsonand thetifworldgen/maps/folder to the server – no edits needed. - Single-file distribution – the all-in-one jar bundles the library inside (Forge JarJar), so players download exactly one file.
🔧 Changed
- Rewritten map layer readers (
HeightMapReader,WaterLayer,ForestLayer,StructureLayer) on top of the new engine – also removes the thread-local dataset handling and its file-handle leaks. - GDAL completely removed from the repository, build and in-jar descriptions.
🔒 Privacy
- Fully offline: no telemetry, no analytics, no network communication of any kind. The mod only reads the map files the player/admin selects.
📦 Upgrading from alpha builds
- Delete the old
tifworldgen/native/folder from your game directory – it is no longer used. - If you configured maps by absolute paths, they keep working; relative paths (relative to the game directory) are now recommended.
Файлы
tifworldgen-0.1.0-beta3-all.jar(397.38 KiB)
ОсновнойМетаданные
Канал релиза
Beta
Номер версии
0.1.0-beta3
Загрузчики
Forge
Версии игры
1.20.1
Загрузок
22
Дата публикации
05.11.2026
