Skip to content

feat: 共享 modid 注册管线并扩展 Group 配置 - #1

Merged
LeeQianXi merged 2 commits into
26.1.2from
codex/registration-pipeline-group
Oct 28, 2026
Merged

LeeQianXi merged 2 commits into
26.1.2from
codex/registration-pipeline-group

Conversation

@LeeQianXi

Copy link
Copy Markdown

问题与目标

同一 modid 的多个 Core 应共同提交注册和 datagen 内容,避免独立管线处理时覆盖输出。Group 的固定配置选项也难以复用已有 Builder 能力,需要在保留现有用法的基础上开放扩展点。

改动内容

  • 按 modid 共享注册队列、条目索引、回调、完成状态和 datagen 数据,由首次 Core 分发事件,多个 Core(含派生类)的贡献汇入同一管线。
  • 稳定默认语言 ProviderType 的共享身份,防止同名 provider 替换导致语言回调丢失。
  • Group 新增 configureBlock、configureItem、configureFluid、configureBlockEntity,回调按声明顺序追加。
  • 开放 protected apply*Defaults 方法,保留自定义 Builder 及其父类型;支持 build(factory) 返回自定义 Group。
  • 构建 Group 时复制标签和配置回调列表,修复后续修改 Builder 会改变已有 Group 标签的问题。
  • 增加真实注册与 datagen 回归验证,并面向模组开发者更新多 Core、Group 和多语言使用文档。

兼容边界

  • Core 创建仍返回新对象;同 modid 共用管线,不合并重复资源 ID 的定义。
  • Core 的 Builder 默认配置和默认创造标签页仍属于实例;事件优先级和错误处理沿用首次 Core。
  • Group 原有入口和无参 build() 保持兼容。应用顺序为 Core 默认配置、Group 内置默认配置、Group 回调、条目链配置;追加型操作仍会累计。
  • Group 回调作用于直接创建的对应 Builder。BlockItem 和流体桶通过方块/流体 Builder 的子条目配置方法处理。

验证结果

  • ./gradlew test check:通过,包含 Spotless 检查。
  • 单元测试报告:125 项、0 失败、25 跳过;跳过项不计为已运行验证。
  • 9 个 GameTest 全部通过,覆盖共享管线内容保留、回调执行、namespace 隔离、Group 配置顺序、构建快照及自定义 Builder。
  • 实际 runData 通过,检查生成文件确认两个 Core 的语言键共存,以及 Group 语言前缀、自定义中文翻译和方块掉落正确。
  • git diff --check:通过。

GameTest 和 datagen 验证使用临时 Gradle init 脚本向构建目录补齐测试模组元数据,datagen 输出到 /tmp;未修改项目运行配置。

@LeeQianXi
LeeQianXi merged commit ac7c987 into 26.1.2 Oct 28, 2026
4 checks passed
@LeeQianXi
LeeQianXi deleted the codex/registration-pipeline-group branch October 28, 2026 13:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant