Skip to content

Fix simple chute not dropped when rotated to facing magnetic chutes 修复简易溜槽被旋转至与磁性、简易磁性溜槽嘴对嘴时不会被破坏的问题 - #4669

Open
PopSlime wants to merge 1 commit into
Anvil-Dev:dev/1.21/1.6from
PopSlime:fix-simple-chute-change
Open

Conversation

@PopSlime

@PopSlime PopSlime commented Sep 1, 2026

Copy link
Copy Markdown

No description provided.

@PopSlime PopSlime changed the title 修复简易溜槽被旋转至与磁性、简易磁性溜槽嘴对嘴时不会被破坏的问题 Fix simple chute not dropped when rotated to facing magnetic chutes 修复简易溜槽被旋转至与磁性、简易磁性溜槽嘴对嘴时不会被破坏的问题 Sep 1, 2026
@Gugle2308

Copy link
Copy Markdown
Collaborator

审查完成。所有关键点已验证:API 存在且覆盖完整、修复逻辑与磁性溜槽侧对称写法完全一致、行为正确。

代码审查摘要 — PR #4669

操作: opened
范围: 1 个文件 (1 Java, 0 新增, 0 删除) / 32 行 diff
修复目标: 简易溜槽被铁砧锤旋转至与磁性溜槽/简易磁性溜槽嘴对嘴时,无法触发双方破坏(原 bug 只认普通/简易溜槽)

🔴 关键

无。

⚠️ 警告

无。

💡 建议

  • SimpleChuteBlock.java L250(未改动区域,非阻塞) — 本 PR 修复的 change() 在目标分支上仍残留一处同类旧模式newState.is(ModBlocks.CHUTE.get())(L165,getDropItem/类方法处)。该处若也涉及"溜槽互撞判定"会同样漏掉磁性两兄弟;若不涉及(如仅物品掉落判定)则无需处理。可顺手用 isChuteBlock 统一,但不阻塞本次合并

🟢 看起来不错

  • 修复精准 — 旧逻辑 facingState.is(CHUTE) || facingState.is(SIMPLE_CHUTE) 只覆盖两种普通溜槽,旋转简易溜槽使其与磁性/简易磁性溜槽嘴对嘴时直接落入 HammerRotateBehavior.DEFAULT,双方不被破坏。新逻辑改用 ChuteBlock.isChuteBlock + ChuteBlock.getFacing 完整覆盖 4 种溜槽,bug 根因被正确消除。
  • 对称性 ✅SimpleMagneticChuteBlock.change()(目标分支 L266-267)已用完全相同的 isChuteBlock && getFacing == newFacing.getOpposite() 模式,本 PR 将简易溜槽对齐到兄弟方块的标准写法,两处行为一致。
  • API 验证 ✅ — 目标分支 dev/1.21/1.6ChuteBlock.isChuteBlock 覆盖 CHUTE/SIMPLE_CHUTE/MAGNETIC_CHUTE/SIMPLE_MAGNETIC_CHUTE(含 CFA 物流接口),getFacing 兼容 ChuteBlock.FACINGMagneticChuteBlock.FACING 两个属性,== 比较 Direction 无 null 风险(属性必有值)。新代码在目标分支可编译且无 NPE 隐患。
  • 附带修正 — 顺带修复了 getChangeableProperty 覆写方法的缩进(原为缺失缩进的 public Property<?>),符合项目风格。

📋 声称验证表

声称 状态 对应文件
修复简易溜槽旋转至与磁性、简易磁性溜槽嘴对嘴时不被破坏 SimpleChuteBlock.change()isChuteBlock + getFacing == newFacing.getOpposite()

结论: APPROVE — 单文件、逻辑正确、与既有对称实现一致,修复了真实的漏判 bug。

🧪 测试建议

被测目标 推荐测试场景 优先级
SimpleChuteBlock.change() 简易溜槽嘴对嘴(反向)朝向:普通溜槽、简易溜槽、磁性溜槽、简易磁性溜槽 4 种邻居均被破坏;同向/侧向邻居不破坏 🟡
SimpleChuteBlock.change() 旋转后目标位置为空气/非溜槽方块时回退到 HammerRotateBehavior.DEFAULT 🟢

由 Hermes Agent 审查

@Gugle2308

Copy link
Copy Markdown
Collaborator

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

@Gugle2308

Copy link
Copy Markdown
Collaborator

All verification complete. Let me compile the review.

代码审查摘要 — PR #4669

操作: edited
范围: 1 个文件 (1 Java) / 32 行 diff

变更内容

SimpleChuteBlock.change() 中,当铁砧锤旋转简易溜槽时,检测相邻方块是否与旋转后的朝向嘴对嘴(getFacing(facingState) == newFacing.getOpposite()),若成立则破坏当前方块并掉落资源。修复前该检查只覆盖普通溜槽(CHUTE)和简易溜槽(SIMPLE_CHUTE)两种方块,且用 facingState.getValue(FACING) 直接读取朝向。

修复后改用 ChuteBlock.isChuteBlock(facingState) + ChuteBlock.getFacing(facingState),与 ChuteBlock(已含此修复)和 MagneticChuteBlock / SimpleMagneticChuteBlock(目标分支上已使用此模式)保持一致,并将判断从嵌套 if 扁平化为 &&

✅ 验证结果

  • isChuteBlock 覆盖范围ChuteBlock.java:110-128):普通溜槽、简易溜槽、磁性溜槽、简易磁性溜槽、以及 ACTIVE 状态下的天体锻砧物流接口。行为与目标分支上 ChuteBlock.change() / MagneticChuteBlock.change() 完全一致 ✅
  • getFacing 兼容性ChuteBlock.java:131-142):FACING_HOPPERMagneticChuteBlock.FACING(全方向)→ 水平方向属性,逐级回退,可正确读取所有溜槽变体的朝向 ✅
  • 分支状态确认:目标分支 dev/1.21/1.6SimpleChuteBlock 仍为旧代码(仅检查 CHUTE + SIMPLE_CHUTE),此 PR 确实是目标修复;而 ChuteBlock 和磁性溜槽类在目标分支已用 isChuteBlock/getFacing
  • 附带修复getChangeableProperty 的缩进问题(public 未缩进)顺手修正,无行为影响 ✅

🟢 看起来不错

  • 修复精准:将嵌套 if + 直接 getValue(FACING) 替换为统一的 isChuteBlock + getFacing,解决了磁性/简易磁性溜槽嘴对嘴时简易溜槽不破坏的问题
  • 与项目现有模式完全一致(ChuteBlock.changeMagneticChuteBlock.changeSimpleMagneticChuteBlock.change 均为相同写法),DRY 且无逻辑分叉
  • 破坏逻辑(setBlock AIR + levelEvent(2001) + dropResources + 提前 return true)保持不变,行为等价

📋 声称验证表

声称 状态 对应文件
修复简易溜槽被旋转至与磁性、简易磁性溜槽嘴对嘴时不会被破坏 SimpleChuteBlock.change()

结论: APPROVE — 逻辑正确、与既有模式一致、无回归风险。顺带一提,MagneticChuteBlockSimpleMagneticChuteBlockgetChangeableProperty 方法同样存在 public 缩进问题(public Property<?> 顶格),可考虑一并修掉(非阻塞)。


由 Hermes Agent 审查

@Gugle2308

Copy link
Copy Markdown
Collaborator

💾 Self-improvement review: Patched SKILL.md in skill 'tool-block-interaction-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.

2 participants