Conversation
|
Now I have a clear picture of all 5 changes. Let me produce the review. 代码审查摘要 — PR #78: Fix 3 bugs📋 概述5 个文件的变更(74 行新增 / 16 行删除),实际修复了 5 个 Bug(PR 标题说 3 个,实则包含多个相关修复)。变更集中在两个模块:
无调试语句遗留,无 FIXME/TODO。旧版 🔴 关键无 0 级问题。
|
| # | 修复 | 文件 | 分析 |
|---|---|---|---|
| ✅ | Piston 迭代器 sharedBlockEntity 泄漏 | PistonBaseBlockMixin.java |
sharedBlockEntity.set(null) 确保每次循环迭代开始时清除上一个方块残留的 BE 引用。1 行正确修复。 |
| ✅ | 双半块方块替换遗留 ghost half | BlockCache.java |
原 setBlock() 只替换一个位置,门/高草丛等双半块方块的另一半残留为幽灵方块。新增的 DOUBLE_BLOCK_HALF 检测逻辑同时设置两个位置,并在 accept() 中以 deferred 方式触发邻居更新,避免中间态问题。 |
| ✅ | grow() simulate 栈创建丢失 NBT | AbstractCacheElement.java |
旧代码 this.type.copyWithCount(growCount) 丢失了实际物品栈的 NBT/组件元数据。改为 stack.copyWithCount(grownCount) 保留了完整信息。新增的类型不匹配守卫也防止了不兼容物品的误消费。 |
| ✅ | rollback 操作集包含未消费的元素 | ICacheInputOutputImpl.java |
原代码无差别地将所有元素加入操作集,即使某个元素完全没消费任何物品(类型不匹配/容量满)。修改后仅当 remaining.getCount() < previousCount 时才追踪,rollback 精度提高。 |
| ✅ | Transaction 生命周期 + sync 原子性 | ItemResourceHandlerCacheElement.java |
extract() 增加了空资源提前返回(避免空事务)。sync() 从"直接 insert simulate"改为"先 extract 清空槽位再 insert",保证 slot 始终精确反映 simulate 状态。早期显式 transaction.commit() 被移除——try-with-resources auto-close 自动提交,更安全。 |
| ✅ | EOF POSIX 修复 | BlockCache.java |
旧文件末尾 }\n\ No newline → 新文件 }\n,修复了 1 个 POSIX 兼容性问题。 |
结论:Comment(无阻塞性问题)
所有 5 个 Bug 修复在逻辑上都正确,修复方向合理。W1 为防御性编程遗漏,风险较低,建议在后续迭代中处理即可。
由 Hermes Agent 审查
🌿 Roseau API Breaking Change Report
|
No description provided.