feat: implemented scheduler
This commit is contained in:
parent
761015b6a8
commit
9b575d73cc
@ -1,8 +1,10 @@
|
|||||||
package ru.dragonestia.msb3.api;
|
package ru.dragonestia.msb3.api;
|
||||||
|
|
||||||
|
import lombok.extern.log4j.Log4j2;
|
||||||
import net.minestom.server.entity.GameMode;
|
import net.minestom.server.entity.GameMode;
|
||||||
import ru.dragonestia.msb3.api.module.FlatWorldModule;
|
import ru.dragonestia.msb3.api.module.FlatWorldModule;
|
||||||
|
|
||||||
|
@Log4j2
|
||||||
public class Bootstrap {
|
public class Bootstrap {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|||||||
@ -0,0 +1,36 @@
|
|||||||
|
package ru.dragonestia.msb3.api.scheduler;
|
||||||
|
|
||||||
|
import net.minestom.server.MinecraftServer;
|
||||||
|
import net.minestom.server.entity.Player;
|
||||||
|
import net.minestom.server.instance.Instance;
|
||||||
|
import net.minestom.server.timer.Task;
|
||||||
|
import ru.dragonestia.msb3.api.util.UncheckedRunnable;
|
||||||
|
|
||||||
|
import java.time.Duration;
|
||||||
|
|
||||||
|
public interface Scheduler {
|
||||||
|
|
||||||
|
static Scheduler ofPlayer(Player player) {
|
||||||
|
return new SchedulerImpl(player.scheduler());
|
||||||
|
}
|
||||||
|
|
||||||
|
static Scheduler ofInstance(Instance instance) {
|
||||||
|
return new SchedulerImpl(instance.scheduler());
|
||||||
|
}
|
||||||
|
|
||||||
|
static Scheduler global() {
|
||||||
|
return new SchedulerImpl(MinecraftServer.getSchedulerManager());
|
||||||
|
}
|
||||||
|
|
||||||
|
static Scheduler create() {
|
||||||
|
return new SchedulerImpl(net.minestom.server.timer.Scheduler.newScheduler());
|
||||||
|
}
|
||||||
|
|
||||||
|
Task delayedTask(UncheckedRunnable task, Duration delay);
|
||||||
|
|
||||||
|
Task repeatingTask(UncheckedRunnable task, Duration period, Duration delay);
|
||||||
|
|
||||||
|
default Task repeatingTask(UncheckedRunnable task, Duration period) {
|
||||||
|
return repeatingTask(task, period, Duration.ZERO);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
package ru.dragonestia.msb3.api.scheduler;
|
||||||
|
|
||||||
|
import net.minestom.server.timer.Scheduler;
|
||||||
|
import net.minestom.server.timer.Task;
|
||||||
|
import net.minestom.server.timer.TaskSchedule;
|
||||||
|
import ru.dragonestia.msb3.api.util.UncheckedRunnable;
|
||||||
|
|
||||||
|
import java.time.Duration;
|
||||||
|
|
||||||
|
class SchedulerImpl implements ru.dragonestia.msb3.api.scheduler.Scheduler {
|
||||||
|
|
||||||
|
private final Scheduler scheduler;
|
||||||
|
|
||||||
|
SchedulerImpl(Scheduler scheduler) {
|
||||||
|
this.scheduler = scheduler;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Task delayedTask(UncheckedRunnable task, Duration delay) {
|
||||||
|
return scheduler.buildTask(task).delay(delay).schedule();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Task repeatingTask(UncheckedRunnable task, Duration period, Duration delay) {
|
||||||
|
return scheduler.scheduleTask(task, TaskSchedule.duration(delay), TaskSchedule.duration(period));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
package ru.dragonestia.msb3.api.util;
|
||||||
|
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public interface UncheckedRunnable extends Runnable {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default void run() {
|
||||||
|
try {
|
||||||
|
runUnchecked();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
LoggerFactory.getLogger(UncheckedRunnable.class).error(ex.getMessage(), ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void runUnchecked() throws Exception;
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user