跳到主要内容

事件

参考事件系统 - Boson

DeferredRegister不是Minecraft原版的,是Forge实现的

订阅与注册

订阅

使用@SubscribeEvent注解,写在方法上面进行订阅

@SubscribeEvent
public void onEvent(Event event) {
//something...
}

注册

静态注册

@Mod.EventBusSubscriber()
public class SomeClass {
@SubscribeEvent
public static void func(Event event) {
//something...
}
}

会将SomeClass.func添加到监听列表

动态注册

MinecraftForge.EVENT_BUS.register(new EventHandler());
MinecraftForge.EVENT_BUS.register(SomeClass.class);

EventHandler类()中的所有@SubscribeEvent注解的非静态方法
或者是将class对象对应的类中的所有@SubscribeEvent注解的静态方法
添加到监听列表(大概是这样,待完善)

动态注册不是拿来把普通类中的方法添加到监听列表的
你依然需要一个专用的处理类
否则你传入的普通类对象会无法回收
如果必须要使用,在对象应该销毁时使用unregister取消注册