Auto enchanting table 添加自动附魔台 - #4050
Conversation
|
现在我已获得所有必要信息,将输出完整的审查意见。 代码审查摘要PR: #4050 — Auto enchanting table 🔴 关键1.
|
|
现在我已完整理解这个 PR。下面是代码审查报告: 代码审查摘要 — PR #4050: Auto Enchanting Table结论:请求更改(2 个关键问题,1 个警告,2 条建议) 🔴 关键
|
|
我已经获取了足够的变更信息。以下是完整审查结果: 代码审查摘要结论:请求更改(2 个关键问题,1 个警告,4 条建议) PR 实现了自动附魔台的核心功能:通过书架提供 EXP 流体、消耗 EXP 附魔物品、支持多种宝石/金属锭作为引物材料。整体架构符合 AnvilCraft 风格(Registrum 注册、26.1 ValueOutput/ValueInput 序列化、IPowerConsumer)。以下为具体发现: 🔴 关键
|
|
好的,我已经仔细审查了所有 1682 行差异。以下是我的审查意见。 代码审查摘要 — PR #4050: Auto enchanting table 添加自动附魔台结论:评论(无阻塞性问题,一些建议和改进项) 范围: 16 个 Java 文件(12 个新文件 + 4 个修改文件),5 个生成资源文件,1 个 blockstate JSON,1 个 PNG 纹理,1 个 Gradle 依赖变更。 严重无 警告无 建议
看起来不错
其他检查
|
|
Now I have a thorough understanding of the PR. Let me compile the review. 代码审查摘要 — PR #4050: 自动附魔台审查者: Hermes Agent 结论:评论(有建议,无阻塞性问题) 概述该 PR 新增了一个「自动附魔台」方块,包含完整的 26.1 生态集成(注册、BE、Menu、Screen、Renderer、Capability 注册)。总 24 个变更文件,其中 12 个新增、0 删除。主要功能:
|
| 项目 | 状态 |
|---|---|
| 硬编码密钥/凭据 | ✅ 无 |
Objects.requireNonNull 对可能为 null 的返回值 |
✅ 无新增 |
@SuppressWarnings("deprecation") 滥用 |
✅ 无新增(仅已存在的 1 处) |
| Lombok 循环递归 | ✅ 无手动覆写 getter/setter |
| Blockstate 模型文件存在性 | |
| 序列化与反序列化一致性 | enchantmentSeed) |
onChanged / setChanged() / sendBlockUpdated |
✅ 三者同时调用正确 |
| PowerGrid null + isWorking 双保险 | ✅ grid != null && !grid.isWorking() |
| 注册 builder 链完整性 | ✅ ModBlocks、ModBlockEntities、ModMenuTypes 链均以 .register() 结尾 |
| 26.1 Nullable 注解迁移 | |
| EOF 换行符 | |
| PR 范围纯净度 | ✅ 全部与自动附魔台相关(含 pipez 依赖,是合理的) |
|
现在我已完整阅读了整个 diff,以下是审查结果。 代码审查摘要PR #4050 — 自动附魔台(synchronize) ✅ 看起来不错
|
|
现在我已经完整审阅了整个 PR。以下是审查结果: 代码审查摘要 — PR #4050: 自动附魔台结论:请求更改(1 个关键问题,2 个警告) 作者: burin-ljx | 分支: 🔴 关键1. 客户端与服务器容量校验不一致 — 客户端的预选限制过于宽松在 totalLevel * 400 <= this.menu.getBlockEntity().getFluidHandler().getCapacityAsInt(0, FluidResource.EMPTY)而 totalLevel * 400 > this.fluidHandler.getAmountAsInt(0)影响: 当存储经验液体不足时,客户端仍允许玩家选择大量附魔(显示为可选),但由于服务器校验会失败,附魔处理(引物模式)将静默不执行——无任何反馈告诉玩家原因。玩家会看到按钮可选但机器不工作,体验令人困惑。 建议: 将客户端校验也改为检查
|
|
I now have a comprehensive understanding of the entire PR. Here is my review. 代码审查摘要PR #4050 — 🔴 关键
|
- 添加自动附魔台方块 - 添加自动附魔台方块实体 - 添加自动附魔台方块实体渲染器 - 实现渲染书本模型 - 实现流体储存 - 实现物品储存 - 实现流体渲染
- 实现自动附魔台的无引物、原版的附魔功能 - 修复创造板条箱渲染物品的z打架
5206331 to
834f06d
Compare
|
All analysis complete. Here is the review: 代码审查摘要 — PR #4050: Auto enchanting table 自动附魔台操作: synchronize 🔴 关键
|
| 声称 | 状态 | 对应文件 |
|---|---|---|
| 自动附魔台(Resolved #3629) | ✅ | AutoEnchantingTableBlock/BE/Menu/Screen/SyncPacket/Renderer + 配方、战利品表、tag、lang、blockstates |
结论: REQUEST_CHANGES — 功能完整、API 用法与仓库惯例一致,但 🔴1(断电持续附魔)是明确的逻辑缺口,🔴2(包校验缺失)存在多人游戏被滥用风险,两者修复后即可合并。
🧪 测试建议
| 被测目标 | 推荐测试场景 | 优先级 |
|---|---|---|
serverTick |
电网不工作但 OVERLOAD=true 时不应消耗经验液/移动物品;电网恢复后应恢复工作 | 🔴 |
SyncPacket.handleOnServer |
未打开菜单的玩家发送包应被拒绝;越权位置应被拒绝;非法附魔 id 应被过滤 | 🔴 |
loadAdditional |
openMenu 保存/加载往返一致性 | 🟡 |
applyEnchantment |
互斥附魔组合(Fortune+Silk Touch)不产生冲突物品、不抛异常 | 🟡 |
| 序列化 | 含物品/经验液/选择集/引物物品的 BE 保存后加载,字段完整 | 🟡 |
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched SKILL.md in skill 'minecraft-mod-pr-review' (1 replacement). |
|
所有交叉引用验证完毕(ModEnchantments 常量、护符物品、磁电核心注册名、ModMenuTypes.open 先例均存在)。审查完成,输出如下: 代码审查摘要 — PR #4050操作: synchronize ✅ API 迁移健康度(26.1)
🔴 关键
|
| 声称 | 状态 | 对应文件 |
|---|---|---|
| 自动附魔台方块(resolves #3629) | ✅ | AutoEnchantingTableBlock, AutoEnchantingTableBlockEntity, AutoEnchantingTableMenu/Screen, AutoEnchantingTableSyncPacket, Renderer |
结论: REQUEST_CHANGES — 功能主体完整、API 健康度好,但 TriStateButton 自动切换导致 SmartBlockPlacerScreen 位置按钮功能回归(本 PR 同时改动了这两个文件,必须适配),另有空附魔列表仍扣费、zh_cn 缺失等警告项建议一并处理。
🧪 测试建议
| 被测目标 | 推荐测试场景 | 优先级 |
|---|---|---|
AutoEnchantingTableBlockEntity.serverTick() |
无引物:空附魔列表不扣费;流体不足不吞物品;书→附魔书 / 非书路径;引物:不兼容附魔计费一致性 | 🔴 |
TriStateButton.onPress() + SmartBlockPlacerScreen |
位置按钮点击选中/取消状态回归;skip/stop 双按钮互斥 | 🔴 |
saveAdditional/loadAdditional |
含 selectedEnchantments/cooldown/LastPrologueItem/openMenu 的 round-trip | 🟡 |
FluidDisplayWidget |
空/满/部分容量渲染边界(capacity=0 不 blit) | 🟢 |
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched references/power-consumer-machine-review.md in skill 'minecraft-mod-pr-review' (1 replacement). · Patched SKILL.md in skill 'minecraft-mod-pr-review' (1 replacement). |
Reason: script execution via -e/-c flag Reply |
|
TriStateButton 重构确认对 SmartBlockPlacerScreen 行为等价(回调显式 setSelected 覆盖 toggle)。所有关键点已验证,现在整理审查报告。 代码审查摘要 — PR #4050操作: synchronize ✅ API 健康度(26.1 分支)
🔴 关键问题1.
书架 < 4 时(如刚建台只有 1-2 个书架),有 1/3~2/3 概率玩家损失全部经验液体且拿到未附魔的物品。建议:仅从 2.
|
| 声称 | 状态 | 对应文件 |
|---|---|---|
| 自动附魔台 #3629 | ✅ | AutoEnchantingTableBlock(+Entity/Menu/Screen/Renderer/…) 全套 |
| 无引物模式(书架+exp 液体随机附魔) | serverTick — cost=0 槽位白扣经验(见 🔴1) | |
| 引物模式(护符/宝石/矿物定向附魔,可多选) | ✅ | AutoEnchantingTableMenu.getEnchantmentList(11 类引物映射完整,含 ModEnchantments 5 键) |
| 经验液体接入(EXP 流体 handler + 发射器) | ✅ | FluidStacksResourceHandler + ModDispenserBehavior.EXP_BUCKET |
结论: REQUEST_CHANGES — 核心功能实现完整、26.1 API 迁移干净,但 🔴1(无引物模式白扣经验,直接影响玩家资产)和 🔴2(openMenu 持久化导致重启后功能停摆)需修复后再合并。其余为警告/建议级。
🧪 测试建议
| 被测目标 | 推荐测试场景 | 优先级 |
|---|---|---|
serverTick 无引物模式 |
书架 0~3(槽位部分无效)时连续多次处理,断言不扣 exp 且不转出未附魔物品 | 🔴 |
saveAdditional/loadAdditional |
保存时 isOpenMenu=true → 重启 → 引物模式仍可处理 |
🔴 |
| 经验不足时引物模式 | totalLevel*400 > fluid 余额 → 物品保持输入槽、无扣减 |
🟡 |
setItem 截断 |
非 capability 路径放入 64 堆 → 断言不静默丢物品 | 🟡 |
canSelect 边界 |
totalLevel*400 == 容量/余额 时 UI 与服务端行为一致 |
🟡 |
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched references/power-consumer-machine-review.md in skill 'minecraft-mod-pr-review' (1 replacement). · Patched SKILL.md in skill 'minecraft-mod-pr-review' (1 replacement). |
|
|
|
I reached the maximum iterations (90) but couldn't summarize. Error: <title>504 Gateway Time-out</title>504 Gateway Time-outopenresty
|
|
💾 Self-improvement review: Patched references/vanilla-api-signature-verification.md in skill 'minecraft-mod-pr-review' (1 replacement). · Patched SKILL.md in skill 'minecraft-mod-pr-review' (1 replacement). |




Uh oh!
There was an error while loading. Please reload this page.