Repository navigation
Releases
Releases · mrHalfer/OSM2MC
1.5.26.11081
- Build wooden fences from OSM lines tagged barrier=fence (new csrlin
layer, code 82200000): lines that touch each other, site fences and
house walls stitch into one continuous fence; roadways, rails,
structures and water are skipped (export steps 3.577/3.58). - Furnished mansard in brick private houses (bed, bookshelves, table),
including houses whose gable stands only one or two rows above the
eaves; carpet compositions now also dress free space on the 1st floor. - Every private house gets 1-2 working stoves on the 1st floor, filled
through their block entities (fuel, sometimes raw food); the random
kitchen corner no longer adds extra furnaces there. - Basement mob nests now carry a real spawner block in the middle of the
room (zombie, skeleton, spider or the new witch type). - Basements are now about half of private houses (was roughly one in
three), and in the private sector spawners live only in basements. - Private houses split about half-and-half between brick and logs:
brick now also covers big houses with a short gable. - Fixed straightening of private houses rotated off the axes: wrong
rotation sign beyond 45 degrees and silently skipped north-south
footprints. - Fixed powered rails: the block state now carries powered=true, so
electrified rails boost minecarts right after the world loads. - Refreshed the application icon (resources/osmc.ico, osmc.png).
- Test scene: two touching barrier=fence ways added to the generated
fixture; verify gates updated (witch spawner, carpet counts, furnace
block entities).
1.5.26.11073
The boundary polygon (--clip) was only applied when writing the archive, so
the ground, all tree/turf/planting stages built every chunk of the whole
noise-data rectangle: a small clip took ~13 min and a big one ~39 min with
the peak memory of ~26 GB (51 GB of commit) mostly spent on ground metadata
of chunks that never reach the archive (and freed only after the zip).
- ExportRun::clipFillToBoundary() (called in buildGround after the forest
extension) keeps only the chunks intersecting the polygon, plus the chunks
of boundary buildings and small lakes kept whole (the same rules as
assembleChunks uses) plus a one-chunk ring. - The pre-clip set is remembered in fillAllChunks and read by the tree-crown
guards, so a boundary tree sticks its crown out exactly as before. - clipPath is rebuilt in the clip step and reset by assembleChunks before
adding the polygon again. - The "chunks written" log counter uses the pre-clip count as before.
The exported world is unchanged (the decoded region chunk payloads are
identical; aquatic fauna keeps the same count, the individuals may pick
other spots of the same lake). Small clip: 13 min -> 13 s, peak 0.42 GB;
big clip: 39 min -> 3.5 min, peak 8.6 GB. Update .agents docs to the
post-refactoring export/ layout.
1.5.26.11072
- osmc.pro: link curl by the exact gnutls file name (-l:libcurl-gnutls.so.4) when it exists; -lcurl follows
the build host's symlink and could record a CURL_OPENSSL_4 symbol requirement that clean Debian 11/12 and
Ubuntu <=22.04 cannot satisfy; the bundle always carries the gnutls build itself and rpath gives the
runtime the very same library - make_release_linux.sh: the dependency closure now also walks the executable (cat with a file argument
ignores the here-string input), the binary is always relinked (make does not see a LIBS-only change), the
purity check runs a real ldd loop (find -exec VAR=x cmd never ran ldd at all) and also fails on
symbol-version errors and on dependencies resolving outside the bundle past the allow list, a new check
rejects glibc requirements above the Debian 11 floor - the bundle gained libQt5Concurrent (a direct dependency the old closure missed) and no longer needs the
system OpenSSL/libcurl
1.5.26.11071
- Ported the application to Linux: POSIX build script (build.sh, qmake + make),
a libcurl-backed HTTP client for online tiles (app/httpclient_unix.cpp),
headless --nogui without a desktop session (picks the offscreen Qt platform),
bundled fonts via FONTCONFIG_FILE for the self-contained Linux bundle. - export/mcworldexporter.h: moved WorldOptions to file scope with a name alias
(GCC rejects a nested struct with default member initializers as a default
argument); missing includes for gcc in blocks.cpp, geom.cpp, tmcproject.h. - make_release_linux.bat/.sh: builds in WSL Debian 11 (the glibc 2.31 floor),
bundles Qt/GDAL/PROJ/plugins/fonts/resources and packs
OSMC--x86_64.AppImage (runs even without FUSE) plus
OSMC--linux64.tar.gz — an OSMC/ folder mirroring the Windows zip
(unpack and run OSMC/osmc). - run_linux.bat / run_linux_wsl.sh: launch the AppImage or an unpacked tar.gz
bundle from Windows through WSL for testing (OSMC_WSL/OSMC_DIR/OSMC_APPIMAGE). - CI (.github/workflows/ci.yml): build + osm tests on Windows and Linux; the
AppImage job builds in docker/Dockerfile.debian11 so artifacts keep the floor. - tests/harness/build_harness.sh and docs/porting-linux.md: the porting journal,
build environment and the traps found on the way. - GUI: removed the obsolete "Load the map" button — the preview now loads
automatically when the source is ready; the status line and hint texts updated,
ru/zh translations refreshed (zh also picks up strings left from the rename).
1.4.26.11061
Renaming
- The program is now called OSMC — in the user interface, the window title, the dialogs, the application description, the classifier warnings, the Russian translation and the READMEs (website: https://osmc.pro).
- Executable: osmc.exe (was tMC.exe).
- Application/settings name: OSMC — the first launch starts with the default settings (the old tMC settings are no longer read).
- Renamed project files: osmc.pro, osmc.ico, osmc.qss, osmc.qrc, osmc_ru.ts / osmc_zh.ts (and the embedded osmc_ru.qm / osmc_zh.qm).
- The project format is unchanged: .tmc files open as before.
- In the world: the structure-locating datapack is now described as "OSMC: strongholds, ancient cities and ruined portals located"; ATTRIBUTION.txt says "…made from OpenStreetMap data with OSMC".
- Build/test environment variables: OSMC_BUILD, OSMC_EXE, OSMC_GDAL.
Refactoring (internal, no behaviour change) - The main exporter was split into modules: export/mcworldexporter.cpp went from 18,660 to 67 lines (a thin Export() wrapper).
- Single-object voxelization: export/voxelize.cpp, class ObjectVoxelizer (22 stage methods, run() is a pipeline).
- World building: export/exportrun.cpp, class ExportRun (the call parameters and the shared state are members; 42 stage methods; run() is a 39-line pipeline: prologue → voxelization → ground → vegetation → furniture → villages → points → fences → platforms → chunk assembly → zip).
- Previously extracted: palette/blocks, geometry, sites, rails, NBT/regions, ground, building merging, facades, template loaders.
- The behaviour is verified byte-for-byte on 5 reference worlds (a town, two districts, the metro, a park): the content is identical; the only difference is the datapack description line (a consequence of the renaming).
- The full test suite (osm, shp, harness) is green.
Compatibility - Worlds, .tmc projects and OSM data stay compatible; only the program/settings name and the datapack label in the world changed.
1.3.26.11052
- Cemeteries: ~1.5x fewer stone crosses and jack o'lanterns, wider paths between graves
- Cemeteries: buried chests twice as common; buried loot 20% expensive / 80% middling,
ground chests mostly cheap loot with some middling - Cemeteries: the whole grave kit (gravestone and cross rows, stone crosses, pumpkins,
monsters, grave trees) no longer spawns on paved roadways, parking lots and station
squares, including roads that run through the cemetery polygon - Railway platforms: stone-brick half slabs now cover the whole platform polygon, not
only its rim; slabs also follow the paving restored above underground halls and tunnels
1.3.26.11051
- New point objects built on the map: a lighting mast (tower:type=lighting), a
street bench (amenity=bench), a small street sculpture (artwork_type=sculpture)
and a bus stop (highway=bus_stop) - a 5x3 three-wall booth laid along the
nearest car road, the open long side facing the carriageway, its floor level
with the ground. A new "rdcpnt" ground point source in the default 3D settings. - Cemeteries (landuse=cemetery): fenced grass plates the exporter turns into a
dark forest - tall dense dark oaks, stone crosses, carved pumpkins and lit
jack o'lanterns, zombie/skeleton/spider/witch spawns and loot chests, some
buried under the turf and marked by a headstone; crosses and pumpkins never
spill onto roads. - Rail platforms (railway=platform, recognized from mapped multipolygons) become
boarding platforms paved with stone bricks and raised by a half-block of stone
brick slabs; the slab yields its cell to lamp posts and street furniture. - Ordinary railway tracks run on a three-column-wide stone ballast (tram tracks
get stone bricks); powered rails come every tenth rail on straight sections
(was every twentieth) and sit on redstone, so they stay active. - OSM rules, point models table and default 3D settings updated accordingly
1.3.26.11041
- Station entrance: a stone-brick apartment staircase replaces the ladder
shaft (two-block flights, full-width landings, a lit ledge mid-flight);
the pit stands strictly inside the station building and the exit lands
flush with the ground; a smooth-quartz-and-iron frame with a hanging
lantern fronts the doorway; tiny entrance huts are swept away and get
the same street entrance; a building=transportation with subway=yes or
a nearby subway_entrance node is recognized as a station. - Station vestibule: the whole first floor of a station building is laid
out as an entrance hall - checker tiles, a ticket counter, vending
machines, lamp posts and info panels; now furnished with waiting
benches, a counter bell, waste bins, potted plants and posters; the
cells in front of the entrance doors stay clear. - Subway: tunnels 5 columns wide, floors 5 blocks deeper (a lone hall
17); only the nearest line bends to a station; long diagonals run as a
10-block straight plus a 20-block correction; tunnel walkways stand a
row over the rails. - Electrified rails never brake a cart: a redstone block under every
powered rail (subway, surface lines with electrified tags, trams). - Fixed large metro projects appearing hung near the end: quadratic
chest and forest-bbox scans removed, the progress bar got names for
the exporter's inner stages. - GUI: clicking the export-destination label opens the saves folder; the
Open file dialog starts in Documents\tMC; the Boundary tool is active
on map load; playgrounds host baby villagers instead of golems. - Fixed vestibule vending machines and a lab block building as plain
stone (minecraft:polished_blackstone was missing from the palette). - Russian and Chinese UI strings filled in (including the step names).
1.3.26.11031
- building=train_station (CODE 44330000): a decorated hall underground with
platforms, pylons, benches, a statue, a wall mosaic and hung lamps; its
floor sits at the metro level, so tunnels run through the hall and any
line within ~96 blocks bends to the station; lone stations dig the hall
without tracks - the ladder to the surface starts INSIDE the station building now: the
opening cuts through the lobby floor and is framed by a chiselled stone-
brick portal with a glowing lantern under its beam - station hall lamps over the metro tracks hang from the hall ceiling now
(they were left at the lower tunnel ceiling row and hung in mid air) - landuse=military: a fortified pad with walls, towers, gates and iron
golems guarding it - no benches inside sports court markings
- Boundary/Spawn button swap in the online map panel
- full Chinese translation (translations/tmc_zh.ts, --lang zh)
1.3.26.11021
- Subway lines (railway=subway + tunnel=yes) no longer fall through the
rules: the exporter digs a real tunnel ~10 blocks deep with a two-block
floor, a five-block interior with rounded top corners and a one-block
mixed stone masonry lining; lanterns hang from the ceiling every few
blocks. A subway without tunnel=yes stays ignored, as before. - Long diagonal OSM lines are straightened to straight runs of up to 80
blocks joined by right-angle bends; stations and curve breaks stay in
place, slopes never land on a bend (a sloped rail cannot turn). - Tunnel shells are built as a union over all tracks: crossing corridors
fuse into one opening, a crossing of different levels keeps the floor
slab of the upper tunnel, turn cells carve both cross-sections - no
stray pillars inside the corridor. - Surface railways with an electrified tag other than no get powered
rails too, with ordinary stone replacing the ground under the track. - Tram tracks (railway=tram) are electrified even without an
electrification tag, over stone brick ground.