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 18b295fb8..53b8df18a 100644 --- a/api/src/main/java/com/velocitypowered/api/event/Subscribe.java +++ b/api/src/main/java/com/velocitypowered/api/event/Subscribe.java @@ -26,4 +26,23 @@ public @interface Subscribe { */ PostOrder order() default PostOrder.NORMAL; + /** + * Whether the handler must be called asynchronously. + * + *

This option currently has no effect, but in the future it will. In Velocity 3.0.0, + * all event handlers run asynchronously by default. You are encouraged to determine whether or + * not to enable it now. This option is being provided as a migration aid.

+ * + *

If this method returns {@code true}, the method is guaranteed to be executed + * asynchronously. Otherwise, the handler may be executed on the current thread or + * asynchronously. This still means you must consider thread-safety in your + * event listeners as the "current thread" can and will be different each time.

+ * + *

If any method handler targeting an event type is marked with {@code true}, then every + * handler targeting that event type will be executed asynchronously.

+ * + * @return Requires async + */ + boolean async() default true; + }