Skip to content

Improve tooltip formatting and split long tooltips behind Shift 优化提示文本格式并将长提示拆分至 Shift - #4937

Merged
ZhuRuoLing merged 1 commit into
Anvil-Dev:dev/1.21/1.6from
PigeonNian:tooltipfixnew/1.21/1.6
Sep 18, 2026
Merged

ZhuRuoLing merged 1 commit into
Anvil-Dev:dev/1.21/1.6from
PigeonNian:tooltipfixnew/1.21/1.6

Conversation

@PigeonNian

Copy link
Copy Markdown
Contributor

No description provided.

- 将多处提示文本修改为多行格式,提高可读性
- 简化building_rod提示,分离普通与Shift显示信息
- 对ionocraft_backpack提示内容拆分为普通与Shift两部分
- 更新ItemTooltipLang中的提示文本,同步多行文本格式
- 统一中英文json文件中对应提示文本的换行和描述风格
@Gugle2308

Copy link
Copy Markdown
Collaborator

⚠ Stream stalled mid tool-call (write_file); the action was not executed. Ask me to retry if you want to continue.已完成审查。以下是审查意见(webhook 会自动发布到 PR 评论区):


代码审查摘要 — PR #4937

操作: opened
范围: 4 个文件(2 Java, 2 生成 lang)/ 168 行 diff(+42 / −28)
提交: 819a56c8 refactor(tooltip): 优化提示文本格式和内容

纯 tooltip PR,无逻辑代码变更。核心意图:把 IONOCRAFT_BACKPACK 基础描述里长期显示的 shift 专属内容拆到 SHIFT 映射,并把 equipment.breathing / equipment.recharge; 单行改为两行。

🟢 看起来不错

  1. 生成链一致性正确 — 逐项比对 Java 文本块 ↔ 生成 lang,全部吻合:
    • equipment.breathing / recharge 两行化 → en_us \n 分隔无尾换行 ✅
    • equipment.pockets / buffer_boots 仅改写成文本块、输出字节等价 → 正确地出现在 en_us diff 中 ✅(说明确实跑过 runData
    • building_rod NORMAL/SHIFT、ionocraft_backpack NORMAL/SHIFT 均一致 ✅
  2. en_ud 行序反转正确breathingbuilding_rodbuilding_rod.shiftionocraft_backpack.shift 均为「整串反转」(末行变首行 + 字符翻转);building_rod 的 en_ud 以 \n 开头,正好对应 en_us 的尾部 \n
  3. SHIFT 拆分机制正确ItemTooltipManager L986-1005 的 SHIFT.containsKey(item) 分支会:无 Shift 时显示 NORMAL + tooltip.anvilcraft.press_key 提示,按住 Shift 时显示 SHIFT 文本。IONOCRAFT_BACKPACK 两个 map 均有条目,全文件仅 2 处引用,无重复 SHIFT.put 死代码 ✅
  4. BUILDING_ROD NORMAL 文本块尾随 \n(闭合 """ 独占一行)不影响渲染 —— addTranslatedTooltipString.split("\n"),Java 会丢弃尾部空串。仅为风格不一致(IONOCRAFT NORMAL 无尾换行)
  5. en_us ↔ en_ud key 对称,无 EOF 换行符丢失 ✅

⚠️ 警告

  1. src/main/resources/assets/anvilcraft/lang/zh_cn.json 未同步(新增 key 缺失)
    本 PR 新增了 tooltip.anvilcraft.item.ionocraft_backpack.shift,但 zh_cn 中该 key 不存在grep -c 结果为 0)。同时:

    • zh_cn 的 tooltip.anvilcraft.item.ionocraft_backpack 仍是旧的 3 行全文(含缓降内容)
    • zh_cn 的 tooltip.anvilcraft.item.building_rod / .building_rod.shift 仍是旧版未精简文本

    后果:中文玩家按住 Shift 时会因缺 key 回退到英文 en_us 文本(Minecraft 语言回退),且中英文提示内容互相矛盾。建议本次一并补 zh_cn,或明确在 PR 描述中说明走 Weblate 后续同步。

  2. ItemTooltipManager.java L109 — 新引入的文本错误(非历史遗留)

    Carry a book for a missing-material list , hold Shift to places the available part of a blueprint
    
    • list , — 逗号前多一个空格 ❌
    • to places → 应为 to place(不定式动词原形)❌
    • 原为两行两条独立说明,现用逗号合并成一句,可读性下降。建议拆回两行:
      Carry a book for a missing-material list
      Hold Shift to place the available part of a blueprint
      
  3. ItemTooltipManager.java L109-112 — 句法混用

    • Buckets fill areas and waterlog blocks, 2 B per fill — 逗号拼接(comma splice),原文用 ;。建议 ; 2 B per fillat 2 B per fill
    • Consume 100 FE per block, recharged from capacitors — 祈使句 + 被动语态混搭。建议 Consumes 100 FE per block and recharges from carried capacitors
  4. building_rod.shift 信息删除多于「精简」范围,且该 tooltip 是唯一文档来源
    已核实 ageratum/en_us没有建筑杖手册页(仅有 005_tool/101_dragon_rod.md),被删内容无处可查:

    被删除内容 影响
    building reach +15 数值消失,NORMAL 只剩「grants crab claw reach」
    up to 4,000 blocks 框选上限消失
    the starting face determines large-block anchors 大型方块锚点规则消失
    过滤器 deny/allow 列表 + 组件匹配两行 非直觉机制说明完全消失
    Import blueprint files through the Structure Scanner (16×16×16 maximum) 蓝图导入途径消失

    建议至少保留「过滤器/组件匹配」与「结构扫描仪导入」两行;若确为有意缩短,请在 PR 描述中说明,并考虑在 ageratrum 手册补页。另 NORMAL 也丢了 including in pockets(口袋携带同样生效)。

💡 建议

  • PR 标题过于笼统Fix tooltip. 修正tooltip 无法反映实际改动(既有格式化也有内容删减)。gh auth status 显示 token 已失效,本次未能自动修改,建议标题:
    Improve tooltip formatting and split long tooltips behind Shift 优化提示文本格式并将长提示拆分至 Shift
  • 风格统一:BUILDING_ROD NORMAL 与 IONOCRAFT_BACKPACK NORMAL 的文本块闭合位置不一致(一个独占一行带尾换行、一个贴内容行),渲染虽等价,统一后可减少后续 diff 噪音

🧪 验证建议

步骤 命令/操作 目的
1 ./gradlew runData 确认生成物与 Java 文本块完全一致(本 PR 已通过,改文本后需重跑)
2 游戏内 F3+H 悬停建筑杖 / 飘升机背包,分别不按 / 按住 Shift 确认 NORMAL+press_key 提示与 SHIFT 文本切换正确
3 切换 zh_cn 语言重复步骤 2 捕获 ionocraft_backpack.shift 缺失 key 的回退现象

结论: REQUEST_CHANGES — 飘升机背包的 NORMAL/SHIFT 拆分正确、生成链无误,方向没问题;但 building_rod.shift 新引入 2 处文本错误(list ,to places)与句法混用,且删除的机制说明属唯一文档来源,另需处理 zh_cn 缺失的新 key。修复以上 3 点即可合并。


由 Hermes Agent 审查

@Gugle2308

Copy link
Copy Markdown
Collaborator

💾 Self-improvement review: Patched SKILL.md in skill 'minecraft-lang-pipeline-review' (1 replacement).

@ZhuRuoLing
ZhuRuoLing merged commit 68d5f62 into Anvil-Dev:dev/1.21/1.6 Sep 18, 2026
2 checks passed
@Gugle2308

Copy link
Copy Markdown
Collaborator

PR #4937 的操作类型为 closed(分支 tooltipfixnew/1.21/1.6dev/1.21/1.6,作者 PigeonNian)。

按 webhook 审查约定,closed / labeled 事件直接终止流程——不下载 diff、不审查、不发表评论。已停止,无任何评论输出。

@Gu-ZT Gu-ZT changed the title Fix tooltip. 修正tooltip Improve tooltip formatting and split long tooltips behind Shift 优化提示文本格式并将长提示拆分至 Shift Sep 18, 2026
@Gugle2308

Copy link
Copy Markdown
Collaborator

⚠️ Dangerous command requires approval:

cd /opt/data/workspace/AnvilCraft && echo "=== JSON validity of merged generated lang files ==="; git show rvbase1216:src/generated/resources/assets/anvilcraft/lang/en_us.json > /tmp/en_us_merged.json...

Reason: script execution via -e/-c flag

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
Collaborator

I have all the evidence I need. Here's my review:


代码审查摘要 — PR #4937

操作: edited范围: 4 个文件(2 Java + 2 生成 lang)/ 168 行 diff
⚠️ 状态提示: 该 PR 已合并dev/1.21/1.6(merge commit 68d5f6258d "refactor(tooltip): 优化提示文本格式和内容 (#4937)")。以下问题在当前 dev tip 上仍然存在,属合并后跟进项

变更验证(生成物 ↔ 源一致性)

变更点 Java 源 生成 en_us/en_ud 状态
equipment.breathing 单行→两行 ItemTooltipLang.java:8 无尾随 \n,值等价
equipment.recharge 单行→两行 ItemTooltipLang.java:13 无尾随 \n,值等价
pockets / buffer_boots 改 text block ItemTooltipLang.java:17,21 字符串未变(未污染既有翻译键)
building_rod NORMAL 单行→两行 ItemTooltipManager.java:56-59 加了尾随 \n(详见 💡1) ⚠️
building_rod SHIFT 9 行→6 行 ItemTooltipManager.java:60-67 一致
ionocraft 背包 NORMAL 3 行→1 行 + 新增 .shift ItemTooltipManager.java:387,907 一致,新键已生成

生成文件本身校验:en_us / en_ud 均合法 JSON,各 2528 键,键集完全一致,无手改痕迹 → datagen 已正确执行。

🔴 需修复(本次新引入的英文文本错误,会直接进游戏)

ItemTooltipManager.java:63(→ tooltip.anvilcraft.item.building_rod.shift)新写入的行:

Carry a book for a missing-material list , hold Shift to places the available part of a blueprint
  1. list , — 逗号前多一个空格(原文 a missing-material list when blueprint materials run short 没有此问题,是重写时引入)
  2. hold Shift to places → 应为 to place(原文就是 to place,重写后退化)

这两个错误已随合并进入 dev/1.21/1.6,建议立即补一个 typo 修正 PR(改 Java 后需重跑 runData 同步 en_us/en_ud)。

⚠️ 警告

1. 大幅删除机制说明,且游戏内已无其它呈现渠道

SHIFT 提示从 9 行压到 6 行,被删掉的不只是"长度",而是代码里真实存在、且在别处查不到的信息:

被删内容 代码核对 是否还有别处可查
hold in either hand to build with +15 block reach BuildingRodItem.updateReach():手持 + 另一手持材料/结构盘时把 BLOCK_INTERACTION_RANGE 设为 15 - crabclaw → 说法属实 ❌ 无
including in pockets(NORMAL 行一并删掉) CrabClawItem:56BuildingRodItem.isCarried()PocketInventory.carriedItems(),放口袋确实给蟹钳触及 → 说法属实且反直觉 ❌ 无
过滤器 3 行(无视放行/拒绝列表、不匹配组件时按槽位随机加权、匹配组件时按有效槽位矩形循环平铺) 属隐性机制,无法从 UI 推断 ❌ 无(ageratum/006_prop/003_filter.md 只讲 Filter 本身的 allow/deny 开关,反而会误导玩家以为列表生效)
Import blueprint files through the Structure Scanner (16×16×16 maximum) ❌ 无(ageratum没有建筑杖页面101_structure_scanner_alternative.md / 101_smart_block_placer.md 讲的是智能方块放置器和结构磁盘,不是建筑杖)

补充证据:BuildingRodLang.java 里生成的 item.anvilcraft.building_rod.desc / .import / .controls / .fluids / .summary 这些键(内容基本就是被删掉的原文,且 .desc 里有 +15 block reach.import 里有结构扫描仪导入)在仓库中没有任何代码引用,只存在于 lang 文件里 → 这些信息目前游戏内完全不可见。

PR 描述为空(None),无法判断删除是有意精简还是重写时顺手丢了。建议:要么明确说明"tooltip 只保留操作入口、细节移至手册"并真的补一篇手册页,要么至少恢复 +15 block reach 与"经结构扫描仪导入蓝图"两条(玩家无法自行发现);18×18×18 之外的 16×16×16 上限同理。

2. 多语言未同步 —— 新键缺翻译,拆分对中文玩家实际无效

tooltip.anvilcraft.item.ionocraft_backpack.shift
  在 de_de/es_es/fr_fr/ja_jp/ko_kr/lzh/ru_ru/zh_cn/zh_hk/zh_meme/zh_tw 全部 11 个 lang 文件中均不存在
  • 玩家按住 Shift 时走 getTranslationKeyShift() → 键缺失 → 回退英文(原版 en_us fallback),中文下拆分等于没做
  • 更矛盾的是 zh_cntooltip.anvilcraft.item.ionocraft_backpack 仍是旧的三行文本(装备时可以在电网内创造飞行\n离开电网时…\n双击空格可取消缓降)→ 中文不按 Shift 时显示的仍是那三行,与新的 NORMAL/SHIFT 语义相反。
  • zh_cntooltip.anvilcraft.item.building_rod 也还是旧描述(…随身携带(含口袋)…),building_rod.shift 仍是 9 行旧文本(含已被删掉的 +15 / 过滤器 / 结构扫描仪)→ 中英内容严重分歧。

Weblate 滞后本身正常,但新增键不会自动出现。建议在 PR / issue 里贴出本次新增与变更的 lang key 清单(ionocraft_backpack.shift 新增;ionocraft_backpackbuilding_rodbuilding_rod.shiftequipment.breathingequipment.recharge 变更),并优先翻译中文。

💡 建议

  1. 尾随换行风格不统一ItemTooltipManager.java:56-59""" 独占一行 → 生成 …while carried\naddTranslatedTooltip()split("\n")(丢尾部空串),en_us 渲染无影响;但 en_ud 生成时行序反转,尾随 \n 变成行首 \n,上下颠倒语言下会多一个空行。同批在 ItemTooltipLang.java 改的 breathing/recharge/pockets/buffer_boots 都把 """ 贴在最后一行(无尾随换行),两处风格不一致,建议统一为无尾随换行。
  2. 语气不一致:NORMAL 建筑的 rod 变成 Place blocks and blueprints in bulk + Grants crab claw reach while carried(祈使 + 第三人称混用)。其它 NORMAL 条目统一为第三人称(Allows…Attracts…),建议二选一。
  3. 丢了限定词Buckets fill areas and waterlog blocks, 2 B per fill 相比旧文 renewable fluids cost 2 B per fill 少了"可再生流体"限定;若确实只有无限/可再生流体才收 2 B,这条现在表述不准(zh_cn 仍写"可再生流体每次消耗 2 B")。
  4. ItemTooltipManager.NEED_TOOLTIP_ITEMS 只有定义、无消费者;本次给 IONOCRAFT_BACKPACK 加 SHIFT 条目后 allTooltips.putAll(SHIFT) 会把该 item 在该 map 里的值从 normal 文本覆盖为 shift 文本。当前无影响,仅提示将来若启用该 map 需注意。

🟢 看起来不错

  • SHIFT.put(IONOCRAFT_BACKPACK) 的接入方式正确:SHIFT.containsKey(item) 分支下不按 Shift 时展示 NORMAL + [Shift] 提示、按下时展示 SHIFT,无需改渲染逻辑,无反同 tick/索引回归。
  • ionocraft 背包两侧文本只是搬移(SHIFT 内容与旧 NORMAL 的后两行逐字一致),无信息丢失,是本次最干净的一处改动。
  • pockets / buffer_boots 改 text block 时特意让 """ 贴最后一行以保持字符串字节等价 —— 避免了污染 11 个语言的既有翻译,这个细节做得对。
  • 生成资源与 Java 源同步(datagen 已跑),en_ud 逐条镜像正确。

🧪 测试建议

被测目标 推荐场景 优先级
addTranslatedTooltip() 空串行/首行 \n/尾随 \n 三种输入下的渲染行数(en_us 与 en_ud 各一遍) 🟡
ItemTooltipManager.addTooltip() 飘升机背包:按住/松开 Shift,断言行数与 [Shift] 提示位置 🟡
BuildingRodItem.updateReach() 建筑杖在手中 / 在口袋 / 副手无材料时,分别断言 BLOCK_INTERACTION_RANGE(tooltip 里这条说明已被删除,行为未变,需人工回归确认) 🟡
lang 完整性 断言 tooltip.*.shift 的键在 en_us ↔ en_ud ↔ 各语言文件中的存在性集合(可自动发现本次这类"新键漏翻译") 🟢

结论: COMMENT — 改动方向正确(NORMAL 精简 + 细节折叠到 Shift),且生成物与源一致;但新引入的两处英文错误(list ,to places)应尽快修,同时需要澄清被删掉的机制说明(+15 触及、口袋生效、过滤器列表语义、结构扫描仪导入)是否有意为之并给出替代呈现位置,以及补 ionocraft_backpack.shift 的多语言翻译。

PR 标题:当前标题基本准确,但未体现"建筑杖提示被大幅重写/削减"这一点。建议(本次 gh auth status 显示 token 失效,未自动修改):

Rewrite building rod tooltip and split ionocraft backpack tooltip behind Shift 重写建筑杖提示并将飘升机背包长提示拆分至 Shift


由 Hermes Agent 审查

@Gugle2308

Copy link
Copy Markdown
Collaborator

💾 Self-improvement review: Patched references/tooltip-normal-shift-split-review.md in skill 'minecraft-lang-pipeline-review' (1 replacement). · Patched SKILL.md in skill 'minecraft-lang-pipeline-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