Modify the crab trap logic with 1.21.1 修改1.21.1版本的蟹笼的逻辑#3967
Conversation
burin-ljx
commented
Jul 3, 2026
- Resolved [TODO] 蟹笼调整 #3966
Reason: Security scan — [MEDIUM] Schemeless URL in sink context: URL without explicit scheme passed to a command that downloads/executes content; [MEDIUM] Schemeless URL in sink context: URL without explicit scheme passed to a command that downloads/executes content; [HIGH] Pipe to interpreter: curl | python3: Command pipes output from 'curl' directly to interpreter 'python3'. Downloaded content will be executed without inspection. Reply |
|
我现在掌握了完整的变更情况,以下是我的审查。 代码审查摘要PR #3967 — 修改蟹笼逻辑(BlockEntity → BlockState 属性重构) 总体评价:请求更改(1 个关键问题,2 个警告,2 条建议) 🔴 关键
|
Reason: Security scan — [HIGH] Confusable Unicode characters in text: Content contains Unicode characters visually identical to ASCII (math alphanumerics, Cyrillic/Greek lookalikes) appearing near ASCII text, which may indicate a homoglyph attack Reply |
|
基于对 PR #3967 的 diff 分析(786 行,20 文件),以下是审查结果。 代码审查摘要结论:请求更改 — 发现 2 个关键问题,1 个警告,3 条建议 🔴 关键
|
|
我现在已完成对 PR #3967 的全面审查。以下是完整的审查意见。 PR #3967 代码审查摘要结论:请求更改(1 个关键问题,1 条建议) PR 概要:将蟹笼从 BlockEntity + ItemStackHandler 存储模式重构为 BlockState Property ( 🔴 关键1. 战利品产量爆炸性增长 —
|
|
我已下载并分析完所有差异文件。按 PR 规模(20 个文件,786 行 diff),以下是完整的审查结果。 代码审查摘要PR #3967 — 蟹笼逻辑重构:从 BlockEntity + IItemHandler 存储改为 BlockState IntegerProperty FISHING 计数 + 即时战利品生成 🟢 主要更改概览
架构变更
🔴 关键
|
| 等级 | 计数 |
|---|---|
| 🔴 关键 | 1 — 战利品概率 10 倍提升需确认设计意图 |
| 3 — 重复逻辑、EOF 换行符、FISHING 边界值 | |
| 💡 建议 | 3 — 返回类型、API 可见性、跨语言翻译 |
| ✅ 良好 | 7 — 架构简化、Jade/HUD 集成、清理完整性 |
|
现在我已经完整理解了所有的变更。以下是审查结果。 代码审查摘要:PR #3967 — 蟹笼逻辑重写结论:COMMENT(建议) — 架构设计方向正确,但有两个需注意的问题和一个代码质量建议。 架构变更概述此 PR 从根本上重构了蟹笼的工作方式: 旧设计(BE 存储模式): 依赖 新设计(BlockState 计数 + 即时生成模式): 完全移除了 BlockEntity。通过 这是一个清晰且正确的架构改进。 BE 的移除减少了内存占用、tick 开销和 NBT 序列化复杂度。红石模拟输出( 🟢 看起来不错
|
| 场景 | 旧版(每 tick 0.1×6 概率) | 新版(满 FISHING 收获) |
|---|---|---|
| 单次产出物品数量 | ~0.6 个/tick(被库存容量限制) | 90 个(一次性全部投出) |
建议确认是否经过了 playtest 验证:满级蟹笼一脚踩出 90 个物品(加掉落的 15 格实体)会不会造成性能或体验问题。如果视觉/性能上需要控制,可考虑:
- 降低 FISHING 最大值(如 5 或 8)
- 或
randomTick中给每 tick 设置chance < 1的递增概率(旧系统用 0.1 而新版用 100% 的增量)
🔍 额外检查点验证
| 检查项 | 结果 |
|---|---|
BE 删除完整性:ModBlockEntities.CRAB_TRAP 已移除 |
✅ |
CrabTrapStorageProvider → CrabTrapBlockStateProvider 替换 |
✅ 两端同步 |
Java 导入更新(CrabTrapBlockEntity 引用已全部清除) |
✅ |
rotate()/mirror() 保留 |
✅(位置调整但功能不变) |
SimpleWaterloggedBlock 实现保留 |
✅ |
IHammerRemovable 兼容性(不依赖 BE) |
✅ |
randomTick 中 WATERLOGGED 检查和旧逻辑一致 |
✅ |
客户端守卫 (level.isClientSide()) |
✅ 在 useWithoutItem 和 HitCrabTrapBehavior 中都有 |
| 语言文件同步(en_us ↔ en_ud) | ✅ |
| 战利品表 chance 一致性(源码 + 6 个 JSON) | ✅ |
总结: 架构层面是一次干净的改进 — 消灭了一个仅做 9 格库存的 BE,用 BlockState 属性和即时战利品生成替代,减少了内存和 tick 开销,增加了红石可观测性。主要建议是提取重复的战利品生成逻辑,并关注新版满级产出量的游戏平衡性。
—— 由 Hermes Agent 审查
|
PR #3967 已关闭(closed),根据审查流程第 0 步:"closed" / "labeled" → 停止,不发评论。 无需审查。 |