Skip to content

模组设计详解(Mod Design Details)

Mouse edited this page Jun 10, 2020 · 2 revisions

模组的生命周期

初始化阶段

阶段 主要工作 对应事件
Construction(构造) 创建模组主类实例并自动将其注册到引擎和模组的EventBus
AutoListen(自动监听) 注册@AutoListen注解的监听器类
Injection(注入) 注入@Inject注解的静态字段
PreInitialization(预初始化) 在此阶段可处理模组需要注入的对象,载入配置文件等 ModLifecycleEvent.PreInitialization
RegistryConstruction(注册表构造) 注册注册表构造器 ModRegistrationEvent.Construction
RegistrationStart(注册开始) 通知注册阶段的开始 ModRegistrationEvent.Start
Registration(注册) 注册对象,注册@AutoRegister注解的对象 ModRegistrationEvent.Register<T>
RegistrationFinish(注册结束) 通知注册阶段的结束 ModRegistrationEvent.Finish
Initialization(初始化) 在此阶段初始化模组 ModLifecycleEvent.Initialization
PostInitialization(后初始化) 通知模组已初始化完毕 ModLifecycleEvent.PostInitialization

依赖注入

模组在初始化时可依赖注入的对象

名称 类型 描述
注入器 com.google.inject.Injector 当前模组使用的注入器
引擎 engine.Engine 当前引擎的对象
所在侧 engine.util.Side 当前引擎所在侧
运行环境 engine.util.RuntimeEnvironment 当前引擎的运行环境
模组容器 engine.mod.ModContainer 当前模组的容器对象
主类实例 主类类型 当前模组的主类实例
日志 org.slf4j.Logger 当前模组的日志对象
模组资产 engine.mod.ModAssets 当前模组的资产对象

示例代码:

@Mod(id = "examplemod")
public class ExampleMod {

    @Inject
    private static Injector injector;

    @Inject
    private static ExampleMod instance;

    @Inject
    private static Logger logger;
}

卸载阶段(待定)

阶段 主要工作 对应事件
Unloading(卸载) 模组卸载 ModLifecycleEvent.Unloading
Unloaded(已卸载) 模组已卸载,ModContainer实例即将回收 ModLifecycleEvent.Unloaded