Skip to content

Latest commit

 

History

History
38 lines (29 loc) · 1.1 KB

File metadata and controls

38 lines (29 loc) · 1.1 KB

EventManager

Java 8 事件总线。运行时零依赖,编译需要 Lombok。嵌入复制 src/main/java/dev/hotaru/event

EventManager bus = new EventManager();

class LoginEvent implements Event {}
class SaveEvent extends CancellableEvent {}

class Handlers {
    @EventTarget(Priority.HIGH)
    void onLogin(LoginEvent e) {}

    @EventTarget(ignoreCancelled = true)
    void onSave(SaveEvent e) { e.cancel(); }
}

bus.register(new Handlers());
bus.call(new LoginEvent());

Subscription sub = bus.register(SaveEvent.class, e -> e.cancel());
sub.unsubscribe();
注册 register(obj) / register(Class) 静态 / subscribe 返回 Subscription
分发 call 含子类型;callExact 仅精确类型
优先级 越小越先:HIGHEST 0 · HIGH 5 · NORMAL 10 · LOW 15 · LOWEST 20
取消 CancellableEvent 只打标;ignoreCancelled 才跳过
停止 StoppableEvent.stop() 中止后续;CancellableStoppableEvent.cancel() 同时停止
异常 互不影响,走 EventErrorHandler
gradlew.bat test
gradlew.bat build