Blog 2026 04 27 - bh679/dungeon-train-mc GitHub Wiki
A huge day: the variant editor grew per-entry rotation, in-place previews, data-safety fixes, and a new wireframe renderer. CI landed, the first public release was prepped, carriage contents got a full authoring pass, the mod went live on CurseForge and Modrinth, and the release pipeline gained automatic beta-channel tagging. 15 PRs merged.
v0.73.0 โ released 2026-04-27
Download
dungeontrain-0.73.0.jar(935 KB) โ Release notes ยท All releases ยท Installation guide
Version HUD hidden on main; Z hotkey gated to editor plots (#99)
Two quality-of-life polish items shipped as v0.73.0:
HUD hidden on release builds. VersionHudOverlay and VersionMenuOverlay both short-circuit immediately when the jar was built on the main branch. Release jars are now clean โ no watermark in-game and no overlay on the title screen. Feature-branch and dev builds still show Dungeon Train v<version> (<branch>) as a sanity check.
Z hotkey gated to editor plots. VariantHotkeyClient now checks EditorStatusHudOverlay.isActive() before sending either the held-state packet or the tap-to-open-menu packet. If the player walks out of a plot while holding Z, a single release packet is sent so the server's right-click-to-add gating doesn't stay armed. Outside any editor plot, Z is a complete no-op.
The END_ROD particle ring that outlined variant blocks in editor mode is replaced with a GPU-batched client-side line-box wireframe. The new renderer fires at AFTER_TRANSLUCENT_BLOCKS using RenderType.lines(), so the cost per frame is constant regardless of how many flagged cells are clustered together. Toggling /dt editor overlay off clears the wireframe immediately. A new BlockVariantOutlinePacket carries the server-side snapshot to the client; BlockVariantPlot.allFlaggedPositions() provides the interface.
Each block-variant entry now carries its own rotation mode. Three modes are available: lock (use the source block's exact rotation), random (randomise on place), and options (cycle through a listed set). The editor shows a live preview of the selected mode while you author.
Clicking an entry name in the block-variant menu or the parts menu now previews that block or part in-place inside the plot. You can audition options visually without committing the change.
Carriage contents can now be authored directly from the editor. The SlotWindow variant has been moved to sit alongside the other content-authoring options in the menu hierarchy.
New bundled parts: additional roof and wall pieces plus a windowed carriage template. Existing content received polish updates.
Template variant discovery now uses a single unified classpath scan instead of separate per-type lookups, making it easier to add new bundled template types.
Tunnel paint no longer races with the chunk autosave: painting is deferred while an autosave is in flight, preventing occasional corrupted tunnel segments after long sessions.
Lost block-variant data (entries that went missing after certain editor operations) is now recovered correctly. In dev mode the variant sidecar is auto-promoted to the source tree so edits persist across restarts.
The block-variant context menu anchor froze at the wrong screen position when the player moved after opening the menu. The anchor is now recaptured on every click.
Pressing Remove in the editor now fully clears both the plot's block content and its surrounding bedrock cage, leaving no ghost geometry.
Paste operations carry the source block's texture through correctly. The lock-id indicator now renders on all six faces of the target block.
Breaking a block inside an editor plot now clears its associated variant entry, so stale variant data can no longer accumulate on air blocks.
Renaming a part now releases the old name immediately. Previously the old name stayed reserved until a restart, making it impossible to re-use within the same session.
Both menus now reject duplicate entries at insertion time, keeping variant lists clean without requiring a manual dedup pass.
Changes made to part-variant entries and carriage weights directly in-game are now auto-promoted to the bundled source tree in dev mode, removing the need to manually sync files after playtesting.
Two new GitHub Actions workflows ship with this commit:
-
build.ymlโ runs on every PR and push tomain. Caches the Gradle wrapper and Forge Gradle home, builds the mod, and uploadsdungeontrain-*.jaras a workflow artifact. -
release.ymlโ fires onv*.*.*tag push (and onworkflow_dispatchwith ataginput for reruns). Verifies the tag matchesmod_versioningradle.properties, builds the release jar, creates the GitHub Release, then callspublish-wiki.sh.
The mod logo was also refreshed to the 573ร574 source resolution.
scripts/publish-wiki.sh renders Downloads.md and Downloads-Archive.md from the GitHub Releases API, clones the wiki via WIKI_TOKEN, and pushes only when content changes (idempotent). The release.yml workflow emits a warning rather than failing if WIKI_TOKEN is not yet configured. The Gradle home cache-cleanup post-step is disabled to avoid spurious failures against the Gradle 8.4 wrapper.
LICENSE (MIT), mods.toml metadata, and the refreshed logo are all in place for the first public release.
After the wiki publish step in release.yml, two new steps fire:
-
"Check mod-platform publish prerequisites" โ emits a workflow warning (not a failure) if
MODRINTH_TOKEN+MODRINTH_PROJECT_IDorCURSEFORGE_TOKEN+CURSEFORGE_PROJECT_IDare not configured. Mirrors theWIKI_TOKENgating pattern. -
"Publish to Modrinth + CurseForge" โ uses
Kir-Antipov/[email protected]with required dependencies declared (valkyrien-skies,kotlin-for-forge), Forge loader, MC 1.20.1, andfail-mode: warnso a single-platform outage doesn't poison the workflow once the GitHub Release is already cut.
One-time manual setup: create project listings on both platforms, generate API tokens, and add MODRINTH_TOKEN, CURSEFORGE_TOKEN, MODRINTH_PROJECT_ID, CURSEFORGE_PROJECT_ID as repo secrets/variables. Once configured, triggering workflow_dispatch against any existing tag will retro-publish on both platforms.
The README now includes a Downloads section linking to the auto-published wiki Downloads page. Modrinth and CurseForge badges sit alongside the existing Build badge so visitors reach the right download immediately.
The release.yml workflow now derives release type from the tag's MAJOR component at runtime โ no manual workflow toggle required:
| Tag | GitHub Release | Modrinth/CurseForge channel |
|---|---|---|
v0.x.x (current) |
Pre-release | beta |
v1.x.x+ |
Release | release |
A new Compute release type from tag step uses pure bash parameter expansion (no jq/awk) and emits two outputs (type + prerelease) consumed by the GitHub Release and mc-publish steps. Every v0.* tag now publishes as beta, matching what the version number already implies. Existing releases (v0.72.1 on Modrinth) stay at their original channel; only future tags get the new treatment.
The README now leads with a friendly description of the mod, promotes Modrinth as the recommended download, adds a Links section (Wiki, Blog, original itch.io game), and moves the specs table below the top-of-page sections. Sections are now ordered: badges โ description โ Download โ Links โ Specs โ Build/Run โ Project conventions.
This post covers versions v0.58.0 โ v0.73.0 (all merged today).