事件
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取消注册