Skip to content

Make CollapsibleObject can use Comment 使 CollapsibleObject 可以使用 Comment - #151

Merged
ZhuRuoLing merged 1 commit into
Anvil-Dev:dev/1.21.8from
QiuShui1012:port/1.21.8
Oct 10, 2026
Merged

ZhuRuoLing merged 1 commit into
Anvil-Dev:dev/1.21.8from
QiuShui1012:port/1.21.8

Conversation

@QiuShui1012

Copy link
Copy Markdown
Contributor

No description provided.

@Gugle2308

Copy link
Copy Markdown

⚠️ Dangerous command requires approval:

cd /tmp; curl -sL -o /tmp/anvillib-base.tgz -w "%{http_code} %{size_download}\n" "https://codeload.github.com/Anvil-Dev/AnvilLib/tar.gz/refs/heads/dev/1.21.8"; mkdir -p /tmp/albase && tar xzf /tmp/anv...

Reason: Security scan — [MEDIUM] Archive extraction to sensitive path: Archive command 'tar' extracts to a potentially sensitive location

Reply /approve to execute, /approve session to approve this pattern for the session, /approve always to approve permanently, or /deny to cancel.

@Gugle2308

Copy link
Copy Markdown

已完成审查(diff 已下载核对:Anvil-Dev/AnvilLib#151,1 文件 / 1 hunk / +6 −3;PR 状态 data-status="pullOpened",未合并)。


代码审查摘要 — AnvilLib PR #151

操作: opened
范围: 1 个文件(module.config/.../config/ConfigData.java,1 hunk,+6/−3,无新增/删除文件、无资源变更)
改动: @Comment 的读取被提到分支外,折叠对象分支的 tooltip 由固定 name 改为 comment == null ? name : comment.value()

✅ 核心逻辑正确(已用 NeoForge 21.8.53 源码取证)

  1. 键路径正确。 libs.versions.toml 里 neoForge = 21.8.53;其 ConfigurationScreen L558-559 用 getTranslationKey(key) + ".tooltip" 取 tooltip,L927 折叠节按钮正是 .tooltip(Tooltip.create(getTooltipComponent(key, null)))。而 ModConfigSpec.Builder.push()(ModConfigSpec L857-864)会把 builder.translation() 写进 levelTranslationKeys,getLevelTranslationKey() 读回——三条路径最终都是 modid.configuration.<path>(AnvilLib 的 OPTION_STRING 与 NeoForge 兜底串 modId + ".configuration." + key 同构)。所以 COLLAPSIBLE_OBJECT_TOOLTIP_STRING 拼出的确实是折叠节按钮读的那条键。.button(L912/924,缺键回落 SECTION_TEXT)同样正确,无需同步修改。
  2. 这确实修掉了一个静默失效。 COLLAPSIBLE_OBJECT_TOOLTIP_STRING 与 TOOLTIP_STRING 字面完全等价(都是 OPTION_STRING + ".tooltip"),而 ProviderProxy.add 用 ADDED 先到先得:折叠分支(旧 L73)先执行 ⇒ 旧 L77-80 里 @Comment 的值被静默丢弃,折叠节 tooltip 永远显示英文字段名。即改前「给 @CollapsibleObject 加 @Comment」是无声无效的——本 PR 修的正是这个。
  3. 去重后语义自洽。 改后两条 add 传同值,先到先得不再产生差异;未加 @Comment 的折叠对象行为不变(仍为 name)。
  4. 不波及生成数据。 输出只在「同时 @CollapsibleObject + @Comment」时才改变:AnvilLib 自身 AnvilLibMultiblockConfig / AnvilLibRecipeConfig 只有叶子 @Comment 字段(无折叠对象),dev/1.21.8 已提交的生成 lang 无需重跑 runData;module.test 的生成 lang(515B)不含任何 configuration.* 键。消费方 AnvilCraft 现有 4 处 @CollapsibleObject 上方恰好都没有 @Comment(且其 ConfigScreenLang.addOverride 已手写覆盖 .button / .tooltip),因此下游 datagen 也不会产生意外 diff。

⚠️ 警告

  • 只改了 dev/1.21.8 一条线。 dev/1.21.1 / dev/1.21.4 / dev/1.21.11 / dev/26.1 上的 ConfigData.java 与基线同构(L78 仍写死 name);head 分支名 port/1.21.8 暗示这是移植分支。建议明确是否同步到其余 4 个开发分支,否则其它 MC 版本的消费方仍会踩同一个坑。

💡 建议

  • COLLAPSIBLE_OBJECT_TOOLTIP_STRING 现与 TOOLTIP_STRING 字面重复,可写成 = TOOLTIP_STRING,避免日后只改一处造成漂移。
  • blank 守卫:@Comment 的 default 是 "",comment.value().isBlank() ? name : comment.value() 可避免生成空 tooltip。另外 ConfigManager L122-128 对折叠字段会执行 builder.comment("") 后 push(),而 NeoForge ModConfigSpec.Context.buildComment() 对全空白注释在 dev 环境直接抛 IllegalStateException("…contains entirely of blank lines/whitespace")。这属既有问题,但本 PR 把「给折叠对象写 @Comment」变成推荐用法,顺手防一手更稳。
  • 测试:AnvilLibTestConfig.testObject(L19-20 折叠对象)目前没有 @Comment,新分支零覆盖。建议给它加 @Comment("...") 并在 lang datagen 断言 anvillib_test.configuration.test_object.tooltip == 注释内容(覆盖「有注释取注释 / 无注释取字段名」两侧)。

🟢 看起来不错

  • Comment comment = field.getAnnotation(Comment.class); 提前到分支外,省掉重复反射查找,两处判断同源。
  • 改动最小、无行为外溢,未发现 quickMoveStack 式存根、序列化或注册链缺口。

📋 声称验证表

声称 状态 证据
Make CollapsibleObject can use Comment ✅ 折叠分支 tooltip 取 comment.value();NeoForge .tooltip 键即折叠节按钮 tooltip
(PR 无描述 "None") ⚠️ 建议补一段说明:修的是「@Comment 在折叠对象上被 ADDED 去重静默丢弃」

结论: APPROVE — 逻辑正确、键路径经 NeoForge 源码核对、无生成数据/消费方回归风险;仅需考虑同步其它版本分支与 blank 守卫。

标题建议:gh auth status 显示 /opt/data/home/.config/gh/hosts.yml 的 token 已失效,故未能自动改标题。建议改为:Make @Comment work as the section tooltip on @CollapsibleObject fields 让 @CollapsibleObject 支持用 @Comment 作折叠节提示(现标题 Make CollapsibleObject can use Comment 语法不通顺)。


由 Hermes Agent 审查

@ZhuRuoLing ZhuRuoLing left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM - ported config Comment support

@ZhuRuoLing
ZhuRuoLing merged commit fa8963a into Anvil-Dev:dev/1.21.8 Oct 10, 2026
34 checks passed
@Gugle2308

Copy link
Copy Markdown

PR #151 动作为 closed,按约束 1 停止:不进行审查、不发布评论。

@Gugle2308

Copy link
Copy Markdown

💾 Self-improvement review: Patched references/config-annotation-lang-key-pipeline-review.md in skill 'rename-refactor-pr-review' (1 replacement). · Patched SKILL.md in skill 'rename-refactor-pr-review' (1 replacement). · Patched references/pr-state-draft-and-remote-source-fetch.md in skill 'github-webhook-pr-review' (1 replacement).

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.

3 participants