diff --git a/api/src/main/java/com/velocitypowered/api/event/EventManager.java b/api/src/main/java/com/velocitypowered/api/event/EventManager.java index 97ff4e188..26ec24faf 100644 --- a/api/src/main/java/com/velocitypowered/api/event/EventManager.java +++ b/api/src/main/java/com/velocitypowered/api/event/EventManager.java @@ -39,7 +39,7 @@ public interface EventManager { * @param handler the handler to register * @param the event type to handle */ - void register(Object plugin, Class eventClass, PostOrder postOrder, + void register(Object plugin, Class eventClass, short postOrder, EventHandler handler); /** diff --git a/api/src/main/java/com/velocitypowered/api/event/PostOrder.java b/api/src/main/java/com/velocitypowered/api/event/PostOrder.java index d8923d363..5ff324d2b 100644 --- a/api/src/main/java/com/velocitypowered/api/event/PostOrder.java +++ b/api/src/main/java/com/velocitypowered/api/event/PostOrder.java @@ -4,7 +4,12 @@ package com.velocitypowered.api.event; * Represents the order an event will be posted to a listener method, relative to other listeners. */ public enum PostOrder { + ; - FIRST, EARLY, NORMAL, LATE, LAST + public static final short FIRST = Short.MIN_VALUE; + public static final short EARLY = Short.MIN_VALUE >> 1; + public static final short NORMAL = 0; + public static final short LATE = Short.MAX_VALUE >> 1; + public static final short LAST = Short.MAX_VALUE; } diff --git a/api/src/main/java/com/velocitypowered/api/event/Subscribe.java b/api/src/main/java/com/velocitypowered/api/event/Subscribe.java index 4e6299d39..35637f260 100644 --- a/api/src/main/java/com/velocitypowered/api/event/Subscribe.java +++ b/api/src/main/java/com/velocitypowered/api/event/Subscribe.java @@ -17,6 +17,6 @@ public @interface Subscribe { * * @return the order */ - PostOrder order() default PostOrder.NORMAL; + short order() default PostOrder.NORMAL; } diff --git a/proxy/src/main/java/com/velocitypowered/proxy/plugin/VelocityEventManager.java b/proxy/src/main/java/com/velocitypowered/proxy/plugin/VelocityEventManager.java index 8d9b40bbf..3ebe459b2 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/plugin/VelocityEventManager.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/plugin/VelocityEventManager.java @@ -94,11 +94,10 @@ public class VelocityEventManager implements EventManager { @Override @SuppressWarnings("type.argument.type.incompatible") - public void register(Object plugin, Class eventClass, PostOrder postOrder, + public void register(Object plugin, Class eventClass, short postOrder, EventHandler handler) { ensurePlugin(plugin); Preconditions.checkNotNull(eventClass, "eventClass"); - Preconditions.checkNotNull(postOrder, "postOrder"); Preconditions.checkNotNull(handler, "listener"); registeredHandlersByPlugin.put(plugin, handler); @@ -201,7 +200,7 @@ public class VelocityEventManager implements EventManager { @Override public int postOrder(@NonNull Object listener, @NonNull Method method) { - return method.getAnnotation(Subscribe.class).order().ordinal(); + return method.getAnnotation(Subscribe.class).order(); } @Override @@ -213,11 +212,11 @@ public class VelocityEventManager implements EventManager { private static class KyoriToVelocityHandler implements EventSubscriber { private final EventHandler handler; - private final int postOrder; + private final short postOrder; - private KyoriToVelocityHandler(EventHandler handler, PostOrder postOrder) { + private KyoriToVelocityHandler(EventHandler handler, short postOrder) { this.handler = handler; - this.postOrder = postOrder.ordinal(); + this.postOrder = postOrder; } @Override