Blame
|
1 | # Architecture |
||||||
| 2 | ||||||||
| 3 | ||||||||
| 4 | > **Documentation baseline:** VoxelCore `main` at `452b569` ยท 14 September 2026. |
|||||||
| 5 | > **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore) |
|||||||
| 6 | ||||||||
| 7 | ||||||||
| 8 | VoxelCore separates **authoring**, **compiled definitions**, **render allocation**, **runtime publication** and **platform adaptation**. That separation is the central design decision of the current rebuild. |
|||||||
| 9 | ||||||||
| 10 | ```mermaid |
|||||||
| 11 | flowchart TD |
|||||||
| 12 | A[Content pack files] --> B[ContentPackDiscovery] |
|||||||
| 13 | B --> C[ContentLoader + ItemDefinitionParser] |
|||||||
| 14 | C --> D[ItemInheritanceResolver] |
|||||||
| 15 | D --> E[ItemDefinitionCompiler] |
|||||||
| 16 | E --> F[Immutable ItemDefinitionRegistry] |
|||||||
| 17 | F --> G[RenderAllocationRegistry reconcile] |
|||||||
| 18 | G --> H[Platform preflight validation] |
|||||||
| 19 | H --> I[Atomic ContentSnapshot] |
|||||||
| 20 | I --> J[ItemManager] |
|||||||
| 21 | J --> K[VersionAdapter / ItemPlatformAdapter] |
|||||||
| 22 | K --> L[Minecraft ItemStack] |
|||||||
| 23 | F --> M[JavaPackCompiler] |
|||||||
| 24 | G --> M |
|||||||
| 25 | M --> N[Deterministic resource-pack ZIP] |
|||||||
| 26 | ``` |
|||||||
| 27 | ||||||||
| 28 | ## Stable identity |
|||||||
| 29 | ||||||||
| 30 | `ContentID` is the gameplay identity. It is namespaced, normalised and independent of: |
|||||||
| 31 | ||||||||
| 32 | - model path; |
|||||||
| 33 | - numeric Custom Model Data; |
|||||||
| 34 | - structured Custom Model Data indices; |
|||||||
| 35 | - generated pack files. |
|||||||
| 36 | ||||||||
| 37 | That allows rendering schemes to change across Minecraft generations without changing the identity consumed by gameplay code. |
|||||||
| 38 | ||||||||
| 39 | ## Immutable publication |
|||||||
| 40 | ||||||||
| 41 | Authored YAML is not retained as mutable runtime truth. The loader compiles it into immutable definitions, reconciles render allocations, validates them against the active platform, then publishes a complete `ContentSnapshot` through the runtime. Reload creates a candidate snapshot separately and only replaces current state after validation succeeds. |
|||||||
| 42 | ||||||||
| 43 | ## Adapter boundary |
|||||||
| 44 | ||||||||
| 45 | Common code depends on `VersionAdapter`/`ItemPlatformAdapter` rather than embedding all server-version details in item definitions. Version modules provide their implementation through `PlatformProvider` service registration. |
|||||||
| 46 | ||||||||
| 47 | ## Pack compiler boundary |
|||||||
| 48 | ||||||||
| 49 | `voxelcore-pack` consumes the same definitions and render allocation authority used by runtime item creation. This avoids a class of bugs where generated assets and server-side item metadata allocate different render identifiers. |
|||||||
| 50 | ||||||||
| 51 | ## Current module shape |
|||||||
| 52 | ||||||||
| 53 | See [[Products/Voxel-Horizons/VoxelCore/Module-Reference]]. The current repository has common, pack, plugin and six version/distribution modules, including exact Minecraft/Paper 26.2 support. |
|||||||