Scheduler

By: Raphfrk <raphfrk@gmail.com>
This commit is contained in:
Bukkit/Spigot 2011-02-02 23:51:52 +00:00
parent d7e0bed36b
commit a5886d6edc
3 changed files with 101 additions and 0 deletions

View File

@ -5,6 +5,7 @@ import org.bukkit.entity.Player;
import java.util.List;
import org.bukkit.plugin.PluginManager;
import org.bukkit.scheduler.BukkitScheduler;
/**
* Represents a server implementation
@ -75,6 +76,13 @@ public interface Server {
*/
public PluginManager getPluginManager();
/**
* Gets the Scheduler for managing scheduled events
*
* @return Scheduler for this Server instance
*/
public BukkitScheduler getScheduler();
/**
* Gets a list of all worlds on this server
*

View File

@ -185,6 +185,7 @@ public final class SimplePluginManager implements PluginManager {
public void disablePlugin(final Plugin plugin) {
if (plugin.isEnabled()) {
plugin.getPluginLoader().disablePlugin(plugin);
server.getScheduler().cancelTasks(plugin);
}
}

View File

@ -0,0 +1,92 @@
package org.bukkit.scheduler;
import org.bukkit.plugin.Plugin;
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 Runnable Task to be executed
* @param long Delay in server ticks before executing task
* @return int 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 Runnable Task to be executed
* @return int 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 Runnable Task to be executed
* @param long Delay in server ticks before executing first repeat
* @param long Period in server ticks of the task
* @return int 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 Runnable Task to be executed
* @param long Delay in server ticks before executing task
* @return int 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 Runnable Task to be executed
* @return int 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 Runnable Task to be executed
* @param long Delay in server ticks before executing first repeat
* @param long Period in server ticks of the task
* @return int Task id number (-1 if scheduling failed)
*/
public int scheduleAsyncRepeatingTask(Plugin plugin, Runnable task, long delay, long period);
/**
* Removes task from scheduler
*
* @param int Id number of task to be removed
*/
public void cancelTask(int taskId);
/**
* Removes all tasks associated with a particular plugin from the scheduler
*
* @param Plugin Owner of tasks to be removed
*/
public void cancelTasks(Plugin plugin);
/**
* Removes all tasks from the scheduler
*/
public void cancelAllTasks();
}