Minecraft Forge preInit,init,postInit的区别

来源:https://www.minecraftforge.net/forum/topic/24235-preinit-init-and-postinit/
http://greyminecraftcoder.blogspot.com/2013/11/how-forge-starts-up-your-code.html

事件处理程序

在启动过程中,Forge将多次调用您的Mod,以允许您添加新的方块,物品,读取配置文件,以及通过在适当位置注册您的类来将自身集成到游戏中。

在Forge可以调用您的Mod之前,它需要知道要使用哪些方法。这是@EventHandler进入的地方。例如-在启动期间,Forge将针对所有加载的mod经历多个阶段:

PreInitialization

先执行其他操作。读取您的配置,创建方块,物品等,然后将其注册到GameRegistry中。

Initialization

进行您的mod设置。构建您关心的任何数据结构。注册合成表。

PostInitialization

处理与其他mod的交互,根据此完成设置。

对所有mod执行PreInitialization,然后执行Initialization,最后执行PostInitialization
当多个模块之间可能存在交互时,分阶段初始化模块特别有用-例如,如果一个模块添加了一种额外的木材(在PreInit期间),而您的模块添加了使用该木材的配方(在Init期间)。

当Forge想要告诉您的mod该运行您的PreInitialization代码的时候,它会通读您mod的代码,直到在方法前找到@EventHandler,然后检查参数定义以查看它是否与FMLPreInitializationEvent类匹配。如果是这样,它将调用该方法。

根据您的模块是在CombinedClient还是DedicatedServer中,PreInitialization,Initialization,PostInitialization事件通常需要做不同的事情。因此,我建议您的事件处理程序应立即调用CommonProxy中的方法,请参见下文。

@EventHandler
public void preInit(FMLPreInitializationEvent event) {
    proxy.preInit();
}
 
@EventHandler
public void load(FMLInitializationEvent event) {
    proxy.load();
}

@EventHandler
public void postInit(FMLPostInitializationEvent event) {
    proxy.postInit();
}

来自http://greyminecraftcoder.blogspot.com/2013/11/how-forge-starts-up-your-code.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值