Building templates¶
build_structure builds a whole building in one call: site levelling, foundation, walls, storeys, rooms and doors,
walkable stairs, roof, furniture by room type, then a check of the result. Its layouts are built in (the
archetypes); what goes into them comes from templates you can edit:
| Template | What | Where |
|---|---|---|
| Styles | Material presets: wall, trim, roof, doors… | catalog/buildings.yml styles: |
| Uses | The room types of a building use, in order | catalog/buildings.yml uses: |
| Rooms | What each room type gets: furniture, blocks, points | catalog/rooms.yml |
| Style guides | Free text the AI follows in a zone | styles/<name>.md |
list_styles shows the result in a world: every style, use and room type with what it gets.
Where they're defined¶
Later ones win, by name:
- Foreman's bundled defaults, neutral on purpose (styles
brick,wood,stone,modern,industrial; usesoffice,school,hotel,apartment,dormitory,shop,workshop,basement). - The server's
plugins/Foreman/catalog/buildings.ymlandcatalog/rooms.yml. Foreman writes them with commented examples on first start. - A world's profile (
world_profile:styles,uses,rooms), kept in the world. See World context. - One building's arguments:
style+materials,useorrooms,catalog.
You can also ask the AI to write them: "add a timber style and a library use to the catalog".
Archetypes¶
| Archetype | Layout |
|---|---|
corridor |
Rooms on both sides of a 3-wide corridor, stair halls at the ends (depth 19 or more) |
sections |
An apartment block: sections stair cores, each between two flats of flat_width |
hall |
One large room |
house |
Rooms of 6 or more around the stairs (13 × 13 or more) |
Other arguments: floors, floor_height, roof (flat, gable, hip), basement, room_width, furnish, connect
(paths to the nearest roads), and the optional decay (wear, broken windows, vines), dark (boarded windows) and
clutter (debris that breaks sightlines, a path kept free).
Styles¶
styles:
timber:
extends: wood # start from wood, give only what changes
wall: white_terracotta
trim: dark_oak_log
pillar: dark_oak_log
roof_stairs: dark_oak_stairs
sandstone:
extends: stone
wall: smooth_sandstone
trim: cut_sandstone
base: sandstone
roof_stairs: sandstone_stairs
parapet: smooth_sandstone_slab[type=bottom]
Keys: wall, trim (floor edges, corners), base (foundation, bottom row), floor, slab (between storeys, flat
roofs), inner (inner walls), paint (bottom row of the rooms' walls), roof, roof_stairs (gable and hip roofs),
parapet (flat roofs, optional), window, door, entrance (front doors), stairs, pillar (corners, optional),
railing. Values are block states; none removes an optional one. A style without extends starts from brick.
Uses¶
uses:
library: [reading, reading, office, storage]
tavern: [dining, kitchen, storage, bedroom, bedroom]
Rooms get the types in order, repeating. basement is the use of basements.
Rooms¶
reading:
- {item: "block:bookshelf", count: 3-5}
- {item: "block:lectern[facing={facing}]"}
- {item: "block:oak_stairs[facing={back}]", count: 2-3, place: center}
- {item: "block:lantern", chance: 0.5}
guardroom:
- {item: "block:barrel[facing={facing}]", count: 1-2, point: "container:supplies"}
- {point: "spawn:guard", count: 1-2}
clutter:
- {item: "block:barrel[facing=up]"}
- {item: "block:hay_block"}
| Key | |
|---|---|
item |
furniture:<id> or block:<state>. {facing} is the side its front looks to, {back} the wall side. a\|b\|c after the prefix picks one per piece |
count |
n or a-b (default 1), for a room of about 50 cells: bigger rooms get more |
chance |
0..1 for each one (default 1) |
place |
wall (default: back against a wall, clear of doors and windows) or center |
point |
<type>:<kind>: records a point there for gameplay plugins. Without item, on a free floor cell |
Room types are free names. The archetypes use living, kitchen, lobby, corridor, stairwell and hall; uses
name the others. clutter, when defined, lists the blocks clutter scatters.
Style guides¶
styles/<name>.md is free text the AI reads (read_style_guide) before building where it applies: the mood, the
palette as block ids, sizes in blocks, rules, and the assets and furniture that belong there. Foreman writes
styles/example.md as a template on first start. Name the guide in a world's profile or a zone's theme so the AI
knows when to read it.
# Harbor district
## Palette
- Foundations: `cobblestone`, `mossy_cobblestone`
- Walls: `spruce_planks` with `stripped_spruce_log` frames
- Roofs: `dark_oak_stairs`, 1 block overhang
## Rules
- Houses 5–9 blocks wide, 1–2 floors, raised 1 block on a stone base
- Every door has a path to the quay