Repository navigation
Editor Templates
A template is one saved train piece. Build it inside its plot, hit save, and from then on the train can spawn it. This page covers the six template kinds and how to author each.
Every plot lives at y=250, wrapped in a bedrock cage. The cage marks the
saveable footprint — anything you place inside is captured on save; anything
outside is ignored.
| Category | Where the plots are |
|---|---|
| Carriages |
+X axis, 20 blocks apart |
| Carriage parts | Beneath each carriage plot — kind on Z, name on X
|
| Contents |
z=80 row |
| Tracks |
Z=74 row, 5 blocks apart per template |
| Pillars | Stacked on +Y per kind |
| Tunnels | Section and portal stacked on +Y
|
Use the X menu's Enter ▸ submenu to jump straight to a category, or to a
specific template within it.
The same flow works for every category:
-
Enter the category. Open the editor (title screen or
X→ Editor) — you land in Carriages. Switch categories fromX→ Enter ▸. -
Create a new template.
X→ New opens a source picker:- Blank — empty plot, flat floor only.
- Current — copies the template you're standing in.
- Standard — copies the built-in baseline for that category.
Type a name (letters, digits, underscores, up to 32 characters) and hit Enter. You're teleported into the new plot.
-
Build. Place and break blocks freely inside the cage.
-
Save.
X→ Save writes this plot. Save All writes every plot in the category in one go, skipping empty ones.
To edit an existing template, walk into its plot (or use Enter ▸) and start placing blocks. Save when ready.
Wheat, carrots, potatoes and beetroot save and place like any other block, and a farm carriage works without lighting it: inside a carriage, crops don't need light to stay planted, so they survive at whatever growth stage you saved them.
Two things still follow vanilla rules:
- They need farmland underneath. Break the soil under a crop and it pops, same as anywhere else.
- They need light to grow. An unlit farm carriage holds its crops at the age you saved them forever. Put a lantern in if you want them to advance — so save them fully grown, or light the carriage.
Only crops get the no-light exemption. Sugar cane still needs water beside it and cactus still needs sand with nothing adjacent, so those can still break on placement if the surrounding build doesn't satisfy them.
Outside the train nothing changes — a crop in a dark room in the normal world still dies as it always did.
-
Rename —
X→ Rename drops into a text field with the current name. Submit to rename. -
Remove —
X→ Remove deletes the template, wipes the plot, and teleports you back to the default. -
Remove on a template with sub-variants (a contents id or a dimensional
carriage that heads a group) asks what happens to them first, since their
weights, gates and Stage links live only in the parent's group file:
- Delete all — the sub-variants go with the parent.
- Delete parent & unparent — each sub-variant becomes a top-level template, keeping its weight, gate and (first) Stage link. You land on the first one.
-
Delete parent, parent to '' — the first sub-variant takes over
the group (its member weight becomes the new
selfWeight) and inherits the parent's top-level weight, gate and Stage. You land in it. A chat line (Deleting …) appears while the row is re-laid out. Move to… and the picker's parent/unparent also land you in the moved plot.
Built-in templates like standard and flatbed can't be renamed or removed.
Saving them under a new name forks — the built-in reverts to its bundled
version, your edits become a new custom template.
- Reset — restores the plot from the last save, discarding unsaved edits.
- Clear — wipes the plot to air but keeps the template on disk. Use this to start the geometry over without losing the name and its settings.
Both ask for confirmation.
Mirroring reflects your edits across the centre of the plot, so you build one half (or quarter, or octant) and the rest is filled in for you. It's a build-time convenience — the saved template and everything generated from it are identical to building both sides by hand.
Open X and the Mirror row shows three per-axis toggles:
| Axis | Reflects | Typical use |
|---|---|---|
| X | length, front ↔ back | symmetric carriages, tunnel ends |
| Y | height, floor ↔ ceiling | vaulted or symmetric ceilings |
| Z | width, left ↔ right | most train geometry |
A toggle is green when on, grey when off. With an axis enabled, every block you place or break is reflected live into its mirror cell(s) — no save needed, and you can build from either side. Y is a best-effort vertical flip: slabs, stairs, doors, and trapdoors flip top-to-bottom so they sit the right way up (exotic blocks are copied as-is).
Mirroring is off by default on carriages, parts, contents, tracks, and pillars — enable just the axes you want, per template. Tunnels default to X + Z on (they're symmetric on both horizontals), so a fresh tunnel mirrors as you build; toggle them off for an asymmetric tunnel.
The axis toggles are saved with the template. You can also set them from chat — see Commands ▸ Mirroring.
The outer shell — walls, roof, doors. Three built-in templates ship with the
mod (standard, windowed, flatbed) and you can add as many custom ones as
you like.
Reusable pieces overlaid on the carriage shell at spawn time, so one carriage template can have different floors, walls, roofs, or doors per car as the train rolls past you.
| Kind | What it covers |
|---|---|
| FLOOR | The interior floor. |
| ROOF | The interior roof. |
| WALLS | The two long sides. Build one side — the other mirrors automatically. |
| DOORS | The two short ends. Mirrored. |
Part plots sit beneath each carriage plot — kind picks the row (Z), name picks
the column (X). The status HUD reads Editor: Carriages / Parts | <kind>:<name>
while you're in one.
The reserved name none means "stamp nothing for this kind" — handy for an
open-sided variant.
A carriage template lists which parts it can use, per kind, with weights. The Part Variant Menu is how you edit that list: when its toggle is on (default), looking at a part region inside a carriage plot pops up a panel showing the candidate parts. Click a name to preview it stamped on the carriage. Use the panel's weight cells to bias the pick, and the Add / Remove / Clear toolbar to manage the list.
If a carriage has no parts list, it renders exactly as built — no overlays.
The interior of a carriage — chests, decor, fixtures, mob spawners. Each spawned carriage rolls a contents template independently from its shell, so the same carriage type can have different interiors across the train.
Contents plots sit at z=80. When you enter a contents plot, the chosen
carriage shell is stamped around you as non-editable context — only the
interior saves.
Flatbed carriages have no walls, so they're skipped by the contents picker (any interior would float visibly).
Some interiors only make sense inside a specific carriage — a farm interior
only fits the pen carriage. Open the carriage editor's X menu → Contents
▸ to toggle each registered content on or off per carriage. Off means "never
spawn this content in this carriage."
The bridge under the train.
- Tracks — open-air rail tiles, 4 blocks long, tiled along the train axis.
-
Pillars — column sections that descend wherever the bridge floats over
air. Three kinds:
top,middle,bottom. Plusstairs— an adjunct that spawns alongside roughly every 40 blocks of bridge. -
Tunnels —
section(interior) andportal(entrance/exit) templates.
Get there via X → Enter ▸ → Tracks. Inside the category, Enter ▸
drills into the kind picker (track / pillar top / pillar middle / pillar bottom
/ stairs / tunnel section / tunnel portal). New, Save, Rename, and Remove work
exactly like carriages — the only difference is each template lives under a
kind.
A portal_room template is the space behind a portal carriage's door. Beyond
the ordinary template controls, its plot carries a Walls row deciding what
the room does at its own edges:
- Bedrock (default) (called Bedrock Lock before 0.1052) — the room, its two corridors and the plugs behind them are sealed in a one-block skin. No repetition. Bedrock unless you pick something else — see The seal's block.
- Endless Repetition — the whole room repeats as a grid of copies around the base tile, more appended as the player walks toward an edge. Each copy is the room exactly as you built it — see Room Walls for the older merged look.
- Endless Open — the same grid, but only the floor and ceiling planes repeat. No side walls at all, so it reads as an open plain rather than a hall of rooms.
- Void — Bedrock with the skin taken away (called Bedrockless before 0.1052): no repetition, and empty space out to the fog.
The two modes that seal — Bedrock and Chunk Dimension — grow a Lock row directly under Walls, showing the block the shell is made of. Hold the block you want and tap the row; it takes whatever is in your hand. Bedrock is the default, so a room you never touch is sealed exactly as it always was.
The choice covers the whole shell, not just the walls you can see: the skin one block outside the room box, the shell around each corridor, and the plugs behind their dead outer doors.
Tapping with an empty hand sets it to nothing at all. That genuinely unseals the room — no skin, no corridor shells, no plugs — which is what you want for a room meant to be dug out of, and not what you want by accident. It is not the same as Void, which additionally sweeps empty space out to the fog and hides the room's edge behind it.
Portals already standing keep the settings they were built with, so a change here shows up on the next pair the train reaches.
Either endless mode grows a Copies row under Walls, deciding how each appended tile is rolled from the template's block-variant sidecar:
- Exact (default) — every tile is the base tile's roll, block for block.
- Dynamic — each tile rolls its own. Under Endless Repetition that varies everything in the room, container contents included; under Endless Open the tile is only the floor and ceiling, so it varies those two planes and there is no per-copy loot to vary.
-
Single (Endless Open only) — the appended tiles stop being copies of the
room at all: their floor and ceiling are one block you choose. The room you
arrive in keeps everything you built; only the ground stretching away from it
goes uniform. The Floor and Roof rows take whatever you are holding —
a block, a variant copied from a cell, nothing at all for air, or (since
v0.928.0, PR #1480) a
filled bucket, so the plain can be open water underfoot or a sheet of lava
overhead. A liquid plane joins up cleanly across tile edges. Since v0.931.0
(PR #1483) the Floor
row also carries a
[-] N [+]depth: the floor is laid that many blocks deep from the tile's bottom, so a water floor becomes a pool you can dive into and a stone one solid ground you can dig. One is the old single plane; the room's height caps it so the roof and one open row always survive. The X menu has a matching Floor height row, and/dt editor portals copies floor height inc|dec|<n>does the same by command. A liquid floor is always laid on a solid bed, so a pool over a hollow never drains.
Endless Repetition grows a Room Walls row deciding whether the tiler may reshape the room's own walls:
- Kept (default since v0.799.0) — every copy is the room exactly as you built it. Nothing is carved between neighbours, nothing is bricked up at the edge of the standing field, and the plane at each corridor mouth is the copy's own end wall — air where you drew air. Until the neighbouring copy lands (a tick or two), an open-sided room shows the basement rock beside the doorway rather than an invented wall.
- Merged — what every room did before v0.799.0: the wall between two copies is carved open where both sides are already open, so the grid reads as one continuous hall; a face with nothing beyond it is closed with the block mirrored from the opposite wall; and the corridor mouth's plane is filled from the room's own blocks — its end wall where it has one, its floor block where it does not.
Kept became the default because Merged invented walls the author never drew:
an open-sided room ended up with a plane of its own floor block boxing in the
way back to the train, and stray mirrored blocks at the frontier that vanished
a tick later. Rooms that want the merged look set it here; it is written into
the room's mode tag as an explicit sealed segment. Endless Open has no side
walls to keep, so the row does not appear there.
Dynamic is deterministic per position, not per stamp: a tile's roll is a pure function of the world seed, the pair and the tile's place on the grid. Walking back to ground you have already crossed finds it as you left it, chests included — an endless room is not a loot machine.
Single adds a Block row under Copies. Hold the block you want and tap the left half of it. Holding a variant clipboard — copied from a cell with the Block Variant menu's Copy button — brings that whole candidate list over instead.
Tap Edit on the right of the row and the Block Variant menu opens on it, in front of you rather than on a cell. It is the same menu that authors every other cell in the game, so the plain can carry weights, rotation modes and difficulty bands, and its Copy button puts the variant back on a clipboard that pastes onto an ordinary cell.
Air is a candidate. An air entry in the variant leaves that cell empty, so a variant of stone and air gives a plain with gaps in it, and one of air alone gives no floor at all. That is the only way to ask for holes, so nothing filters it out.
Single is offered under Endless Open alone. An Endless Repetition tile is a whole room, and one block for a whole room is a solid cube — the Copies row skips the option there, and a room carrying it from an earlier setting reads back as Exact.
The variant lives in a <room>.copies.json sidecar beside the template, in the
same shape the block-variant sidecars use.
Endless rooms are also asked about Exits — how many extra corridors back to the train are scattered through the copies. Endless Repetition lays them by default (it is the shape you get lost in); Endless Open, which you can see across, defaults to none.
Every portal room carries a Sky row deciding whether it is lit as though it stood outdoors, and under which sky:
- Off (default) — no lift. The room is lit by whatever its own build gives it, exactly as every room was before this existed.
- Daylight — full daylight, held at noon however late it is on the surface.
- Day/Night — daylight that follows the world clock, so the room darkens at dusk as outdoors would. In the editor, where the clock otherwise rests at noon, standing in such a plot runs it at 10× so you can watch the whole cycle in about two minutes; step out and it is noon again.
- Nether — dim and tinted toward the Nether's red, with the fog coloured to match.
- End — pinned, tinted toward the End's violet, with the fog darkened as the End's is.
The light eases in as you step into the room and eases back out as you leave for the corridor home, rather than switching at the threshold. The corridors themselves are never lit — the sky belongs to the room's own box.
It lifts the lightmap; it is not real skylight. Vanilla stores one sky-source height per column and floods downward from it without consulting what is in the way, so a room cannot be given a sky of its own without taking one away from the world above it. What the setting does instead is raise each player's own lightmap while they stand inside the room. Nothing is written to the world, no light is stored, and nothing about mob spawning changes — nor the clock, outside the editor's Day/Night case above.
The practical consequence is that the lift is flat: vanilla's own light
values still decide what is bright and what is shadowed, so the setting flatters
a room that was built lit rather than turning a dark one into an open field. It
pairs best with a room whose ceiling is already open, glass, or a skybox block.
Of the shipped rooms, miniword — which has a full skybox lid — is the one that
uses it.
Set it from the plot panel's Sky row, from X → Sky, or from chat with
/dungeontrain editor portals sky <next|none|day|cycle|nether|end> while
standing in the plot. Like the other room settings it is stored in the
template's weights.json. A server owner can switch the whole mechanism off
with the portalRoomDaylight setting.
Every portal room carries a Fog row deciding whether the room hides its boundary behind fog:
-
Auto (default) — whatever the walls mode says. Endless Repetition,
Endless Open and Void fog; Bedrock and Chunk Dimension do not.
The row shows what Auto resolves to under the current walls, e.g.
Fog: Auto (On), so you can read the effect without tapping it. - On — fogged whatever the walls do. A sealed room built to be murky.
- Off — never fogged, even in an endless room built for long sightlines.
Auto is never written to weights.json, so a room that has never been given
the setting round-trips exactly as it did; On and Off are stored as the
thirteenth segment of the room's mode tag (…/minecraft:bedrock/off). A
forced-on fog in a sealed room has no ramp and a radius tied to the room's
size, as the endless modes have at their own walls.
Set it from the plot panel's Fog row, from X → Fog, from the editor
screen, or from chat with
/dungeontrain editor portals fog <next|auto|on|off> while standing in the
plot — or /dungeontrain editor portals room <name> fog … from anywhere.
Since v0.840.0 (PR #1361).
The editor screen's info panel (the sheet under a selected build's preview) carries two rows for sizing a build up before testing it:
-
Lights — one small icon per kind of light-giving block with its count beside it, most
common first. A wall torch and a standing torch count as one torch; hover for the light level.
A build with none reads
0. -
Loot — opens with the build's total loot value, then one small icon per kind of block
that hands out loot, most valuable first, with its count beside it. A purple corner mark means
the block only appears through a block variant, so it may not
spawn. Hover an icon for where its loot comes from (an authored pool, a loot prefab, items saved
in the block, a vanilla loot table, or a block default like the chiseled bookshelf's
bookshelfprefab), its chance, its value, and its best items as icons.
Click anywhere on the Loot row to jump to the Loot pages (after the settings pages in the panel's pager): every item the build can give as an icon grid, most valuable first, paged so all of them show. Hover an item for its value and the blocks that can hold it.
The value is a comparison score, not a price — it reuses the gear ranking the rest of the mod uses (combat stat + rarity + enchantments), scaled by how full a container rolls and by the chance the block is there. Use it to compare builds against each other. It reads the loot sidecars on your own disk, so builds from the relay show only loot saved in the blocks themselves.
Since v0.935.0 (PR #1495).
Click the number on the info panel's Blocks row (or page forward) to open the Blocks page: every block the build uses as an icon grid with its count, most used first. Block-variant candidates count as uses too.
Standing in the build, click a block to replace all of it with the block in your hand — stairs, slabs and logs keep their facing, block-variant candidates are re-skinned as well, and the whole swap is one undo step. It is the quickest way to copy a model and re-skin it.
A re-skinned block keeps its own cell until you save. Swap the stone bricks to oak planks in a build that already had planks and the page shows two planks cells — the old planks and the new — so you can still re-skin either one on its own. Saving merges them back into one cell per block. Undo and redo (the icon row, or Ctrl/⌘+Z and Ctrl/⌘+Y, which work with the screen open) keep the cells in place.
Away from the build the page shows the saved file's blocks to look at; clicking one reminds you to go there first. The same re-skin is available in-world through the V template-blocks menu, which merges by block straight away.
Since v0.1054.0 (PR #1694).
Each template has a weight between 0 and 100 that biases the spawn pick.
Default weight is 1 (uniform random). Set standard to 5 to make it
dominant; set windowed to 0 to retire it without deleting it.
Stand in the template's plot and use X → Weight [-] (N) [+]. Left and
right cells nudge by 1. The middle cell drops into a typing field for an exact
value.
When a plot has a weight set, the status HUD grows a second centred line
weight = N — orange when zero.
A weighted template can be limited to where on the run it appears. Two independent gates sit beside Weight:
-
Level band — a min/max Diff-Level range. A
template with min
5won't appear until the run reaches Diff-Level 5; maxall(the default) means no upper bound. - Phase set — which of the four worldgen phases the template may spawn in: Overworld, Nether, Void, End. (Phase is the band the corridor is passing through, not the Minecraft dimension — the whole train rides in the overworld.)
Stand in the plot and open X: Min Lv [-] (N) [+], Max Lv [-] (N) [+]
(decrement past 0 to reach all), and a Phases drilldown with a checkbox per
phase. The floating world-space panels carry the same controls per row — the
≥ / ≤ level cells and four phase letters O N V E (green = on) you click to
toggle.
The generator filters the weighted candidate pool by both gates before the pick, so a template that's out of band or out of phase simply isn't a candidate there; if a gate would empty the pool the unfiltered pool is used so the train never stalls. Picks stay deterministic.
The first content built on this ships in the Nether band: blackstone track
tiles, tunnel sections, and tunnel portals (nethertracks, darktunnel,
darkportal) gated to Nether-only, with the default stone-brick variants
gated to Overworld/Void/End so the dark set is exclusive there.
Gates are saved with the template (in its weights.json). Set them from chat
too — see Commands ▸ Spawn gating.
Setting the same band on template after template gets old fast. Link them to a Stage instead — a named gate many templates share, so you tune the band once and everything on it moves together. The Stage cell sits beside Weight on every row; templates start out Custom, using the inline gate described above.
| Goal | Steps |
|---|---|
A new carriage like windowed but with a glass roof |
Stand in windowed. X → New → Current → type a name → Enter. Replace the roof blocks. X → Save. |
| Open-sided carriage | Look at a walls region inside your carriage plot. The Part Variant Menu appears — Add → none to the walls slot. |
| Rebalance which carriages appear most | Stand in each carriage's plot. X → Weight, nudge with [-] / [+] or type an exact value. |
| A carriage type that only spawns farm interiors | Stand in the carriage plot. X → Contents ▸ → toggle off everything except the farm contents. |
- Stages — share one spawn gate across many templates.
- Block variants — randomise blocks inside a single template.
- Container variants — fill chests with rolled loot.
- Commands — every slash command, in one place.
- Packaging — share your library or submit it to the mod.