星E君
我刚刚开始接触MOD开发,不是很确定
  1. @SubscribeEvent
  2.     public static void onHurtEvent(LivingHurtEvent event){

  3.     }
复制代码

这段代码应该放在什么位置,是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声明的主类中使用
  1. // 然后注册
  2. MinecraftForge.EVENT_BUS.register(EventListener.class);

  3. // 如果监听方法不使用 static,则应使用对应类的实例
  4. MinecraftForge.EVENT_BUS.register(new EventListener());
复制代码

进行注册

嘉晚饭,赢
wjwrh 发表于 2020-5-17 06:55
刚看了两篇关于forge事件的介绍,然后研究了一下某知名mod的源码,得出的结论如下(本人是搞插件开发的,对m ...

以下是我研究的某大型mod的使用示例代码

  1. // ManaNetworkHandler.java
  2. public final class ManaNetworkHandler implements IManaNetwork {

  3.         public static final ManaNetworkHandler instance = new ManaNetworkHandler();

  4.         ...

  5.         @SubscribeEvent
  6.         public void onNetworkEvent(ManaNetworkEvent event) { ... }

  7.         ...

  8. // Botania.java
  9. @Mod(LibMisc.MOD_ID)
  10. public class Botania {
  11.         ...
  12.         public Botania() {
  13.                 ...
  14.                 FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonSetup);
  15.                 ...
  16.         }

  17.         private void commonSetup(FMLCommonSetupEvent event) {
  18.                 ...
  19.                 MinecraftForge.EVENT_BUS.register(ManaNetworkHandler.instance);
  20.                 ...
  21.         }
  22.         ...
  23. }       
复制代码

第一页 上一页 下一页 最后一页