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),加载顺序在其后但不强制

相关条目