Package com.velocitypowered.api.event
Interface EventTask
public interface EventTask
Represents a task that can be returned by a
EventHandler which allows event handling to
be suspended and resumed at a later time, and executing event handlers completely or partially
asynchronously.
Compatibility notice: While in Velocity 3.0.0, all event handlers still
execute asynchronously (to preserve backwards compatibility), this will not be the case in future
versions of Velocity. Please prepare your code by using continuations or returning an instance
returned by async(Runnable).
-
Method Summary
Modifier and TypeMethodDescriptionstatic EventTaskvoidexecute(Continuation continuation) Runs this event task with the givenContinuation.booleanWhether thisEventTaskis required to be called asynchronously.static EventTaskresumeWhenComplete(CompletableFuture<?> future) Creates a continuation basedEventTaskfor the givenCompletableFuture.static EventTaskwithContinuation(Consumer<Continuation> task)
-
Method Details
-
requiresAsync
boolean requiresAsync()Whether thisEventTaskis required to be called asynchronously.If this method returns
true, the event task is guaranteed to be executed asynchronously from the current thread. Otherwise, the event task may be executed on the current thread or asynchronously.- Returns:
- Requires async
-
execute
Runs this event task with the givenContinuation. The continuation must be notified when the task is completed, either withContinuation.resume()if the task was successful orContinuation.resumeWithException(Throwable)if an exception occurred.The
Continuationmay only be resumed once, or anIllegalStateExceptionwill be thrown.The
Continuationdoesn't need to be notified during the execution of this method, this can happen at a later point in time and from another thread.- Parameters:
continuation- The continuation
-
async
Creates a basic asyncEventTaskfrom the givenRunnable. The task is guaranteed to be executed asynchronously (requiresAsync()always returnstrue).- Parameters:
task- The task- Returns:
- The async event task
-
withContinuation
Creates a continuation basedEventTaskfrom the givenConsumer. The task isn't guaranteed to be executed asynchronously (requiresAsync()always returnsfalse).- Parameters:
task- The task to execute- Returns:
- The event task
-
resumeWhenComplete
Creates a continuation basedEventTaskfor the givenCompletableFuture. The continuation is resumed upon completion of the givenfuture, whether it is completed successfully or not.- Parameters:
future- The task to wait for- Returns:
- The event task
-