我刚刚开始接触MOD开发,不是很确定
复制代码
这段代码应该放在什么位置,是main class,还是需要新创一个class?
我现在想做一个最简单的模组,玩家受伤以后激活一个function,给个物品或者往前走一步。
我谷歌到了onHurtEvent,但是不确定该怎么使用这些API。
- @SubscribeEvent
- public static void onHurtEvent(LivingHurtEvent event){
- }
这段代码应该放在什么位置,是main class,还是需要新创一个class?
我现在想做一个最简单的模组,玩家受伤以后激活一个function,给个物品或者往前走一步。
我谷歌到了onHurtEvent,但是不确定该怎么使用这些API。
刚看了两篇关于forge事件的介绍,然后研究了一下某知名mod的源码,得出的结论如下(本人是搞插件开发的,对mod开发不甚了解,如果有错漏之处还望大佬指正
https://harbinger.covertdragon.team/chapter-03/
https://mcforge-cn.readthedocs.io/zh/latest/events/intro/
应该是需要把这个监听用的方法放到某个类中
然后在用@Mod声明的主类中使用
复制代码
进行注册
https://harbinger.covertdragon.team/chapter-03/
https://mcforge-cn.readthedocs.io/zh/latest/events/intro/
应该是需要把这个监听用的方法放到某个类中
然后在用@Mod声明的主类中使用
- // 然后注册
- MinecraftForge.EVENT_BUS.register(EventListener.class);
- // 如果监听方法不使用 static,则应使用对应类的实例
- MinecraftForge.EVENT_BUS.register(new EventListener());
进行注册
wjwrh 发表于 2020-5-17 06:55
刚看了两篇关于forge事件的介绍,然后研究了一下某知名mod的源码,得出的结论如下(本人是搞插件开发的,对m ...
以下是我研究的某大型mod的使用示例代码
- // ManaNetworkHandler.java
- public final class ManaNetworkHandler implements IManaNetwork {
- public static final ManaNetworkHandler instance = new ManaNetworkHandler();
- ...
- @SubscribeEvent
- public void onNetworkEvent(ManaNetworkEvent event) { ... }
- ...
- // Botania.java
- @Mod(LibMisc.MOD_ID)
- public class Botania {
- ...
- public Botania() {
- ...
- FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonSetup);
- ...
- }
- private void commonSetup(FMLCommonSetupEvent event) {
- ...
- MinecraftForge.EVENT_BUS.register(ManaNetworkHandler.instance);
- ...
- }
- ...
- }