Repository navigation
Fix 1.21.4 predicate previews 修复方块预览属性组合 - #142
WhereisFff wants to merge 1 commit into
Conversation
WhereisFff
commented
Oct 4, 2026
- 修复预览状态的属性组合与范围匹配
- fixed [Bug] JEI内多方块合成和多方块转化配方显示异常 AnvilCraft#5206
代码审查摘要 — PR #142操作: opened(PR 状态:open,mergeable ✅,未合并) 🔴 关键问题无。未发现会引入崩溃或语义倒退的问题。
|
| 声称 | 状态 | 对应实现 |
|---|---|---|
| 修复预览状态的属性组合 | ✅ | constructStatesForRender 链式 applyToState + allMatch(match) 收尾 |
| 修复范围匹配 | ✅ | RangedMatcher.applyToState >=/<= 反转修正 |
| fixed Anvil-Dev/AnvilCraft#5206 | ✅ | 库侧修复(AnvilLib 提供 BlockStatePredicate,AnvilCraft 消费) |
🧪 测试建议
| 被测目标 | 推荐测试场景 | 优先级 |
|---|---|---|
constructStatesForRender() |
单精确匹配 / 单范围 min-only / max-only / 双范围 / 精确+范围组合 / 多 matcher-list(OR) / 互斥组合→空 | 🔴 |
RangedMatcher.applyToState |
min==max 边界、min>max(应空)、min/max 字符串非法(回退 List.of(state) 后被过滤) |
🔴 |
applyToState ↔ match 一致性 |
断言 applyToState 的输出状态全部 matcher.match()==true |
🟡 |
多方块 HolderSet |
部分方块缺该属性时整条 matcher-list 被正确剪枝 | 🟡 |
结论: APPROVE(可合并) — 两处修复都指向根因、语义自洽,diff 极小且完整。上述均为非阻塞项,建议至少确认下游 .getFirst() 守卫并补一个 constructStatesForRender 用例。
标题说明:
gh auth status显示 token 失效(hosts.yml is invalid),按流程未执行gh pr edit。当前标题Fix 1.21.4 predicate previews 修复方块预览属性组合已满足「英文 + 中文」格式,可保留;如需更精确可改为Fix 1.21.4 predicate preview state combination and range matching 修复方块预览属性组合与范围匹配。
由 Hermes Agent 审查
|
💾 Self-improvement review: Skill 'blockstate-predicate-review' created. |
🌿 Roseau API Breaking Change Report
|
🌿 Roseau API Breaking Change Report
|
🌿 Roseau API Breaking Change Report
|
🌿 Roseau API Breaking Change Report
|
🌿 Roseau API Breaking Change Report
|
代码审查摘要 — AnvilLib PR #142操作: ready_for_review(PR 当前 diff 完整性对账 ✅ — 🟢 修复正确性(两处 hunk 都命中根因)hunk 2 — 模式 1: -.map(minValue -> value.value().compareTo(minValue) < 0) // 只保留「低于下界」
+.map(minValue -> value.value().compareTo(minValue) >= 0)
-.map(maxValue -> value.value().compareTo(maxValue) > 0) // 只保留「高于上界」
+.map(maxValue -> value.value().compareTo(maxValue) <= 0)两个 Python 逐行转写对照(真实 matcher 组合驱动,脚本
hunk 1 — 模式 2: 对照实测( 这条链与 issue #5206 症状一「楼梯朝向周期性错误(时而正确、时而全部朝北)」逐字吻合: 修后不变量:
|
| 声称 | 状态 | 对应实现 |
|---|---|---|
| 修复预览状态的属性组合 | ✅ | hunk1 链式 flatMap + allMatch(match) 收尾过滤 |
| 修复范围匹配 | ✅ | hunk2 >=min / <=max,与 RangedMatcher.match 对齐 |
fixed AnvilCraft#5206 |
症状一(楼梯朝向周期性)✅;症状二(产物巨型铁砧时有时无)不由本路径解释(配方的 anvil 谓词无 min/max),需复测 |
🧪 测试建议
仓库内无任何测试引用 constructStatesForRender / RangedMatcher。建议覆盖(纯函数抽取后单测,或 GameTest):
| 被测目标 | 推荐场景 | 优先级 |
|---|---|---|
RangedMatcher.applyToState |
min-only / max-only / min==max / min>max(应空) / 非法值字符串 | 🔴 |
RangedMatcher.applyToState |
state 缺该属性 → List.of(state),收尾过滤剔除 |
🔴 |
constructStatesForRender |
精确+范围混合组、多 matcher-list(OR)、互斥组合(同名属性两个 exact 不同值)应空 | 🔴 |
constructStatesForRender |
断言:输出每个 state 都满足 testWithoutEntity() |
🔴 |
constructStatesForRender |
空 AND 组 [{}]、多方块 HolderSet 缺属性剪枝 |
🟡 |
结论: APPROVE — 两处修复均正确、可合并;症状二与 dev/1.21.1 backport 两点写为确认项,其余为非阻塞建议。
标题说明:
gh auth status显示 token 失效(The token in /opt/data/home/.config/gh/hosts.yml is invalid,本会话按纪律跳过gh pr edit,未导出任何凭据)。原标题Fix 1.21.4 predicate previews 修复方块预览属性组合已满足「英文 + 中文」格式,可保留;若想更精确,建议:Fix BlockStatePredicate render-state combination and ranged matching 修复方块状态谓词预览的属性组合与范围匹配。
由 Hermes Agent 审查
|
PR #142 状态为 closed,按 webhook 规则(closed/labeled → 停止)不进行审查、不发布任何评论。已停止,无操作。 |