Skip to content

Require royal hammer for Super kill 限定超杀进度使用皇家铁砧锤 - #5123

Merged
PigeonNian merged 1 commit into
Anvil-Dev:dev/1.21/1.6from
WhereisFff:codex/fix-5122-royal-hammer-advancement
Oct 2, 2026
Merged

PigeonNian merged 1 commit into
Anvil-Dev:dev/1.21/1.6from
WhereisFff:codex/fix-5122-royal-hammer-advancement

Conversation

@WhereisFff

Copy link
Copy Markdown
Contributor

fix(advancement): 限定超杀进度使用皇家铁砧锤 (#5122)

- 为 super_kill 增加皇家铁砧锤物品条件,保留原有 80 点伤害阈值。
- 传递实际攻击所用的铁砧锤物品,避免耐久耗尽时丢失身份,并保持其他进度和原有调用方式不变。
- fixed Anvil-Dev#5122
@Gugle2308

Copy link
Copy Markdown
Collaborator

审查完成。以下为审查意见(将自动发布到 PR #5123 评论区):


代码审查摘要 — PR #5123 Require royal hammer for Super kill 限定超杀进度使用皇家铁砧锤

操作: opened(当前 PR 状态 = draft,state=open / draft=true,mergeable_state=unstable)
范围: 5 个文件(4 Java + 1 生成 JSON)/ +40 −12 行
diff 完整性: 下载 patch +40/−12 与本地 git diff base...head(+40/−12)一致;head c8803b2b == refs/pull/5123/head ✅

📋 issue #5122 复核

issue 正文:「在使用除皇家以外类型的铁砧锤 单次造成 80 点伤害完成…」,而描述文案为 使用皇家铁砧锤一击造成 80 点伤害(zh_cn:94 / 其余 lang 同)。核实 base 各锤的 calculateFallDamageBonus:

锤 公式 能否 ≥80
Ember / Frost min(120, fallDistance*2) ✅ 能
Transcendence fallDistance*2(无上限) ✅ 能
Royal min(80, fallDistance*2) ✅ 能(恰好 80)

即修复前多种非皇家锤都能拿到 super_kill。修复方向正确,是把行为对齐到既有描述文案。

🔴 关键

未发现阻塞性缺陷。核心判定逻辑经核对是正确的:

return (this.damage.isEmpty() || damage >= this.damage.get())
    && (this.item.isEmpty() || this.item.get().test(item.getDefaultInstance()));

与旧 matches 在「无 item 条件」时逐分支等价 ⇒ hurt_entity(hammerHurt("hurt_entity"),无 damage/item)与旧数据包完全兼容。

⚠️ 警告

  1. AnvilHammerHurtEntityTrigger.java:23 / 64 — 遗留「永不成功」的重载,且签名有误导性。
    trigger(player, damage) 与 matches(Float damage) 现在硬编码 Items.AIR;对任何带 item 条件的 criterion(包括新的 super_kill)必然返回 false(见下方字节码证据)。经核实 in-tree 已无调用者:TriggerUtil.anvilHammerHurtEntity(3 参)、TriggerInstance.hurtEntity(float)、AdvancementLineHelper.hammerHurt(String, float) 同样已全部失去调用者。建议删除这批死路径;若要保留给附属模组做 API 兼容,至少在 matches(Float) 上写 javadoc 说明「传入 AIR ⇒ 带 item 条件的实例永远不匹配」,否则后续有人用它排查 bug 会白烧时间。

  2. 半径广播语义请确认(非本 PR 引入,但与本 issue 的诉求直接相关)。
    TriggerUtil 是对目标 5 格内的所有玩家逐个判定 criterion,而 item 条件比对的是「造成伤害的那把锤」,不是每个受奖玩家手持的锤。因此别人用皇家锤打出 80 伤害时,旁边站着的人也会拿到 super_kill。这与 hurt_entity / killedEntityByAnvilHammer 的既有约定一致,若维护者认为可接受则无需改动;若 [Bug] 特定情况下"超杀......差一点"成就描述错误 #5122 的诉求是「必须自己用皇家锤」,则应改为按 player.getMainHandItem() 判定。

💡 建议

  1. AnvilHammerHurtEntityTrigger.java:70 — 默认实例会永久堵死组件级条件。 test(item.getDefaultInstance()) 只用默认堆叠(damage=0、count=1),意味着数据包作者若在 anvil_hammer_hurt_entity 的 item 条件里写组件/数量判定,永远不会命中(这个 trigger 是公开的 criterion,外部数据包确实可以写)。若想保留完整语义,可在 AnvilHammerItem.hurtEnemy hurtAndBreak 之前取 ItemStack used = stack.copyWithCount(1); 再下沉传递 —— 既避开下述「身份丢失」问题,又保留组件。(若确认目前只需要判物品类型,保持 Item 亦可,仅需知晓此限制。)

  2. AnvilHammerItem.java:463 — this 的用意不自明,建议加一行注释或抽本地变量。
    传 this 确实是对的:我核实了 1.21.1 客户端字节码,ItemStack.getItem()(cuq.g,code=18)实为
    2a b6 00 b8 99 00 09 b2 01 6f a7 00 07 2a b4 00 ed b0 = isEmpty() ? Items.AIR : item,而 hurtEnemy 第一行就 stack.hurtAndBreak(1, …) —— 最后一耐久的那一击会把 stack 打成空堆叠,此时读 stack.getItem() 会得到 Items.AIR。作者选择传 this 正是绕开这点,但代码本身看不出来,建议加注释。

  3. AnvilCraftAdvancement.java:162 — 建议复用项目约定而非内联。
    现有写法给 AnvilCraftAdvancement 新增了 AnvilHammerHurtEntityTrigger 的 import 并内联 addCriterion(...TriggerInstance.hurtEntity(80, item))。更贴合既有风格的是在 AdvancementLineHelper 增加 hammerHurt(String key, float damage, Item item) 重载(与 hammerHurt(String, float) 相邻,满足 OverloadMethodsDeclarationOrder),调用点保持一行链式,其余 20+ 个 advancementLine helper 都是这个模式。

🟢 看起来不错

  • 生成 JSON 与 datagen 输出同构(已逐项核对):"item": {"items": "anvilcraft:royal_anvil_hammer"} 与同路径产物 geode.json / topaz.json(use_item criterion,同为 ItemPredicate.Builder.item().of(singleItem))形状、缩进层级完全一致;codec 字段序 player, damage, item 也与 JSON 中 damage 在前的顺序一致。
  • API 存在性已用 client-1.21.1-mappings.txt + 混淆客户端核实:ItemPredicate.Builder.of(net.minecraft.world.level.ItemLike[]) → a、ItemPredicate.build() → b、ItemPredicate.test(ItemStack) → a 全部存在;test 实现为
    2a b4 00 36 b6 00 49 99 00 16 2b … c0 00 4f b6 00 54 9a 00 05 03 ac = if (items.isPresent() && !stack.is(items.get())) return false; ⇒ 传入 AIR 默认实例必然不命中皇家锤谓词,过滤生效。
  • this 确实等于被使用的锤:只有 AnvilHammerItem 覆写了 hurtEnemy,RoyalAnvilHammerItem / Ember / Frost / Transcendence 均未覆写,皇家锤调用时 this 即 ModItems.ROYAL_ANVIL_HAMMER.get() 同一实例 ✅。
  • 风格/门禁合规:Item, ItemStack, Items 的 import 顺序与 MagnetBlockBehavior / FluidHandlerWrapper 一致(满足 style.xml 的 CustomImportOrder ASCII 排序);多行 record 形参与 HeatCollectorTrigger 一致;三组重载(trigger / hurtEntity / matches)均相邻,满足 OverloadMethodsDeclarationOrder;最长新增行 134 < LineLength 140;无 No newline at EOF。
  • 无范围外改动:5 个文件全部与本修复相关,无顺手重构。

📋 声称验证表

声称 状态 证据
为 super_kill 增加皇家铁砧锤物品条件 ✅ AnvilHammerHurtEntityTrigger.java:58-62 + super_kill.json
保留原有 80 点伤害阈值 ✅ JSON "damage": 80.0;matches 中 damage >= this.damage.get()
传递实际攻击所用铁砧锤,避免耐久耗尽时丢失身份 ✅ AnvilHammerItem.java:463 传 this;ItemStack.getItem()=AIR-when-empty 已字节码核实
保持其他进度与原有调用方式不变 ✅ hurt_entity 走 2 参构造 ⇒ item 为空 ⇒ 判定恒真;JSON criteria 键名仍为 super_kill
fixed #5122 ✅ issue #5122 正文与各锤 calculateFallDamageBonus 复核一致(不阻塞;仅剩 ⚠️2 的半径语义待确认)

🧪 测试建议(手动验收矩阵,本仓库无 advancement 单测)

场景 期望
皇家锤 + 下落 ≥40 格攻击实体(单次 ≥80) 获得 super_kill
Ember / Frost 锤同条件(120 上限) 不获得 super_kill
Transcendence 锤同条件 不获得 super_kill
任意锤单次 <80 伤害 不获得
任意锤命中实体 hurt_entity 仍正常获得(回归)
旧存档/第三方数据包中仅含 "damage": 80.0 的 criterion 仍可被任何锤触发(向后兼容)

结论: COMMENT(非阻塞) — 因为当前为 draft 状态,仅给出上述观察而不要求改动。核心修复正确、向后兼容、datagen 产物形状对得上;建议合入前处理 ⚠️1(删除/标注 Items.AIR 死重载)并确认 ⚠️2 的半径广播语义是否为期望行为。标题 Require royal hammer for Super kill 限定超杀进度使用皇家铁砧锤 准确清晰,无需修改。

@Gugle2308

Copy link
Copy Markdown
Collaborator

💾 Self-improvement review: Skill 'advancement-criterion-pr-review' created. · Patched references/merged-state-and-ci-verification.md in skill 'github-webhook-pr-review' (1 replacement).

@WhereisFff
WhereisFff marked this pull request as ready for review October 2, 2026 04:47
Copilot AI balanced review requested due to automatic review settings October 2, 2026 04:47

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@Gugle2308

Copy link
Copy Markdown
Collaborator

代码审查摘要 — PR #5123

状态: data-status="pullOpened"(仍开放,非 merged/closed,正常审查)
范围: 5 个文件(4 Java + 1 生成资源),+40 / −12,无新增/删除文件,EOF 换行完整;本地 git diff rvbase1216..rvhead5123 与 PR diff 完全一致(无隐藏变更)
标题: Require royal hammer for Super kill 限定超杀进度使用皇家铁砧锤 准确且已中英双语 → 未执行 gh pr edit

🔎 关键路径交叉验证(结论:实现正确)

验证项 方法 结论
items 序列化形式 对比仓内既有生成物(UseItemTrigger 同款写法 → geode.json 的 "item":{"items":"anvilcraft:geode"}) ✅ 单元素写成字符串正确,super_kill.json 与 datagen 输出一致
JSON 字段序 record 分量序 player, damage, item ✅ 生成文件为 damage → item,与 datagen 一致(若插在 damage 前就会出 diff)
新阈值仍可达成 RoyalAnvilHammerItem.calculateFallDamageBonus = Math.min(80, fallDistance*2),比较用 >= ✅ 下落 ≥40 格恰好 80.0f 可满足(若写成 > 则永不可获得——本次没踩)
泄漏来源确认(#5122) Ember/Frost=min(120,…)、Transcendence=fallDistance*2(无上限) ✅ 旧逻辑确实可用非皇家锤 ≥80 伤害误触发,issue 复现路径成立
传 Item 而非 ItemStack AnvilHammerItem.hurtEnemy 首行 stack.hurtAndBreak(1,…),耐久归零会清空 stack ✅ PR 描述「避免耐久耗尽丢失身份」成立,传 this 是正确选择
兼容性 item 为 optionalFieldOf;all_in_one 的 hurt_entity 条件无 item 字段 ✅ 旧数据包/旧存档照常加载,其它进度不受影响;生成物仅 super_kill.json 变更
文案一致性 zh_cn/en_us: "使用皇家铁砧锤一击造成 80 点伤害" ✅ 现在条件与描述对齐(即 issue 的期望方案 3),无需改 lang

🔴 关键

  • 无。

⚠️ 警告

  • Items.AIR 哨兵成为静默陷阱 — AnvilHammerHurtEntityTrigger.java:23-25(trigger(player, Float))、:64-66(matches(Float))、TriggerUtil.java:86-88(3 参重载)以及 AdvancementLineHelper.java:594-596(hammerHurt(key, float))、:52-56(hurtEntity(float))在本 PR 后已全部没有调用者,且都硬编码 Items.AIR。任何经这些路径触发的进度,只要声明了 item 条件就永远无法完成;将来新增锤子子类若沿用 3 参调用,super_kill 会静默失效(无报错、无日志)。建议至少加 @Deprecated + javadoc 说明「经此路径 item 恒为 AIR,带 item 条件的进度不会完成」,或直接去掉哨兵、把 Item 改为必传参数。
  • 匹配基于 item.getDefaultInstance() — AnvilHammerHurtEntityTrigger.java:68-71。实际命中时 stack 的组件(附魔、自定义名、Multiphase/Providence 等)不参与匹配。当前 datagen 只写 items,行为正确;但若日后给该条件加 components/count,会因「默认实例」产生语义偏差(如 count 恒为 1)。建议注释明确「仅按物品类型匹配」。(该写法与同包 UseItemTrigger 先例一致,非新引入的风格问题)

💡 建议

  • 触发范围是目标 5 格内全部玩家 — TriggerUtil 沿用 PlayerUtil.searchPlayerByPos(level, pos, 5),而 item 身份取自攻击者:站在旁边的玩家即使从未持皇家锤也会完成该挑战。非本 PR 引入,但加了 item 门槛后语义更突出,如需严格可只 trigger 攻击者本人。
  • 该 record 属数据格式变更(有 optionalFieldOf 兜底,向前兼容 OK);如后续想对非法组合更稳,可给 codec 补 validate。

🟢 看起来不错

  • 完全复用了同包 UseItemTrigger 的既有模式(of(item) + test(getDefaultInstance()) + 同款 ItemPredicate.CODEC.optionalFieldOf("item")),风格与序列化行为都对齐。
  • datagen(AnvilCraftAdvancement.java:162)与 src/generated/.../super_kill.json 同步修改,未漏改生成物。
  • 改动最小化:未顺带调整其它进度、未改 80 阈值、all_in_one 未受牵连;未引入非 JSpecify 空值注解(符合 AGENTS.md)。
  • 修的就是 issue 声称的最小正确方案,并且保留了恰好 80 的可达成性。

📋 声称验证表

PR 声称 状态 证据
为 super_kill 增加皇家铁砧锤物品条件,保留 80 伤害阈值 ✅ super_kill.json → damage: 80.0 + item.items=anvilcraft:royal_anvil_hammer;datagen hurtEntity(80, ROYAL_ANVIL_HAMMER.get())
传递实际攻击所用的铁砧锤物品,避免耐久耗尽时丢失身份 ✅ AnvilHammerItem:463 传 this;已验证 hurtEnemy 先 hurtAndBreak(会清空 stack),传 stack 反而更糟
保持其他进度和原有调用方式不变 ✅ all_in_one 等 json 无变更;旧重载全部保留(见 ⚠️1)
fixed #5122 ✅ Issue #5122 确为「非皇家锤造成 80 伤害也完成'超杀…差一点'」,期望方案之一(仅允许皇家锤)已被采纳,且与 lang 文案一致

结论: APPROVE — 修复正确且最小,无阻塞问题。建议顺手把 ⚠️1 的 AIR 哨兵重载标注 @Deprecated 或收掉,避免将来静默失效。

🧪 测试建议

被测目标 推荐场景 优先级
datagen 输出 本地/CI 跑 runData,断言 super_kill.json 无 diff(本环境无 java/gradle,未能代跑 compileJava/runData,需在此确认) 🔴
TriggerInstance.matches(damage, item) 皇家锤 + 80.0/79.9 边界;ember/frost/transcendence 造成 ≥80 必须不完成 🔴
AnvilHammerItem.hurtEnemy 回归 皇家锤仅剩 1 点耐久且下落 ≥40 格 → 仍授予(验证传 this 的意义) 🟡
旧数据包兼容 加载无 item 字段的旧 super_kill.json 正常;all_in_one/hurt_entity 仍可完成 🟡
多玩家半径 5 格内旁观玩家是否应完成(按 ⚠️/💡 决定预期) 🟢

由 Hermes Agent 审查

@Gugle2308

Copy link
Copy Markdown
Collaborator

代码审查摘要 — PR #5123

操作: ready_for_review CI/状态: PR 仍为 open(data-status="pullOpened",未合并)
范围: 5 个文件(4 Java + 1 生成 JSON)/ +40 −12 目标分支: dev/1.21/1.6(base 956c11b4,head c8803b2b)

diff 完整性对账: git diff rvbase1216 rvhead5123 与下载的 patch 完全一致(+40 −12、5 文件同名同序),git diff --check 干净,无 No newline。✅

🔴 关键

无。

⚠️ 警告(非阻塞)

  1. Items.AIR 哨兵重载构成"看似可用、实则永不命中"的死路径

    • AnvilHammerHurtEntityTrigger#trigger(ServerPlayer, Float)(2 参)、TriggerInstance#matches(Float)、TriggerUtil#anvilHammerHurtEntity(Level, BlockPos, float)(3 参)在本 PR 后已无任何 in-tree 调用者(base 里唯一调用者 AnvilHammerItem:463 已切到 4 参重载)。
    • 更关键的是语义:任何带 item 条件的实例若从这些入口进入,恒不匹配。字节码已证:ItemPredicate.test 是 if (items.isPresent() && !stack.is(<HolderSet>)) return false;,没有 isEmpty() 早退(mc_method_bytecode_dump.py cs → … b6 00 49 99 00 16 2b … c0 00 4f b6 00 54 9a 00 05 03 ac,末尾 03 ac = return false),而 Items.AIR 不在 royal_anvil_hammer 的 HolderSet 中 ⇒ 走哨兵 = 静默失败。
    • 建议:把 TriggerUtil 的 3 参重载与 trigger 的 2 参重载删除,或至少 @Deprecated + javadoc 标注"不支持 item 条件"(是 public API,直接删可能影响附属 mod,二者择一即可)。
  2. 奖励广播范围 vs "本人使用"语义(既有约定,请确认)
    anvilHammerHurtEntity 经 PlayerUtil.searchPlayerByPos(level, pos, 5) 对目标 5 格内所有玩家逐个 trigger,且物品条件校验的是攻击者手里的锤子,不是受奖玩家手持物 ⇒ 站旁边 4 格、空手的玩家也会拿到"超杀"。这与 hurt_entity / killedEntityByAnvilHammer 的既有语义一致,不是本 PR 引入的回归;但既然条件现在编码了"用皇家锤",请确认 issue [Bug] 特定情况下"超杀......差一点"成就描述错误 #5122 的期望是否就是"攻击者用皇家锤即可"。若要求"受奖者本人持有",需改为按 player.getMainHandItem() 判定。

💡 建议

  1. 数据生成器风格: 建议在 AdvancementLineHelper 加 hammerHurt(String key, float damage, Item item) 重载,保持"一行链式"(其余 30+ 个 helper 都是这个模式),而不是在 AnvilCraftAdvancement 里内联 addCriterion(...) + 新 import criterion 类;顺带避免 hammerHurt(String, float) 变成无调用者的死方法(git grep hammerHurt 现只剩 hammerHurt("hurt_entity") 一处)。
  2. getDefaultInstance() 封顶了数据包表达力: record 字段是完整的 ItemPredicate(ItemPredicate.test 会依次校验 items → components → count),但触发端只传 Item,第三方数据包若在 anvilcraft:anvil_hammer_hurt_entity 的 item 里写组件/数量判定将永不命中。这与项目内 UseItemTrigger 的既有约定一致,非阻塞;若想放开,需在 hurtAndBreak 之前取 stack.copyWithCount(1) 下沉。
  3. 给 this 加一行注释: AnvilHammerItem#hurtEnemy 第 445 行 stack.hurtAndBreak(1, …) 在 trigger 调用之前执行,最后一耐久的击打会把 stack 打成空堆叠,此时 stack.getItem() 返回 Items.AIR(字节码已证:2a b6 00 b8 99 00 09 b2 01 6f a7 00 07 2a b4 00 ed b0 = isEmpty() ? AIR : this.item)——这正是传 this 的原因,对未读过字节码的人是反直觉的。

🟢 看起来不错

  • 修复方向正确(已按 issue [Bug] 特定情况下"超杀......差一点"成就描述错误 #5122 复核): 各锤 calculateFallDamageBonus 为 基础 min(40, ×2)、Ember/Frost min(120, ×2)、Transcendence ×2(无上限)、Royal min(80, ×2) ⇒ 原先三把非皇家锤都能凑到 ≥80 并完成描述为"使用皇家铁砧锤一击造成 80 点伤害"的挑战;加上物品条件 + 保留 80 阈值后,只有皇家锤 fallDistance ≥ 40 可达成,与 en/zh 文案一致(zh_cn、lzh 等已写作皇家锤,无需改 lang)。
  • this 的等价性成立: 仅 AnvilHammerItem 覆写 hurtEnemy,Ember/Frost/Royal/Transcendence 四个子类均未覆写 ⇒ this 一定就是造成伤害的那件锤子。
  • 生成 JSON 与 datagen 同构: "item": { "items": "anvilcraft:royal_anvil_hammer" }(items 为字符串、2 空格逐层缩进)与同分支 geode.json/topaz.json(同样由 ItemPredicate.Builder.item().of(item) 产出)逐字同形;CODEC 字段序 player → damage → item,新键正确落在 damage 之后,手改文件不会与 runData 产物漂移。
  • 向后兼容: 无 damage/无 item 的实例在新 matches 下仍恒真;hurt_entity(hammerHurt("hurt_entity"))等其它 criterion 未受影响;旧数据包只写 damage 仍可触发。
  • 门禁自检: 新增最长行 135 ≤ LineLength 140;import 组内 ASCII 排序正确(EntityPredicate < ItemPredicate < SimpleCriterionTrigger、Item < ItemStack < Items);三组重载(trigger/hurtEntity/matches)与 anvilHammerHurtEntity 均相邻,满足 OverloadMethodsDeclarationOrder;无尾随空白。

📋 声称验证表

PR 声称 状态 证据
为 super_kill 增加皇家铁砧锤物品条件,保留原 80 点伤害阈值 ✅ super_kill.json 增 "item";AnvilCraftAdvancement:162 改用 hurtEntity(80, ROYAL_ANVIL_HAMMER.get())
传递实际攻击所用的铁砧锤物品,避免耐久耗尽时丢失身份 ✅ AnvilHammerItem:463 传 this;ItemStack.getItem() 字节码 + 子类未覆写 hurtEnemy 双向坐实
保持其他进度和原有调用方式不变 ✅ AdvancementLineHelper 未改、hammerHurt("hurt_entity") 未动;criterion 的无条件/仅伤害路径语义等价
fixed #5122 ✅ issue 正文("使用除皇家以外类型的铁砧锤造成 80 点伤害会完成该进度")与修复方向一致

🧪 手动验收矩阵(本仓库此类改动无单测,建议按此验)

场景 期望
皇家锤,坠落 ≥40(damageBonus 80)击杀/击中 ✅ 发放 super_kill
皇家锤,坠落 <40(<80) 不发放
Ember / Frost / Transcendence 锤,damageBonus ≥80 不再发放(修复点)
普攻(无坠落,damageBonus 0)持皇家锤 不发放
旧数据包仅写 "damage": 40 仍可触发(item 缺省恒真)
hurt_entity 兄弟进度 不受影响
目标 5 格内的空手旁观玩家 当前会一并发放(既有半径语义,确认是否符合预期)

结论: COMMENT(无阻塞项,可合并) — 修复方向与实现均正确,this 的必要性经字节码坐实;仅剩 2 条非阻塞确认项(Items.AIR 哨兵死路径清理 / 5 格广播是否等于期望语义)。

PR 标题 Require royal hammer for Super kill 限定超杀进度使用皇家铁砧锤 已符合 <英文> <中文> 格式且描述准确,未作修改。


由 Hermes Agent 审查

@Gugle2308

Copy link
Copy Markdown
Collaborator

💾 Self-improvement review: Patched SKILL.md in skill 'advancement-criterion-pr-review' (1 replacement).

@Gugle2308

Copy link
Copy Markdown
Collaborator

💾 Self-improvement review: Patched SKILL.md in skill 'advancement-criterion-pr-review' (1 replacement). · Patched references/verification-recipes.md in skill 'advancement-criterion-pr-review' (1 replacement).

@PigeonNian
PigeonNian merged commit 0cdc713 into Anvil-Dev:dev/1.21/1.6 Oct 2, 2026
2 checks passed
@Gugle2308

Copy link
Copy Markdown
Collaborator

PR #5123 事件为 closed,按 webhook 规则(closed/labeled → 停止)不作审查、不发布评论。

未执行任何 diff 下载、gh 命令或评论操作。

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.

[Bug] 特定情况下"超杀......差一点"成就描述错误

4 participants