跳转至

数据驱动注册原理

文件结构、字段、工厂和属性扩展见 API reference。

从内容描述到注册树

数据包描述方块、物品和方块实体,解析层只构建原始内容树。属性解析器将描述转换为属性变换, 工厂把类型描述转为现有注册节点,最后把虚拟注册组挂到模组的主注册树。 数据内容复用原有注册事件分派,不维护第二套并行注册体系。

flowchart TD
    Resources[模组内容描述] --> Parse[解析与原始内容树]
    Parse --> Properties[方块与物品属性转换]
    Properties --> Factory[类型工厂]
    Factory --> Tree[虚拟注册组]
    Tree --> Dispatch[现有注册事件链]

解析、属性扩展和对象构建分开,使自定义内容可以复用默认属性处理,也让 Java 注册与数据注册共存。 创意标签页仍通过既有修饰路径注入。复杂行为保留在代码侧,内容只选择行为工厂和参数。

初始化顺序

内容树惰性构建发生在首次注册分派,而非任意资源扫描时。这样工厂类型和自定义属性解析器能先随 上下文类初始化完成,解析时不会因为静态注册尚未发生而缺少工厂。

组的层次关系用于组织和共享属性,但组继承并不代表所有物品属性都已完整合并。某些类型、循环依赖 检测、DataFixer 类型以及更复杂的物品组件仍属于实现边界,不能仅凭描述文件存在推断已支持。

发现、重载与来源所有权

索引把注册期内容与可重载内容分开。两阶段共享路径校验、索引解析和内容形状的处理, 分别交给注册分派与重载编排;每种重载类型由宿主扩展声明,不由编排器硬编码。 内容候选按确定顺序合并,同一有效标识采用后写覆盖,资源包覆盖也按包栈顺序处理。

重载周期先清理资源来源的定义,再收集、解码和注册候选,最后复核跨定义的依赖。 代码注册的状态机和片段由代码侧持有,在资源重载时保留,并优先于同名资源定义。 诊断按来源与阶段归属保存,错误边界限制在对应文件或 handler,使其他内容仍能继续处理。

接口、schema、内容创作和扩展指南统一位于 数据驱动 API 专题。