MobsInfo API 与事件

[!INFO] 注册真源:api/(31 个 Java 文件),其中 api/event/ 6 个事件类

Mobs Info 通过 provider 接口 + 事件的二段式架构向 NEI 提供生物信息,并允许其他 mod 注入数据。

Provider 接口(3 个)

接口 用途
IMobInfoProvider 提供生物基础信息
IMobExtraInfoProvider 追加生物的额外信息(实现类可被 ExtraLoader 注册,见兼容适配)
IVillagerInfoProvider 提供村民信息
IChanceModifier 修改掉落概率

[!NOTE] ExtraLoader.java:63 中把 loader 实例转型为 IMobExtraInfoProvider 并加入 APIProviders,同时用 alreadyProvided 集合去重(:64)—— 同一个 modid 不会被两个 loader 重复提供。

数据模型

类 用途
api/MobDrop.java 单条掉落
api/MobDropSimplified.java 简化版掉落(用于展示)
api/MobRecipe.java 掉落配方
api/MobOverride.java 掉落覆盖(配合 OverridesConfig)
api/SpawnInfo.java 刷怪信息
api/VillagerRecipe.java / api/VillagerTrade.java 村民配方与交易
api/ConstructableItemStack.java 可构造的 ItemStack

6 个事件

事件 时机
PreMobRegistrationEvent 单个生物注册前
PreMobsRegistrationEvent 整批生物注册前
PostMobRegistrationEvent 单个生物注册后
PostMobsRegistrationEvent 整批生物注册后
PostMobsOverridesLoadEvent 掉落覆盖载入后
MobNEIRegistrationEvent 向 NEI 注册信息时

配对的前后事件让其他 mod 能在生物信息进入 NEI 之前修改掉落表。

工具类

包 内容
api/helper/ ByteBufHelper、EnderIOHelper、InfernalMobsCoreHelper、TranslationHelper
api/utils/ FastRandom、GSONUtils、ItemID、MobUtils、ModUtils
api/LoaderReference.java 各 mod 的 modid 集中引用(供 alreadyProvided 去重)
api/DummyWorld.java 构造掉落链时用的空 World

[!NOTE] api/helper/InfernalMobsCoreHelper.java 与 api/helper/EnderIOHelper.java 直接依赖对应 mod 的类,属于编译期硬依赖的兼容层(@Mod 声明的 after:InfernalMobs / after:EnderIO 与之一致)。

关联:兼容适配 · NEI 处理器 · Mixin 列表