From 3944eec491662bfc5766a8a506554813752ad07f Mon Sep 17 00:00:00 2001 From: Andrew Steinborn Date: Sun, 23 May 2021 15:42:17 -0400 Subject: [PATCH] Add async parameter to @Subscribe, also as a migration aid. --- .../velocitypowered/api/event/Subscribe.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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 18b295fb..53b8df18 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; + }