ProductiveBeesGenesis v2.0.3
概述
服务端兼容修复 + Spark 性能分析驱动深度优化版本(SemVer PATCH)。修复专用服务器环境下客户端无法放入蜜脾、任意蜜脾块无视配方校验、网络包 IDOR 类权限提升漏洞等多个 CRITICAL 问题,并针对满升级+高加速场景进行了 Spark 热点分析驱动的性能优化。
修复
- 专用服务器客户端无法放入蜜脾(CRITICAL):专用服务器环境下 CentrifugeRecipeIndex 永远为空,客户端 containsRecipe 校验失败。改为接受 RecipeManager 而非 ServerLevel,客户端从 ClientLevel 获取 RecipeManager 重建索引
- 任意蜜脾块无视配方校验(CRITICAL):输出槽有产物时 shift 左键任意蜜脾块都能放入输入槽,以输出槽物品为产出。对 PB 蜜脾/蜜脾块强制只检查 PB 配方,跳过 SMELTING
- 网络包 IDOR 类权限提升漏洞(CRITICAL):恶意客户端可在 8 格交互距离内远程操作他人方块的 AE2 开关、过滤器、蜜蜂槽位等。10 个 Handler 统一强制容器位置一致性校验
- 服务端离心配方索引为空(CRITICAL):服务端启动后索引为空导致所有配方查找走 FALLBACK 全量遍历。在 BeeRecipeReloader 成功后强制重建索引
- 蜂箱 tooltip 工作进度显示异常:蜜蜂工作进度显示为 300/0 tick(0%)。将计算后的 adjustedMinTicks 同步回 BeeSlot
- 客户端 Container 构造时潜在 NPE:PB 升级槽位为 null 时 Container 构造崩溃。添加 null 守卫
- PB 升级插件中文翻译调整:将"时间"/"时间 II"调整为"速度"/"速度+",从玩家视角理解"减少生产时间=提升生产速度"
- 移除临时调试日志:移除 v2.0.2 添加的 [DEBUG-FIND] 诊断日志
安全
- 统一所有服务端 Payload Handler 的容器一致性校验策略,强制要求 containerMenu 为 MekanismTileContainer 且坐标一致
性能优化
基于 Spark 性能分析报告(满升级+256×加速场景,MSPT max=54.6ms)进行的深度优化:
- 蜂箱产物缓冲区退避机制:v2.0.2 新增的 ApiaryOutputBuffer.tickRedistribute 每 tick 无效重试 insertItem。输出槽全满时递增退避计数器(1→8 tick),预扫描直写将 getLimit 查询从 N×M 次降为 M 次,加速模式下调用频率降为每 4 tick 一次
- 蜂箱批量产出动态 flush 阈值:固定 10 tick 批量 flush 在满升级时导致 MSPT 周期性尖刺。添加累积量阈值 64,达到时提前 flush,将大批量拆为小批量
- ItemStack 比较快速筛选:先 getItem() == 指针比较(O(1)),仅 Item 相同时才进入 isSameItemSameComponents 组件比较,减少约 75% 的 DataComponentMap 比较开销
前置依赖
| 模组 | 版本 |
|---|---|
| Minecraft | 1.21.1 |
| NeoForge | 21.1.214+ |
| Productive Bees | 1.21.1-13.13.5+ |
| Mekanism | 1.21.1-10.7.14.79+ |
完整变更记录请查看 CHANGELOG。