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与之一致)。