Implement features of the blocks for the storage system 添加存储系统方块的功能#3795
Implement features of the blocks for the storage system 添加存储系统方块的功能#3795QiuShui1012 wants to merge 8 commits into
Conversation
…zation improvements
…gs and display modes
|
现在我对所有变更有了全面了解。以下是完整的审查报告。 代码审查摘要结论:请求更改(1 个关键问题,3 条警告,4 条建议) 🔴 关键
|
|
现在我已经掌握足够信息,可以提交完整的审查了。 代码审查摘要结论:请求更改(2 个严重 bug,1 个警告,多条建议) PR 范围: 存储系统方块功能实现 + 包结构重构。90 个文件变更(84 Java,5 生成资源,1 资源文件)。 🔴 严重1. Sync2CFull[] array = this.packets.toArray(new Sync2CFull[0]);
int length = array.length - 1;
Sync2CFull[] dest = new Sync2CFull[length];
System.arraycopy(array, 0, dest, 1, length); // ← BUG
PacketDistributor.sendToPlayer(this.player, this.packets.getFirst(), dest);
修复: 2. public void sync(int head, List<UnlimitedItemStack> stacks) {
this.mapping.ensureCapacity(head);
int size = stacks.size();
for (int i = head; i < head + size; i++) {
if (this.mapping.get(i) == null) { // i ≥ mapping.size() → IOOBE
this.mapping.add(i, stacks.get(i)); // i > mapping.size() → IOOBE
} else {
this.mapping.set(i, stacks.get(i)); // i ≥ mapping.size() → IOOBE
}
}
}
同样问题也存在于 修复(两个方法均适用): 写入前显式填充 while (this.mapping.size() <= index) {
this.mapping.add(UnlimitedItemStack.EMPTY);
}
|
…1/1.6 # Conflicts: # src/generated/resources/assets/anvilcraft/lang/en_ud.json # src/generated/resources/assets/anvilcraft/lang/en_us.json # src/main/java/dev/dubhe/anvilcraft/data/lang/ScreenLang.java # src/main/java/dev/dubhe/anvilcraft/init/ModMenuTypes.java
…tion and state management
Reason: Security scan — [MEDIUM] Variation selector characters detected: Content contains Unicode variation selectors (VS1-256). These are commonly used in emoji sequences but may indicate steganographic encoding or obfuscation Reply |
/approve |
|
我已经全面审阅了此 PR 的 94 个文件变更(5217 行 diff / 2208 行 Java 逻辑)。以下是审查意见。 代码审查摘要结论:请求更改(1 个严重 Bug,4 个建议) 🔴 严重1.
|
| 层级 | 设计 | 评价 |
|---|---|---|
| 存储类型 | StorageType 枚举 + BaseStorage 抽象 + 多态 Codec 分发 |
✅ 清晰,易于扩展新的存储类型 |
| 持久化 | Storages 作为 SavedData 全局单例,按 UUID 索引 |
✅ 标准模式 |
| 网络同步 | FullSyncer + IncrementalSyncer 双模式,分包大小控制(512KB) |
✅ 设计周到(除 bug 外) |
| UI 状态 | StorageMenuState 双端同步,changes 增量记录 |
✅ 避免了全量重新同步 |
| 类别系统 | ICategory 接口 + Registry 注册 + PlayerSetting 持久化 |
✅ 灵活,支持自定义类别 |
| Capability | 存储方块统一委托到 Storages |
✅ 避免重复的 item handler 实例 |
数据容量对比:
| 类型 | 槽位数 |
|---|---|
| 小板条箱 (Crate) | 2,048 |
| 大板条箱 (Large Crate) | 65,536 |
| 潜影集装箱 | 65,536 × 65,536 (双层) |
| 超维存储站 | 65,536 |
已完成 checklist 项: 小板条箱/大板条箱的合成配方和管道兼容、类别系统基础框架、玩家设置持久化、超维存储站 UI 和存储逻辑。未完成项(UI 细节、潜影集装箱功能等)均在 issue #3582/#3583/#3584 中明确标记为 [ ],符合预期。
由 Hermes Agent 审查
Reason: Security scan — [MEDIUM] Variation selector characters detected: Content contains Unicode variation selectors (VS1-256). These are commonly used in emoji sequences but may indicate steganographic encoding or obfuscation Reply |
|
/approve always |
|
我已经完成了对 PR #3795 的详细审查。以下是完整分析: 代码审查摘要结论:请求更改(发现 4 个 Bug,其中 3 个可能导致运行时崩溃或数据丢失) 🔴 关键1.
2.
3.
|
| # | 严重度 | 文件 | 问题 | 影响 |
|---|---|---|---|---|
| 1 | 🔴 | StoragePackets.java (FullSyncer) |
循环越界 i < max 漏掉最后一项 |
存储界面打开时最后一项物品消失 |
| 2 | 🔴 | StoragePackets.java (FullSyncer) |
stack == null 时 stack.isEmpty() NPE |
服务端崩溃 |
| 3 | 🔴 | StorageMenuState.java |
mapping 展开不足导致 IOOBE | 客户端/服务端崩溃 |
| 4 | StorageScreen.java |
reorder() 为空 |
类别排序无功能 |
|
现在我有了全面的了解。让我们来组织审查。 代码审查摘要 — PR #3795: 存储系统方块功能结论:请求更改(1 个关键问题,4 个警告,6 条建议) 审查范围: 5261 行差异 | 95 个文件 | 87 Java 源文件 | 7 生成资源 | 1 配置文件 🔴 关键1.
|
…ty methods for item drop handling
Reason: Security scan — [MEDIUM] Variation selector characters detected: Content contains Unicode variation selectors (VS1-256). These are commonly used in emoji sequences but may indicate steganographic encoding or obfuscation Reply |
|
Good — 我已经下载并分析了全部 5245 行 diff (95 个文件, 87 个 Java 源文件)。以下是审查结果: 代码审查摘要结论:请求更改 — 发现 1 个严重 Bug,2 个警告,若干建议。存储系统的架构整体设计良好,但网络层存在数据无法正确传输的关键问题。 🔴 关键1.
|
| 需求 | 状态 | 备注 |
|---|---|---|
| #3582 主界面 | 4/14 | 标题、类别按钮、类别设置按钮 ✅ |
| #3582 类别设置 | 7/7 | 已完成 ✅ |
| #3583 小板条箱 | 2/3 | 配方 + 管道兼容 ✅,3x3x3搜索 ❌ |
| #3583 大板条箱 | 1/3 | 配方 ✅,管道兼容 ❌,快捷替换 ❌ |
| #3584 潜影集装箱 | 0/3 | 框架已建,功能均未实现 ❌ |
| 超维存储站界面与存储 | ✅ | 已完成 |
结论: 存储系统的骨架(架构、持久化、网络同步、GUI 框架、类别系统)已搭建完成,但:
- 必须修复
setBytesBug,否则客户端无法接收任何物品数据 - UI 界面上大量交互功能(搜索、排序、滚动条、物品栏、放入/取出按钮)尚未实现
- 管道兼容方面需要进一步集成
建议先合并基础架构部分,在后续 PR 中分批完成 UI 交互和功能特性。
Uh oh!
There was an error while loading. Please reload this page.