mirror of
https://github.com/Minestom/Minestom.git
synced 2024-09-29 15:07:36 +02:00
36 lines
950 B
Java
36 lines
950 B
Java
|
package net.minestom.server.timer;
|
||
|
|
||
|
import org.jetbrains.annotations.NotNull;
|
||
|
|
||
|
import java.time.Duration;
|
||
|
import java.util.concurrent.CompletableFuture;
|
||
|
|
||
|
final class TaskScheduleImpl {
|
||
|
static TaskSchedule NEXT_TICK = new TickSchedule(1);
|
||
|
static TaskSchedule PARK = new Park();
|
||
|
static TaskSchedule STOP = new Stop();
|
||
|
static TaskSchedule IMMEDIATE = new Immediate();
|
||
|
|
||
|
record DurationSchedule(@NotNull Duration duration) implements TaskSchedule {
|
||
|
}
|
||
|
|
||
|
record TickSchedule(int tick) implements TaskSchedule {
|
||
|
public TickSchedule {
|
||
|
if (tick <= 0)
|
||
|
throw new IllegalArgumentException("Tick must be greater than 0 (" + tick + ")");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
record FutureSchedule(CompletableFuture<?> future) implements TaskSchedule {
|
||
|
}
|
||
|
|
||
|
record Park() implements TaskSchedule {
|
||
|
}
|
||
|
|
||
|
record Stop() implements TaskSchedule {
|
||
|
}
|
||
|
|
||
|
record Immediate() implements TaskSchedule {
|
||
|
}
|
||
|
}
|