Add implementation scheduler for bukkit & folia;
This commit is contained in:
parent
3cd878c7fe
commit
81abca0b60
|
@ -0,0 +1,29 @@
|
|||
package com.pretzel.dev.villagertradelimiter.scheduler;
|
||||
|
||||
|
||||
import java.util.function.Consumer;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.scheduler.BukkitScheduler;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public class BukkitSchedulerAdapter implements SchedulerAdapter {
|
||||
|
||||
private final Plugin plugin;
|
||||
private final BukkitScheduler scheduler;
|
||||
|
||||
public BukkitSchedulerAdapter(final Plugin plugin) {
|
||||
this.plugin = plugin;
|
||||
this.scheduler = plugin.getServer().getScheduler();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void runAsync(final Runnable submitDataTask) {
|
||||
scheduler.runTaskAsynchronously(plugin, submitDataTask);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Entity> void runEntity(final T entity, final Consumer<T> consumer) {
|
||||
scheduler.runTask(plugin, () -> consumer.accept(entity));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
package com.pretzel.dev.villagertradelimiter.scheduler;
|
||||
|
||||
|
||||
import io.papermc.paper.threadedregions.scheduler.AsyncScheduler;
|
||||
import java.util.function.Consumer;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
public class FoliaSchedulerAdapter implements SchedulerAdapter {
|
||||
|
||||
private final static boolean SUPPORTED = checkSupport();
|
||||
private final Plugin plugin;
|
||||
private final AsyncScheduler asyncScheduler;
|
||||
|
||||
public FoliaSchedulerAdapter(final Plugin plugin) {
|
||||
this.plugin = plugin;
|
||||
this.asyncScheduler = plugin.getServer().getAsyncScheduler();
|
||||
}
|
||||
|
||||
public static boolean isSupported() {
|
||||
return SUPPORTED;
|
||||
}
|
||||
|
||||
private static boolean checkSupport() {
|
||||
try {
|
||||
Class.forName("io.papermc.paper.threadedregions.RegionizedServer");
|
||||
return true;
|
||||
} catch (ClassNotFoundException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void runAsync(Runnable submitDataTask) {
|
||||
asyncScheduler.runNow(plugin, task -> submitDataTask.run());
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Entity> void runEntity(T entity, Consumer<T> consumer) {
|
||||
entity.getScheduler().run(plugin, task -> consumer.accept(entity), () -> {
|
||||
});
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue