70 lines
2.5 KiB
Java
Raw Normal View History

2015-07-31 00:25:16 +10:00
package com.plotsquared.sponge.util;
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicInteger;
2015-12-20 06:30:06 +11:00
import org.spongepowered.api.scheduler.Task;
import com.intellectualcrafters.plot.util.TaskManager;
2015-07-31 00:25:16 +10:00
import com.plotsquared.sponge.SpongeMain;
2015-09-13 14:04:31 +10:00
public class SpongeTaskManager extends TaskManager {
2015-11-25 22:40:22 -05:00
2015-09-11 20:09:22 +10:00
private final AtomicInteger i = new AtomicInteger();
2015-11-25 22:40:22 -05:00
2015-09-11 20:09:22 +10:00
private final HashMap<Integer, Task> tasks = new HashMap<>();
2015-11-25 22:40:22 -05:00
@Override
2015-09-13 14:04:31 +10:00
public int taskRepeat(final Runnable r, final int interval) {
2015-09-11 20:09:22 +10:00
final int val = i.incrementAndGet();
2015-11-25 22:40:22 -05:00
final Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
final Task.Builder built = builder.delayTicks(interval).intervalTicks(interval).execute(r);
2015-09-11 20:09:22 +10:00
final Task task = built.submit(SpongeMain.THIS.getPlugin());
tasks.put(val, task);
return val;
}
2015-11-25 22:40:22 -05:00
2015-08-02 21:56:18 +10:00
@Override
2015-09-13 14:04:31 +10:00
public int taskRepeatAsync(final Runnable r, final int interval) {
2015-09-11 20:09:22 +10:00
final int val = i.incrementAndGet();
2015-11-25 22:40:22 -05:00
final Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
final Task.Builder built = builder.delayTicks(interval).async().intervalTicks(interval).execute(r);
2015-09-11 20:09:22 +10:00
final Task task = built.submit(SpongeMain.THIS.getPlugin());
2015-08-02 21:56:18 +10:00
tasks.put(val, task);
return val;
}
2015-11-25 22:40:22 -05:00
@Override
2015-09-13 14:04:31 +10:00
public void taskAsync(final Runnable r) {
2015-11-25 22:40:22 -05:00
final Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
2015-07-31 00:25:16 +10:00
builder.async().execute(r).submit(SpongeMain.THIS.getPlugin());
}
2015-11-25 22:40:22 -05:00
@Override
2015-09-13 14:04:31 +10:00
public void task(final Runnable r) {
2015-11-25 22:40:22 -05:00
final Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
2015-07-31 00:25:16 +10:00
builder.execute(r).submit(SpongeMain.THIS.getPlugin());
}
2015-11-25 22:40:22 -05:00
@Override
2015-09-13 14:04:31 +10:00
public void taskLater(final Runnable r, final int delay) {
2015-11-25 22:40:22 -05:00
final Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
builder.delayTicks(delay).execute(r).submit(SpongeMain.THIS.getPlugin());
}
2015-11-25 22:40:22 -05:00
@Override
2015-09-13 14:04:31 +10:00
public void taskLaterAsync(final Runnable r, final int delay) {
2015-11-25 22:40:22 -05:00
final Task.Builder builder = SpongeMain.THIS.getGame().getScheduler().createTaskBuilder();
builder.async().delayTicks(delay).execute(r).submit(SpongeMain.THIS.getPlugin());
}
2015-11-25 22:40:22 -05:00
@Override
2015-09-13 14:04:31 +10:00
public void cancelTask(final int i) {
2015-09-11 20:09:22 +10:00
final Task task = tasks.remove(i);
2015-09-13 14:04:31 +10:00
if (task != null) {
task.cancel();
}
}
2015-11-25 22:40:22 -05:00
}