Add implementation scheduler for bukkit & folia;

This commit is contained in:
HarvelsX 2023-06-08 19:03:01 +03:00
parent 3cd878c7fe
commit 81abca0b60
No known key found for this signature in database
GPG Key ID: 6ABE2A78D32F8181
2 changed files with 72 additions and 0 deletions

View File

@ -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));
}
}

View File

@ -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), () -> {
});
}
}