Skip to content

feat!: 同步原野之风三模组及已完成功能,完善升级文档与 CI - #34

Closed
cuccuc377-dev wants to merge 10 commits into
master/NeoForge-26.2from
sync/wild-wind-modules-20261024
Closed

cuccuc377-dev wants to merge 10 commits into
master/NeoForge-26.2from
sync/wild-wind-modules-20261024

Conversation

@cuccuc377-dev

@cuccuc377-dev cuccuc377-dev commented Oct 24, 2026 •

Copy link
Copy Markdown

问题与改动

当前默认分支仍是单个 ww_hfas 模组,尚未包含 WildWindMod 中完成的功能和三模组拆分。本 PR 将 cuccuc377-dev/WildWindMod 的 main@eb12f4fed5472c9be5c51606141fff201b873968 同步到 master/NeoForge-26.2,发行目录只产出以下三个独立 JAR:

模组 内容与依赖
wild_wind_core 杜鹃木功能方块、窑炉、结构配置、七种材料、羊毛拆线、挣脱蜘蛛网、骷髅近战、耕地保护、熔炼与属性书;可单独安装
wild_wind_wilderness 灵焰木/焚烬木、泥猪/泥沼蟹/恐鱼、沉溺/窒息、焦灰植物及已有延展药水箭;依赖同版本核心和 GeckoLib
wild_wind_barren 仙人球;只依赖同版本核心

包含直接署名的属性书、附魔台可获取的熔炼魔咒与保持贴图原色的树叶。按需求移除未完成的自定义部件制箭系统,保留原版制箭台行为与已有延展药水箭。

补充同步/升级记录、贡献指南及 PR 模板;CI 固定 Actions 提交、令牌只读、限制超时、取消重复运行、上传测试报告并验证恰好三个发行模组。JAR 许可标识与现有仓库双许可声明保持一致,许可证原文未改变。

来源与历史

  • 目标基线:85926800c060020dd9afbf3c4a8ab90a2540421c。
  • 来源已整合上游 26ad2da288d7018a1eb39d5bfbf30b2ad0a1520c;目标基线是该提交的祖先,目标现有泥沼蟹等改动已包含。
  • 来源仓库始于独立快照,本次通过双亲合并连接双方提交历史,没有重写目标分支。保留上游署名与资源来源。建议使用 merge commit 合并此 PR,以保留来源历史。
  • 详情见 docs/PROVENANCE.md、docs/UPSTREAM_MERGE.md、docs/UPSTREAM_SYNC.md。
  • 关联但不关闭:同步合并原26.2分支到目前开发主线内容 #33。该待审分支比已整合的 26ad2da 多 8 个提交,涉及木材生成器、标签/配方和恐鱼音效等;本 PR 不声称包含这些额外提交。请协调合并顺序并重新验证重叠部分。

兼容性

此同步包含注册命名空间破坏性变化,没有实现旧 ww_hfas:* 存档自动迁移。 先备份并在新测试世界验证;旧世界、结构 NBT 和数据包中的旧 ID 需要按模块转换。恐鱼完整 ID 为 wild_wind_wilderness:piranha。

移除旧 ww_hfas/独立 ww_structures JAR,再安装需要的模块;客户端和服务端组合一致。荒野还需要 Minecraft 26.2 NeoForge 版 GeckoLib 5.5.4。ww_structures 配置路径、结构命名空间和索引保留;删除的自定义制箭台不自动恢复。回退应恢复备份世界及对应旧 JAR。

验证

在独立同步工作区、JDK 25 下完成:

  • :datagen:runClientData :datagen:runServerData,同步 417 项生成资源后快照无差异。
  • build collectMods :verification:runGameTest。
  • 12 项 JUnit、28 项综合 GameTest 全部通过。
  • :smoke:runGameTest 四种组合通过:核心、核心+荒野、核心+瘠土、全部模块。
  • 发行目录恰好三个 JAR,许可元数据正确,不包含测试模组、模型源文件或生成缓存。
  • git diff --check;提交树中排除 IDE、工具、凭据、构建缓存、测试世界和发行产物,保留构建所需 Wrapper。

GitHub Actions 已独立重复资源生成、完整构建、综合测试与安装组合验证,两次运行均通过:

CI 产物 WildWind-mc26.2 包含三个发行 JAR,WildWind-test-reports 保留测试报告。未进行本次同步版本的长期游玩、完整人工视觉或多人验收。

目标分支要求至少一位审核者批准。本 PR 等待 CI 与正常审核,不绕过分支保护。

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

临时文件为什么要交?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

为什么不用 datagen?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

八百多个 json 文件传上来干什么,不是有 datagen 了吗?hfas 模块也有例子

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Component.literal 加中文?为什么不用 Component.translatable?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

写这么多硬编码中文干什么?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这个 wildwind$color 莫名其妙,为什么不用 dyeColor.textColor?

@Viola-Siemens

Copy link
Copy Markdown
Collaborator

问题太多,都标进去了,主要是都能 datagen 为什么上传结果文件,中文为什么要硬编码进代码,还有一堆莫名其妙的代码,AI 写完都不知道你看没看过。这个 CR 显然不能过,代码质量太差

@cuccuc377-dev

Copy link
Copy Markdown
Author

感谢审核。重新逐项核对了意见和实现,中文硬编码、重复维护颜色表,以及生成资源的组织方式确实需要改进。此前构建和自动测试通过,只能说明已覆盖的行为通过验证,不能替代国际化、可维护性和仓库约定方面的审查。

针对几处实现补充说明:

  1. 中文硬编码:这个问题接受。玩家提示、属性书字段、硫方怪原型名称应统一使用翻译键和翻译组件。属性书目前还用字符串分页,修正时需要一起调整,避免在服务端调用 getString() 后又把语言固定下来。

  2. datagen 与生成 JSON:当前已经使用 datagen,并非全部手写 JSON。例如指出的杜鹃木按钮方块状态与生成输出一致,仙人球名称也在语言生成器中;但模块标题等条目仍是手工补充,覆盖确实不完整。提交生成快照原本是为了让普通构建无需先运行 datagen,CI 也会重新生成并检查差异。理解上游已有从生成目录读取资源的方式,后续修订会按这个方向组织模块输出,移除可生成的快照,保留必要的手工资源,并补全生成器。

  3. scripts/sync_generated_resources.py:它目前是 CI 直接调用的正式同步工具,负责将统一 datagen 输出分配给三个发行模块,并拆分共享标签、语言和数据映射,并非误提交的本地临时文件。不过这层脚本可以通过改进生成器输出方式来精简;现有合并语言条目的方式也存在保留陈旧条目的问题,需要一并处理。

  4. wildwind$color:颜色来源是仓库中的 docs/specifications/杜鹃木告示牌(Azalea Sign).md,该需求还规定文字不受周围亮度影响。核对当前 Minecraft 26.2 后,16 种颜色中有 15 种与原版文字色一致,确实没有必要重复维护整张表。蓝色是例外:文档要求 #0000FF,原版文字色为 #253192。会改为复用 DyeColor#getTextColor(),仅保留有需求说明的蓝色差异,并处理好 ARGB;这样既减少重复,也不直接改变约定的效果。

  5. SulfurProfile:这部分用于属性书展示硫方怪吸收方块后对应的原型、弹性、阻力等参数,读取的是游戏原型注册表及属性修饰符,不是另造一套固定物理数值。显示名称和字段的中文硬编码同样需要修正。如果这里还涉及原型匹配、修饰符叠加或职责划分方面的问题,也请指出具体位置,方便针对性核实。

这些是对当前实现的说明和拟修订方向,尚未提交修复。会先处理上述问题,再申请复审,不以 CI 通过作为绕过这些意见的理由。

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.

2 participants