From c5c2db96f84f7fb7bfc92a378956f4a7c07e91fa Mon Sep 17 00:00:00 2001 From: KingRainbow44 Date: Fri, 19 May 2023 19:32:32 -0400 Subject: [PATCH] Add static methods to register an event handler --- .../server/event/EventHandler.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) 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;