Fix 3 bugs in 1.21.1#79
Conversation
|
以下是 PR #79 的代码审查结果: 代码审查摘要 — PR #79: Fix 3 bugs in 1.21.1结论:评论(3 个修复均正确,无阻塞性问题,有少量代码质量建议) 🔍 修复分析Bug 1:活塞推动可移动实体方块时 BlockEntity 引用泄漏文件: ✅ 正确。 旧的 Bug 2:双格方块(门/大花)替换时另一半未被正确处理文件: ✅ 核心逻辑正确:
💡 建议: ✅ 附带修复: 旧 Bug 3a:Item 缓存中 grow() 允许不兼容物品混合文件: ✅ 关键修复: 当 ✅ 额外修复: Bug 3b:ICacheInputOutputImpl.grow() 记录了未消费物品的元素文件: ✅ 正确。 旧代码将所有元素加入操作集,即使某些元素没有消费物品(因物品类型不匹配等)。回滚时会无辜地对这些元素调用 Bug 3c:ItemHandlerCacheElement.sync() 不安全的栈突变文件: ✅ 正确。 旧代码直接对 💡 注意: 新代码在 slot 原有物品不为空但 ✨ 整洁性
💡 建议(非阻塞)
🟢 看起来不错
由 Hermes Agent 审查 |
代码审查摘要:PR #79 — Fix 3 bugs in 1.21.1结论:批准(Approve) 三个 Bug 修复逻辑正确、改动干净,无引入新问题。 📋 文件变更总览
共 5 个文件,约 80 行有效变更。 🟢 严重问题无。 🟡 警告无。 💡 建议
✅ 修复分析#70 — PistonBaseBlockMixin: 共享变量泄漏+sharedBlockEntity.set(null);问题:Mixin 中 修复:在每轮迭代开始前显式置 null。正确 ✅ #71 — BlockCache: 双方块替换时邻居更新破坏对方问题:当模拟替换双植物/门等双块方块( 修复:
验证要点: // 双块匹配条件:另一半必须是同种方块且 HALF属性互补
boolean isMatchingOtherHalf = oldOtherState.is(oldState.getBlock())
&& oldOtherState.hasProperty(BlockStateProperties.DOUBLE_BLOCK_HALF)
&& oldOtherState.getValue(BlockStateProperties.DOUBLE_BLOCK_HALF) == otherHalf;检查无误 ✅ Batch 邻居更新: #72 — Cache Simulation: 物品类型不匹配与计数错误三个子修复: ① +if (!this.simulate.isEmpty() && !ItemStack.isSameItemSameComponents(stack, this.simulate)) return copy;防止 simulate 中已有物品 A 时尝试 grow 物品 B 导致类型混淆。✅ ② -this.simulate = this.type.isEmpty() ? stack.copyWithCount(growCount) : this.type.copyWithCount(growCount);
+this.simulate = stack.copyWithCount(grownCount);旧代码使用了 同时移除了对 ③ -int previousCount = stack.getCount();
-ItemStack remaining = element.grow(stack, false);
-if (remaining.getCount() < previousCount) {
- elements.add(element);
-}
-stack = remaining;旧代码将所有元素加入 ④ -if (stack.isEmpty()) {
- this.iItemHandler.insertItem(this.slot, this.simulate, false);
-} else {
- stack.setCount(this.simulate.getCount());
-}
+if (!stack.isEmpty()) {
+ this.iItemHandler.extractItem(this.slot, Integer.MAX_VALUE, false);
+}
+if (!this.simulate.isEmpty()) {
+ this.iItemHandler.insertItem(this.slot, this.simulate.copy(), false);
+}旧代码当 slot 已有物品且 simulate 类型不同时, 📝 附加检查
总结:三个 Bug 修复的根因分析准确,修复方案正确无副作用,代码质量良好。建议批准合并。 |
🌿 Roseau API Breaking Change Report
|
PR #79 — 状态:closed根据审查工作流 Step 0 的要求:PR 状态为 closed → 停止,不发评论。 该 PR 已被合并或关闭,无需执行代码审查。 |
Uh oh!
There was an error while loading. Please reload this page.