How Structures was built

Raw game files read

Processing

All 4 structure registries (plain structures, villages, story structures, and the separate "hook-generated" family) are normalized into one common shape. A structure only references its schematics: each entry's schematic path is often a glob itself (e.g. ruins/undergroundruin-small-*.json), resolved against the schematic files of the structure's own domain, and the structure keeps the matching schematic ids plus its own weight and quantity for that reference. Everything about the files themselves (dimensions, block inventory, the 3D view) lives on the schematics pages.

Spawn chance is sometimes a relative weight, not a probability. When several entries share one code (e.g. a structure's own small/medium/large size variants), chance is a weight among those siblings and can be well above 1 -- shown as a labeled raw weight rather than a nonsensical "1300%"-style percentage in that case.

Cross-referencing which structures contain a given block/item code (used by every item page's "Found in structures" section, and precisely by the tapestries page) is a flat pass over every schematic's BlockCodes dictionary -- it confirms a code is somewhere in a matching schematic, not where or how many times, except for tapestries/wallcarvings specifically, which get a real per-instance decode (see the tapestries source page).

Pipeline code