# Inheritance


> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.  
> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)


VoxelCore compiles single-parent inheritance before content is published.

## Parent references

Within the same namespace, a local parent key can be used. Cross-pack references are valid only when the parent namespace is declared as a pack dependency.

## Current merge semantics

| Value | Behaviour |
|---|---|
| omitted scalar | inherit parent value |
| provided scalar | replace parent value |
| explicit `false` | replaces inherited `true` |
| list | explicitly supplied child list replaces parent list |
| `properties` map | recursive deep merge |
| render metadata | field-by-field merge |
| structured `custom_model_data` | semantic-key merge when parent and child are both structured |
| switch numeric ↔ structured CMD | child representation replaces parent representation |

Only one parent is supported per item.

## Validation

Compilation rejects:

- missing parents;
- self-cycles or longer inheritance cycles;
- duplicate ContentIDs;
- definitions that remain invalid after resolution, such as missing required material;
- illegal cross-pack references without declared dependencies.

The resolver includes dependency-chain context in compilation errors so invalid authoring fails at load/reload time rather than surfacing as a gameplay error later.

## Base definitions and list visibility

A definition can remain `bound: false` and serve only as an inheritance base. It still participates in compilation and the runtime registry, but current `/voxelcore admin item list` filtering hides it from the user-facing list.
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9