What is inside a .mcstructure
| Tag | Type | What it holds |
|---|---|---|
format_version | Int | Structure format revision, 1 in current files |
size | List of Int | X, Y, Z dimensions of the captured volume |
structure_world_origin | List of Int | Where the structure was captured in the world |
structure | Compound | Everything below lives here |
structure.block_indices | List of Int[] | Two layers of palette indices — normally blocks and waterlogging; -1 means "leave whatever is there" |
structure.entities | List of Compound | Entities captured with the structure |
structure.palette.default.block_palette | List of Compound | Every distinct block state: name, states, version |
structure.palette.default.block_position_data | Compound | Block entity NBT keyed by the flat index of the position |
Indices in block_indices run X, then Z, then Y — a flat index of (x * sizeZ + z) * sizeY + y into the palette list. That mapping is what lets you fix a single mis-set block without regenerating the structure.