package org.bukkit.scheduler; import org.bukkit.plugin.Plugin; import java.util.concurrent.Callable; import java.util.concurrent.Future; import java.util.List; public interface BukkitScheduler { /** * Schedules a once off task to occur after a delay * This task will be executed by the main server thread * * @param plugin Plugin that owns the task * @param task Task to be executed * @param delay Delay in server ticks before executing task * @return Task id number (-1 if scheduling failed) */ public int scheduleSyncDelayedTask(Plugin plugin, Runnable task, long delay); /** * Schedules a once off task to occur as soon as possible * This task will be executed by the main server thread * * @param plugin Plugin that owns the task * @param task Task to be executed * @return Task id number (-1 if scheduling failed) */ public int scheduleSyncDelayedTask(Plugin plugin, Runnable task); /** * Schedules a repeating task * This task will be executed by the main server thread * * @param plugin Plugin that owns the task * @param task Task to be executed * @param delay Delay in server ticks before executing first repeat * @param period Period in server ticks of the task * @return Task id number (-1 if scheduling failed) */ public int scheduleSyncRepeatingTask(Plugin plugin, Runnable task, long delay, long period); /** * Schedules a once off task to occur after a delay * This task will be executed by a thread managed by the scheduler * * @param plugin Plugin that owns the task * @param task Task to be executed * @param delay Delay in server ticks before executing task * @return Task id number (-1 if scheduling failed) */ public int scheduleAsyncDelayedTask(Plugin plugin, Runnable task, long delay); /** * Schedules a once off task to occur as soon as possible * This task will be executed by a thread managed by the scheduler * * @param plugin Plugin that owns the task * @param task Task to be executed * @return Task id number (-1 if scheduling failed) */ public int scheduleAsyncDelayedTask(Plugin plugin, Runnable task); /** * Schedules a repeating task * This task will be executed by a thread managed by the scheduler * * @param plugin Plugin that owns the task * @param task Task to be executed * @param delay Delay in server ticks before executing first repeat * @param period Period in server ticks of the task * @return Task id number (-1 if scheduling failed) */ public int scheduleAsyncRepeatingTask(Plugin plugin, Runnable task, long delay, long period); /** * Calls a method on the main thread and returns a Future object * This task will be executed by the main server thread *
* Note: The Future.get() methods must NOT be called from the main thread * Note2: There is at least an average of 10ms latency until the isDone() method returns true * * @param