Addon System
基本信息
| 属性 | 值 |
|---|---|
| 基类 | net.mcft.betterstorage.addon.Addon |
| 初始化 | Addon.initialize(),src/main/java/net/mcft/betterstorage/BetterStorage.java:60(preInit 阶段) |
| 内置附属 | 4 个(Thaumcraft / NotEnoughItems / armourersWorkshop / MineTweaker3) |
来源:src/main/java/net/mcft/betterstorage/addon/Addon.java:19-24。
功能
附属系统是本 mod 的内部扩展机制(与面向第三方的 api/ 包不同)。每个附属是一个 Addon 子类,在 Addon.initialize() 中按模组是否加载条件化实例化。
加载条件
src/main/java/net/mcft/betterstorage/addon/Addon.java:19-24:
| 附属 | 检测的 modid | 目录 |
|---|---|---|
ThaumcraftAddon |
Thaumcraft |
addon/thaumcraft/ |
NEIAddon |
NotEnoughItems |
addon/nei/ |
AWAddon |
armourersWorkshop |
addon/armourersworkshop/ |
MineTweakerAddon |
MineTweaker3 |
addon/minetweaker/ |
注意 modid 大小写:armourersWorkshop 与 MineTweaker3 的首字母大写与 Forge 的 modid 规则相反(通常全小写),此处为源码原样(Addon.java:22-23)。
生命周期钩子
Addon 定义了 8 个生命周期方法(Addon.java:26-79),全部有默认空实现:
| 方法 | 触发点 | 用途 |
|---|---|---|
setupConfig() |
Addon.setupConfigsAll() |
追加配置项 |
initializeBlocks() |
Addon.initializeTilesAll() |
注册方块 |
initializeItems() |
Addon.initializeItemsAll() |
注册物品 |
addRecipes() |
Addon.addRecipesAll() |
追加配方 |
registerEntities() |
Addon.registerEntitiesAll() |
注册实体 |
registerTileEntities() |
Addon.registerTileEntitesAll() |
注册 TileEntity(注意方法名拼写 Entites) |
registerRenderers() |
Addon.registerRenderersAll() |
注册渲染器 |
postInitialize() |
Addon.postInitializeAll() |
后期初始化 |
核心模组生命周期中的调用点
src/main/java/net/mcft/betterstorage/BetterStorage.java:
| 阶段 | 行 | 调用 |
|---|---|---|
| preInit | 60 | Addon.initialize() |
| preInit | 63 | Addon.setupConfigsAll() |
| preInit | 67 | BetterStorageTiles.initialize() → 内含 Addon.initializeTilesAll() |
| preInit | 68 | BetterStorageItems.initialize() → 内含 Addon.initializeItemsAll() |
| preInit | 72 | BetterStorageTileEntities.register() → 内含 Addon.registerTileEntitesAll() |
| preInit | 73 | BetterStorageEntities.register() → 内含 Addon.registerEntitesAll() |
| init | 81 | Recipes.add() → 内含 Addon.addRecipesAll() |
| postInit | 88 | Addon.postInitializeAll() |
渲染器注册由代理侧调用(proxy.initialize(),BetterStorage.java:82)。
各附属实际覆写的方法
| 附属 | 覆写的方法 |
|---|---|
ThaumcraftAddon |
setupConfig、initializeBlocks、initializeItems、registerTileEntities、registerRenderers、postInitialize |
NEIAddon |
postInitialize |
AWAddon |
setupConfig、registerRenderers |
MineTweakerAddon |
setupConfig |
来源:src/main/java/net/mcft/betterstorage/addon/ 各子目录。
核心 modid 依赖
@Mod(dependencies = "required-after:Forge; after:Thaumcraft; after:NotEnoughItems;")(src/main/java/net/mcft/betterstorage/BetterStorage.java:32):
required-after:Forge— 硬依赖after:Thaumcraft/after:NotEnoughItems— 软依赖(after而非required-after),加载顺序在其后但不强制
相关条目
- Thaumcraft 集成 - 附加 2 方块 + 1 物品 + 研究
- NotEnoughItems 集成 - 合成台 GUI 覆盖
- Armorer’s Workshop 集成 - 盔甲架渲染
- MineTweaker 集成 - 脚本支持
- 配置 GUI - 附属追加的配置项