diff --git a/src/main/java/emu/grasscutter/server/event/EventHandler.java b/src/main/java/emu/grasscutter/server/event/EventHandler.java index 5587e33b9..0d16b6904 100644 --- a/src/main/java/emu/grasscutter/server/event/EventHandler.java +++ b/src/main/java/emu/grasscutter/server/event/EventHandler.java @@ -5,6 +5,53 @@ import emu.grasscutter.plugin.Plugin; import emu.grasscutter.utils.EventConsumer; public final class EventHandler { + /** + * Create and register a new event handler. + * @param plugin The plugin handling the event. + * @param eventClass The event class. + * @param listener The event handler function. + */ + public static void newHandler(Plugin plugin, + Class eventClass, EventConsumer listener + ) { + new EventHandler<>(eventClass) + .priority(HandlerPriority.NORMAL) + .listener(listener).register(plugin); + } + + /** + * Create and register a new event handler. + * @param plugin The plugin handling the event. + * @param eventClass The event class. + * @param listener The event handler function. + * @param priority The handler's priority. + */ + public static void newHandler(Plugin plugin, + Class eventClass, EventConsumer listener, + HandlerPriority priority + ) { + new EventHandler<>(eventClass) + .listener(listener).priority(priority) + .register(plugin); + } + + /** + * Create and register a new event handler. + * @param plugin The plugin handling the event. + * @param eventClass The event class. + * @param listener The event handler function. + * @param priority The handler's priority. + * @param handleCanceled Should this handler execute on canceled events? + */ + public static void newHandler(Plugin plugin, + Class eventClass, EventConsumer listener, + HandlerPriority priority, boolean handleCanceled + ) { + new EventHandler<>(eventClass) + .listener(listener).priority(priority) + .ignore(handleCanceled).register(plugin); + } + private final Class eventClass; private EventConsumer listener; private HandlerPriority priority;