Skip to content

Releases: Ayoshiko/productive-bees-genesis

ProductiveBeesGenesis v2.0.4

Choose a tag to compare

@Ayoshiko Ayoshiko released this 31 Jul 07:33

概述

服务端实测 bug 修复版本(SemVer PATCH)。修复 v2.0.3 上线后服务端实测发现的 5 个独立问题:蜂箱速度升级卸载后工作时间不可逆递减、概率产物被错误地变为必产物、时间流体蜜脾错误产出蜂蜜、蜜蜂属性 tooltip 翻译与整合包不一致、蜂箱产物在离心机阻塞时被困缓冲区。所有修复均经过代码审查与编译验证。

修复

  • 蜂箱速度升级不可逆递减(CRITICAL):安装 MEK 速度升级后蜜蜂工作时间从 1200 tick 暴跌到 27 tick,再装降到 7 tick,卸载后仍保持 7 tick 无法恢复。根因是调整后的时间被写回基础值字段形成指数衰减并通过 NBT 持久化。分离 baseMinOccupationTicksminOccupationTicks 字段职责,调整值永不回写基础值,老存档自动迁移
  • 概率产物变必产物(CRITICAL):机械蜂箱中的幽匿蜜蜂每次产出必出 10 个花粉球,而非 PB 原版的 5% 概率。根因是 BeeInfoHelper.getBeeProduce 使用 chancedOutput.max() 完全忽略 chance 字段。新增 BeeProduceBatchSampler 统一执行概率采样,单次走 Bernoulli、批量走 Binomial+CLT,与离心机路径算法一致
  • 时间流体蜜脾错误产出蜂蜜(MAJOR):JDT 时间流体蜜脾在机械蜂箱中产出蜂蜜,但 PB 原版该蜜脾应产出时间流体。根因是 BeeProduceProcessor 硬编码 250mB 蜂蜜无条件注入所有蜜蜂。新增 BeeFluidOutputResolver 从离心配方推断流体类型,非蜂蜜流体蜜蜂不注入蜂蜜
  • 蜜蜂属性 tooltip 翻译不一致(MEDIUM):蜜蜂属性 tooltip(产量、天气适应性、昼夜习性等)翻译与整合包宁纳汉化不一致。修正 14 处翻译,如"日行"→"昼行性"、"被动"→"友好"、"极高"→"很高"等
  • 蜂箱产物被困缓冲区(MAJOR):蜂箱紧挨离心机且离心机输出槽阻塞时,蜂箱产物被困缓冲区无法弹出,即使开启 MEK 弹出开关也无效。组合修复:缓冲区直接转移绕过两跳路径、成功转移后重置退避、连续 20 tick 阻塞时 fallback 到 MEK Ejector、AE 协同优先通过 AE 网络推送

性能优化

  • ApiaryOutputBuffer 独立预扫描数组tryRedistributeToExternalSlotstickRedistribute 共享预扫描数组,但离心机输入槽(19)与蜂箱输出槽(9)数量不同,导致每 tick 反复扩容 6 个数组。为外部槽位分发独立数组,零扩容,降低 256× 加速场景的 GC 压力

前置依赖

模组 版本
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

ProductiveBeesGenesis v2.0.3

Choose a tag to compare

@Ayoshiko Ayoshiko released this 30 Jul 16:48

概述

服务端兼容修复 + 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

ProductiveBeesGenesis v2.0.2

Choose a tag to compare

@Ayoshiko Ayoshiko released this 30 Jul 13:26

概述

CRITICAL bug 修复 + 蜂箱产物守恒版本(SemVer PATCH)。修复"工具挖掘等级失效"严重问题(标签加载失败级联影响 paxel/hammer/drill/aio 等多功能工具),以及战利品表解析失败、服务端 Mixin 降级日志噪音、蜂箱产物丢失等问题,并新增蜜蜂 productivity 基因应用。

修复

  • 工具挖掘等级失效(CRITICAL):未安装 EM/ME/EME 附属模组时 minecraft:mineable/pickaxe 标签加载失败,级联影响所有引用该标签的多功能工具(下界合金 paxel/hammer/drill/aio/staff 等)。ModBlockTagsProvider 改用 addOptional 为条件方块生成可选条目,未注册时静默跳过
  • 战利品表解析失败:EM/ME/EME 方块的 BlockItem 未注册时战利品表引用无效物品 ID 触发 Unknown registry key 错误。新建 ConditionalBlockLootProvider 生成带 neoforge:mod_loaded 条件的 dropSelf 战利品表
  • 蜜脾块 hoe 标签错误:移除 infinitycreation_comb_blockmineable/hoe 标签,统一加入 mineable/pickaxe
  • 服务端 Mixin 降级日志噪音:服务端首次放置蜂箱时 PbUpgradeInventorySlot 的 static 块 ClassCastException 打印 40+ 行堆栈 WARN,优化为 1 行 WARN + DevLog DEBUG 降级
  • 蜂箱产物丢失:输出槽满载时剩余产物被静默丢弃。新建 ApiaryOutputBuffer 缓存溢出产物(ArrayDeque FIFO 淘汰 O(1)),每 tick 重试注入输出槽,NBT 持久化 + 方块破坏掉落 + getDrops 后清除避免重复。

新增

  • 蜜蜂 productivity 基因应用:应用 PB 原版第五层公式 finalMultiplier = upgradeMultiplier × (1 + 0.2 × purity),从蜜蜂 NBT 解析 productivity 纯度并缓存,加权平均应用到同组蜜蜂产出。

前置依赖

模组 版本
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

ProductiveBeesGenesis v2.0.1

Choose a tag to compare

@Ayoshiko Ayoshiko released this 29 Jul 16:37

概述

bug 修复 + 可选依赖隔离强化版本(SemVer PATCH)。修复 v2.0.0 发布后发现的 EME/ME 附属模组未安装时启动崩溃问题、蜂箱工厂 EM 等级翻译错误,并将 EME 布局参数和 GUI 类迁移至 compat 隔离包。

修复

  • EME/ME 附属模组未安装时启动崩溃ModMenuTypes 静态字段直接引用 EME/ME 的 TileEntity 类导致 NoClassDefFoundError。新建 EMEMenuTypeRegistration / MEMenuTypeRegistration 隔离类承载 MenuType 注册,通过 MekCompatHooks.isXxxLoaded() 守卫
  • 蜂箱工厂 EM 等级中文翻译错误:扩展进化蜂箱工厂等级译名修正为"寰宇支配通用机械蜂箱工厂"和"悖论无限通用机械蜂箱工厂",与离心机翻译保持一致

重构

  • EME 布局参数隔离:将 6 个 EME 专属布局方法从 FactoryLayoutHelper 抽取至 compat/emextras/EMEFactoryLayoutHelper,避免基础类方法签名直接引用可选依赖类
  • EME 离心机 GUI 类迁移至 compat 包GuiEMExtraMekCentrifugeFactoryclient/screen/ 移至 compat/emextras/client/gui/,与 EME 专属类保持隔离

前置依赖

模组 版本
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

ProductiveBeesGenesis v2.0.0

Choose a tag to compare

@Ayoshiko Ayoshiko released this 27 Jul 16:04

概述

SemVer MAJOR 里程碑版本。本版本引入了完整的 MEK 蜂箱系统,与此前发布的 MEK 离心机系统形成「蜂箱 → 离心机」的工业化蜜蜂生产链路。同时对离心机系统进行了全面重构,新增 KubeJS 运行时配方注册、ME/EME 工厂扩展、配置系统模块化、网络包安全限流、万象创世物品与宇宙渲染系统等重大功能。基于 Spark 热力图分析进行了深度性能优化。

新增

  • MEK 通用机械蜂箱系统:基于 Mekanism 机器体系打造的工业化蜜蜂生产设备

    • 基础蜂箱 + 17 个工厂等级,与离心机工厂一一对应(原版 4 级 / ME 4 级 / EM 5 级 / EME 4 级)
    • 蜜蜂槽、输出槽、蜂笼槽、能量槽、流体罐、PB 升级槽六类槽位体系
    • 喂食器系统:花朵槽矩阵管理,基础版 3×3=9 槽,工厂版按蜂数动态扩展
    • PB 升级系统:9 种升级类型(生产力 α/β/γ/Ω、时间 I/II、基因采样、蜜脾块、模拟),蜂箱全部支持,离心机支持其中 6 种
    • AE2 集成:物品/流体/能量可直接输出到 ME 网络,支持 AppliedFlux 优先级切换
    • 直接弹出:蜂箱与离心机相邻时绕过 MEK Ejector 节流直连,降低高频弹出开销
    • Jade 面板:显示蜜蜂状态、生产进度、AE2 网络连接状态
    • GUI 多标签页:排序 / 喂食器 / PB 升级 / 多流体罐
  • MEK 离心机系统重构:配方处理、万象创世、AE2 集成、多流体罐全面重写

    • 配方处理层拆分为上下文、处理器、查找器、补全器四个职责分离的组件
    • 万象创世系统:批量规划器 + 缓存 + 事件处理器,支持数百种蜜蜂类型的高效离心
    • AE2 集成:能量桥接、流体推送、物品推送、批处理缓冲,共 22 个文件
    • 多流体罐:按流体类型动态分配独立槽位,支持每进程独立流体输出
  • KubeJS 集成:运行时动态注册蜜蜂配方

    • 提供 MyriadBeeEvents.REGISTER 事件和 7 种配方构建器,脚本可动态添加育种、离心、产物等配方
  • ME/EME 蜂箱与离心机工厂扩展:MekanismExtras 和 MekanismEmpowered 两个附属模组各新增 4 个蜂箱工厂 + 4 个离心机工厂

  • 配置系统模块化重构:从单一 ServerConfig 拆分为 ConfigSectionRegistry + 5 个子类(蜂箱 / 离心机 / 流体罐倍率 / 堆叠倍率 / 窗口位置),NeoForge 配置界面按功能分组显示

  • 网络包与安全限流系统:PayloadRateLimiter 语义别名 + 玩家登出清理,NetworkSecurityConstants 集中管理字符串/列表长度限制,防止恶意客户端 OOM

  • 万象创世物品与宇宙渲染系统:创世蜜脾、蜜脾块、支配之剑(拟态)三件物品,配套星空材质特效与自定义 GLSL 着色器,完整兼容 Iris 光影

  • 客户端基础事件与渲染:Jade 插件、JEI 离心配方集成、Screen 系统(蜂箱/离心机/过滤列表/蜜蜂选择)、蜂箱 GUI 多标签页

性能优化

  • 仅记录了部分优化

    • 流体推送批大小从 10 万×M 提升到 100 万×M mB/批
    • 批处理缓冲累积窗口从 10 tick 增至 20 tick,即时刷新阈值从 20 亿提升到 50 亿 mB
    • 蜜蜂类型缓存更新间隔从 20 tick 增至 100 tick
    • AE2 API 调用次数预计降低 90% 以上
  • 多流体槽默认开启:离心机多流体槽模式默认值从关闭改为开启,按流体类型动态分配独立槽位,避免不同流体混合

删除

  • 移除 335 个遗留 PB 风格离心机纹理 + 10 个模型 + 10 个 Java 旧文件(项目已全面转向 Mek 风格机器)
  • 移除旧版 config/fml.toml(已迁移到 neoforge.mods.toml)

前置依赖

模组 版本
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

ProductiveBeesGenesis v1.8.1

Choose a tag to compare

@Ayoshiko Ayoshiko released this 05 Jul 12:05

概述

bug 修复 + 配置体验改进版本(SemVer PATCH)。修复 AE 能量注入上限问题、能量不足机器仍发光 bug,解耦 AE2 节点与配置开关,修复子分类翻译键,精简全部配置项描述。

修复

  • AE 能量注入上限移除:删除每 tick 注入上限配置项,改为按容器剩余容量差额提取。解决 32 速度升级下 AE 网络供能跟不上消耗的问题
  • 能量不足时机器仍发光:能量不足时不再切换到加工中材质,能量恢复后从保留的进度继续处理
  • AE2 节点与配置开关解耦:关闭 AE2 直接输出时离心机不再离线,ME 网络能量输入通道不受影响
  • MEK 离心机子分类翻译键格式修复:修正子分类标题无法正确显示的问题

新增

  • AE2/AppliedFlux 配置项条件化注册:附属模组未加载时对应配置项不显示在配置文件和 NeoForge 配置界面
  • MEK 离心机配置子分类:21 个配置项按功能分为 4 个子分类
    • basic — 基础参数(5 项)
    • ejection — 弹出策略(11 项)
    • io_limit — IO 限流(1 项)
    • ae2 — AE2 集成(条件化注册,2-3 项)

改进

  • 全配置项描述精简:所有配置项 comment ≤3 行,tooltip 精简到 1-2 句,提升配置界面可读性

前置依赖

模组 版本
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

ProductiveBeesGenesis v1.8.0

Choose a tag to compare

@Ayoshiko Ayoshiko released this 05 Jul 08:29

概述

AE2 网络能量输入集成版本(SemVer MINOR)。新增离心机直接使用 ME 网络中存储的 FE 能量功能,向后兼容无破坏性变更(默认关闭)。

新增

  • AppliedFlux + AE2 网络能量输入集成:离心机现在可以直接使用 ME 网络中存储的 FE 能量
    • 离心机不再仅依赖外部线缆供能或内部 FE 缓存
    • 支持 5 层能量优先级策略:本地缓存 → 外部供能 → ME 网络 FE(AppliedFlux)→ 其他能量 → AE2 原生能量(转换为 FE)
    • 默认关闭,启用后可通过 ME 网络直接供能
    • 兼容 AppliedFlux(优先)和 AE2 原生能量(按需转换)
    • 参考 Mek-Energistics 模组的三层能量优先级模式

配置开关

3 项新增配置(默认关闭保证向后兼容 v1.7.0 行为):

  • mekCentrifugeAeEnergyInputEnabled(默认 false):是否启用 AE 网络能量输入
  • mekCentrifugePreferAppliedFluxOverAeEnergy(默认 true):优先使用 AppliedFlux FE 而非 AE2 原生能量
  • mekCentrifugeAeEnergyInjectionPerTick(默认 1000,1-100000):每 tick 最大注入量

前置依赖

模组 版本
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

ProductiveBeesGenesis v1.7.0

Choose a tag to compare

@Ayoshiko Ayoshiko released this 05 Jul 06:37

概述

AE2 线缆及附属联动连接适配版本(SemVer MINOR)。新增 AE2 线缆连接适配功能,向后兼容无破坏性变更。

新增

  • AE2 线缆及附属联动连接适配:离心机现在可被 AE2 线缆直接发现并连接
    • 离心机之间、离心机与 AE2 线缆之间现在可以直接连接,无需通过 ME 接口中转
    • 兼容 AE2 19.x 的新 capability 发现机制
    • 通过通用适配机制,自动支持 ExtendedAE / AdvancedAE / ae2cs / ae2lt / Glodium / AppliedFlux 等附属扩展模组的线缆,无需为每个附属单独适配

前置依赖

模组 版本
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

ProductiveBeesGenesis v1.6.1

Choose a tag to compare

@Ayoshiko Ayoshiko released this 04 Jul 12:38

概述

深度代码审计修复版本(SemVer PATCH)。全部为 bug 修复 + 内部架构加固 + 规范完善,没有用户可见的新功能,没有不兼容变更。

修复

  • PB 反射缓存清理部分失败状态不一致:每个字段独立 try-catch
  • 服务器停止时清理操作异常隔离:每个清理操作独立 try/catch
  • AE2 生命周期处理同步策略不一致:统一放入宿主级锁保护
  • AE2 网格节点 NBT 读写未同步:添加宿主级锁包裹
  • 光晕渲染 PoseStack 栈不平衡:每个 pushPose 独立 try/finally 包裹
  • 缓存空快照可变污染:改为真正不可变列表
  • AE2 节点重复创建:添加幂等检查
  • 配方重载重试未就绪:调用重试管理器安排延迟重试
  • 配方重载重试竞态:改用原子引用 CAS 模式清除
  • 蜜蜂类型缓存计数器非原子:使用原子更新操作
  • 蜜蜂选择缓存未清理选中列表:清理 selected 列表
  • 宇宙着色器 uniform 缺失 null 检查:所有 uniform 添加 null 检查
  • 蜂箱节流 Mixin 注入冗余:删除 RETURN 注入,保留 TAIL
  • ThreadLocal 未清理:添加清理方法
  • 配方重试超上限日志级别:warn 改为 error
  • 代码缩进与导入风格统一

变更

  • 架构重构:4 个文件拆分
  • 新增类:MyriadBeeTypeCache、MekAe2LifecycleHandler、MyriadRecipeProcessor
  • 类型变更BeeTypeCacheSnapshot.beeTypesCopyOnWriteArrayList 改为 List

前置依赖

模组 版本
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

ProductiveBeesGenesis v1.6.0

Choose a tag to compare

@Ayoshiko Ayoshiko released this 04 Jul 11:32

概述

内部架构优化版本(SemVer PATCH)。AE2 输出推送对象复用优化(256× 加速场景下显著降低 GC 压力),主类构造函数拆分。

性能优化

  • AE2 输出推送对象复用:256× 加速场景下高频对象分配优化,稳态下每 tick 临时对象分配从 70+ 降至 0
    • 引入内部缓冲区跨 tick 复用
    • 全局单例化无状态对象
    • 懒初始化能量适配器,宿主生命周期内仅创建一次

重构

  • 主类构造函数拆分:88 行拆分为 6 个私有方法,降至 22 行

修复

  • AE2 网格节点连接缺失锁保护:添加宿主级锁保护
  • 批量规划器快照缓存失效:修正 tick 参数传递

前置依赖

模组 版本
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