How Structures was built
Raw game files read
worldgen/structures.jsonworldgen/villages.jsonworldgen/storystructures.jsonworldgen/hookgeneratedstructures/*.json
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).