Skip to content

Fixed fishtank recipe bug again#84

Merged
Gu-ZT merged 1 commit into
dev/1.21.1from
dev/fix4
Jul 14, 2026
Merged

Fixed fishtank recipe bug again#84
Gu-ZT merged 1 commit into
dev/1.21.1from
dev/fix4

Conversation

@WhereisFff

Copy link
Copy Markdown
Contributor

No description provided.

@Gugle2308

Copy link
Copy Markdown

代码审查摘要

结论:✅ 批准(无阻塞性问题)

更改范围: 1 个文件,+25 / -0 行

🔍 分析

PR 修复了 ItemHandlerCacheElement.sync() 中 Fishtank 配方缓存的一个 Bug。原代码每次同步时无条件执行 extractItem(Integer.MAX_VALUE) + insertItem(),即使槽位中的物品与 simulate 栈完全一致,也会清空再重新填入,导致 Fishtank 配方的物品被非必要地消耗。

修复引入了三级早期返回路径,按优先级依次检查:

路径 条件 操作 优化效果
Level 0 槽位栈与 simulate 完全相同(类型+数量) 直接 return 完全消除操作(最核心的修复)
Level 1 handler 支持 IItemHandlerModifiable setStackInSlot() 直接赋值,跳过 extract+insert 两次操作
Level 2 同物品类型但数量不同 insertItem/extractItem 仅差值 只操作差额,不翻底
Fallback 完全不同物品 原逻辑 extractAll + insertAll 保留原始行为,无行为退化

✅ 确认正确的点

  • matches() 方法正确处理了空栈组合(全空=匹配,单空=不匹配)
  • IItemHandlerModifiable 分支用 copy() 避免引用泄漏
  • 差值分支区分了 positive/negative,符号正确
  • growSimulateStack.clear() / shrinkSimulateStack.clear() 放在所有 early return 之前执行——不会漏清理
  • matches() 声明为 private static,良好的工具方法实践

💡 建议(非阻塞)

  • matches() 调用处 ItemHandlerCacheElement.matches(stack, this.simulate) 可简写为 matches(stack, this.simulate),因为在同一个类中。不过不影响功能。

📝 总结

这是一个定位精准、实现干净的 Bug 修复。三级 early-return 结构清晰,无副作用或回归风险。可以直接合并。

@Gu-ZT Gu-ZT linked an issue Jul 14, 2026 that may be closed by this pull request
1 task
@Gugle2308

Copy link
Copy Markdown

🌿 Roseau API Breaking Change Report

Module Status Breaking Changes
codec ⚪ Skipped
collision ⚪ Skipped
config ⚪ Skipped
integration ⚪ Skipped
moveable-entity-block ⚪ Skipped
network ⚪ Skipped
rendering ⚪ Skipped
space-select ⚪ Skipped
font ⚪ Skipped
util ⚪ Skipped
explosion ⚪ Skipped
rpc ⚪ Skipped
multiblock ⚪ Skipped
recipe ⚪ Skipped
registrum ⚪ Skipped
sync ⚪ Skipped
wheel ⚪ Skipped
main ⚪ Skipped

Full CSVs: see the Artifacts section of this workflow run.

@Gu-ZT
Gu-ZT merged commit e78d020 into dev/1.21.1 Jul 14, 2026
32 of 33 checks passed
@Gugle2308

Copy link
Copy Markdown

PR #84 的 action 是 closed(已关闭)。

根据审查流程步骤 0 的规则:

"closed" / "labeled"停止,不发评论

该 PR 已被合并或关闭,无需审查。不发布任何评论。

@Gu-ZT
Gu-ZT deleted the dev/fix4 branch July 14, 2026 11:52
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.

[Bug] 鱼缸加工bug

3 participants