Fix bugs of smart block placer.修复了智能方块放置器的bug - #4782
Conversation
- 规范顺序索引和存储索引的约定,避免错误计算 - 调整搬运方块的更新标志位,使用兼顾邻居和形状校验的标志 - 添加副部件存活校验跳过逻辑,避免误判 - 优化多方块搬运时的可破坏判断逻辑 - 实现穿梭效应进度检测,触发邻居放置器搬回时的触发器 - 放置器完成放置后复位游标,保证放置顺序稳定 - 修正有序点位构建顺序为层→行→列,保持与普通模式一致 - 增强 Jade 集成的脉冲发生器显示逻辑,空闲状态下进度条可见 - 提升放置器相关声音效果的音量,改善用户体验
Reason: Security scan — [HIGH] Pipe to interpreter: curl | python3: Command pipes output from 'curl' directly to interpreter 'python3'. Downloaded content will be executed without inspection. Reply |
|
分析完成。以下是审查意见(将自动发布到 PR): 代码审查摘要 — PR #4782操作: opened | 范围: 5 个文件(5 Java,0 新增/删除)/ 316 行 diff / +109 −31 编译面核对(先行确认,均通过)
📋 声称验证表
🔴 关键1. 机制链(
后果:多方块( 建议:
验收方法:MOVE 模式下搬运一扇有支撑的门 / 一张床,观察是否永远「闪一下就复原」;在回滚分支打日志可直接看到
|
| 被测目标 | 推荐场景 | 优先级 |
|---|---|---|
BlockPointer.moveToPos 清源步骤 |
MOVE 搬运门/床/高植物/自有多方块机器:应成功且无回滚、无额外掉落 | 🔴 |
BlockPointer.point |
对 Overseer/TransmissionPole/RemoteTransmissionPole/GiantMonolithCore 取指针:确认是否为期望的「不可搬运」 |
🔴 |
blockUpdateFlags |
搬运后目标格是否触发邻居/形状更新,源格周围附属方块(拉杆/火把)行为是否符合预期 | 🟡 |
buildOrderedPositions + resetPositionIndex |
5×5×5 选区、含可替换方块的目标格、打断后重启:顺序应从远到近、从左往右且每轮从头开始 | 🟡 |
结论: REQUEST_CHANGES — #4738 / #4739 的修复干净且与 26.1 分支对齐;#4533 的修法方向对(补更新 + 存活预检),但「清源」步骤套用 UPDATE_ALL 会把门/床/多方块机器的另一半连带摧毁并触发 no-op-false 回滚,使这类搬运彻底失效(且对自有多方块存在物品复制风险),建议拆分标志位并给清源加容错后再合并;同时请确认问题 2 的带 BE 多方块机器不可搬运是否为有意为之。
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched SKILL.md in skill 'minecraft-mod-pr-review' (1 replacement). · Patched references/block-update-flags-multipart-destruction.md in skill 'minecraft-mod-pr-review' (1 replacement). |
代码审查摘要 — PR #4782操作: 📋 声称验证表
🔴 关键问题未发现阻塞性缺陷。以下几处是本次审查中唯一需要维护者确认的点(均按
|
| 被测目标 | 推荐场景 | 优先级 |
|---|---|---|
BlockPointer.moveToPos() |
拉杆/高草/门/告示牌等 canSurvive 依赖型方块移动到无支撑格 → 应拒绝且世界无残留;副部件(高草上半)不误拒 |
🔴 |
buildOrderedPositions() / getStorageIndexForOrder() |
5×5×5 全选点位 × 4 朝向 × upsideDown,核对实际放置序列与存储索引(行优先)逐格一致 |
🔴 |
resetPositionIndex() |
放置中途打断/移除已填格 → 下一轮必须从最外行最左开始;并测量填满 125 格所需 tick 数 | 🟡 |
MOVE_UPDATE_FLAGS |
搬运红石/比较器可读方块 → 邻居与模拟输出必须更新;搬运带内容物的箱子/溜槽 → 内容物不丢失 | 🟡 |
checkShuttlePlacement() |
两台放置器对搬 → 仅触发一次 placer_shuttle;单向搬运(不回程)→ 不触发 |
🟢 |
PulseGeneratorProvider |
空闲/等待/输出三态切换后端与客户端 Jade 数值一致性 | 🟢 |
结论: COMMENT —— 三处 bug 修复与 #4738/#4739/#4533 的期望行为逐条对得上,未发现阻塞性缺陷。合并前建议处理:①「不会再移动多方块」的表述与实现范围不符(自有多方块仍可搬运),②索引归零导致的 O(N²) 空转,③补齐描述中未提及的穿梭进度接线、Jade 与音效改动。
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched SKILL.md in skill 'coordinate-transform-pr-review' (1 replacement). · Patched SKILL.md in skill 'pr-fix-claim-verification' (1 replacement). · Patched SKILL.md in skill 'pr-diff-scope-reconciliation' (1 replacement). |
- 详细描述了MOVE_UPDATE_FLAGS中UPDATE_MOVE_BY_PISTON的作用 - 解释了活塞式移动对onPlace和onRemove方法的影响 - 说明了部分方块根据该标志保留内容物的行为机制
Reason: Security scan — [HIGH] Pipe to interpreter: curl | python3: Command pipes output from 'curl' directly to interpreter 'python3'. Downloaded content will be executed without inspection. Reply |
|
已停止:本 PR #4782 的事件动作为 closed(已于 2026-09-10T06:32:03Z 合并)。按 webhook 审查约束第 1 条, 如需审查,请在 reopened / synchronize 事件或新开 PR 上触发。 |
Reason: script execution via -e/-c flag Reply |
代码审查摘要 — PR #4782操作: synchronize( 🔴 关键1.
建议: 目标放置保留
|
| 声称 | 状态 | 依据 |
|---|---|---|
| fixed #4738 放置顺序出错 | ✅ | 行列循环互换 + 恒等映射;符合「从左侧最外行向右、再往更近一行」 |
| fixed #4739 打断后从头开始 | ✅ | 成功放置后 resetPositionIndex() 复位游标 |
| fixed #4533 不检查合法性/不发更新 | 合法性 ✅(canSurvive);更新 ✅ 但清空源格引入中间态破坏(🔴1);方块自身状态未重算(💡3) |
|
| 不会再移动多方块 | ✅(行为删除) | 删除多方块豁免 → 含 BE 的多方块机器不可搬 |
结论: COMMENT — 核心逻辑(顺序索引约定、canSurvive 校验、游标复位)经交叉验证正确且与三个 issue 的预期一致,方向合理;但 🔴1 的清空标志位是搬运流程中的真实缺陷(依赖掉落表条件才没出事),建议按上文调整标志位并补搬运测试;
🧪 测试建议
| 被测目标 | 推荐场景 | 优先级 |
|---|---|---|
BlockPointer.moveToPos |
门/高花/巨型铁砧/大型蛋糕搬运:源清空阶段不得破坏同批部件;失败时 restoreParts 回滚完整 |
🔴 |
BlockPointer.Type.point |
3×3×3 带 BE 机器(大型坩埚)应返回 null;巨型铁砧/大型蛋糕应返回非 null | 🔴 |
buildOrderedPositions / getStorageIndexForOrder |
5×5×5 全选顺序 = 层→行→列,且与 BlueprintLayout.getPosition 坐标一致 |
🟡 |
resetPositionIndex / selectNextPositionTarget |
成功放置后 currentPlacementIndex==0;中断后从 0 重新扫描且不死循环 |
🟡 |
checkShuttlePlacement |
两个 MOVE+POSITION 放置器对置时触发一次进度;非穿梭布置不触发;改选区/拾取模式后标记清空 | 🟡 |
PulseGeneratorProvider |
空闲/WAITING/OUTPUTTING 三态进度与颜色;waitingTime=0 不除零 |
🟢 |
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched references/block-update-flags-multipart-destruction.md in skill 'minecraft-mod-pr-review' (1 replacement). · Patched SKILL.md in skill 'github-webhook-pr-review' (1 replacement). |
Uh oh!
There was an error while loading. Please reload this page.