diff --git a/helper/pom.xml b/helper/pom.xml index ae8e9001..e7db017e 100644 --- a/helper/pom.xml +++ b/helper/pom.xml @@ -95,6 +95,7 @@ org.spongepowered:configurate-hocon com.typesafe:config net.kyori:event-api + com.github.Anon8281:UniversalScheduler @@ -337,6 +338,12 @@ + + com.github.Anon8281 + UniversalScheduler + 0.1.3 + compile + diff --git a/helper/src/main/java/me/lucko/helper/Helper.java b/helper/src/main/java/me/lucko/helper/Helper.java index 8ed2c31d..cde1b9a8 100644 --- a/helper/src/main/java/me/lucko/helper/Helper.java +++ b/helper/src/main/java/me/lucko/helper/Helper.java @@ -25,10 +25,11 @@ package me.lucko.helper; +import com.github.Anon8281.universalScheduler.UniversalScheduler; +import com.github.Anon8281.universalScheduler.scheduling.schedulers.TaskScheduler; import me.lucko.helper.internal.LoaderUtils; import me.lucko.helper.plugin.HelperPlugin; import me.lucko.helper.utils.annotation.NonnullByDefault; - import org.bukkit.Bukkit; import org.bukkit.Server; import org.bukkit.World; @@ -37,9 +38,8 @@ import org.bukkit.plugin.ServicesManager; import org.bukkit.scheduler.BukkitScheduler; -import java.util.Optional; - import javax.annotation.Nullable; +import java.util.Optional; /** * Base class for helper, which mainly just proxies calls to {@link Bukkit#getServer()} for convenience. @@ -72,6 +72,14 @@ public static ServicesManager services() { return server().getServicesManager(); } + public static TaskScheduler scheduler() { + return UniversalScheduler.getScheduler(hostPlugin()); + } + + /** + * Deprecated: not supported by Folia + * */ + @Deprecated public static BukkitScheduler bukkitScheduler() { return server().getScheduler(); } diff --git a/helper/src/main/java/me/lucko/helper/Schedulers.java b/helper/src/main/java/me/lucko/helper/Schedulers.java index fe72f11d..b0c2b94d 100644 --- a/helper/src/main/java/me/lucko/helper/Schedulers.java +++ b/helper/src/main/java/me/lucko/helper/Schedulers.java @@ -25,6 +25,7 @@ package me.lucko.helper; +import com.github.Anon8281.universalScheduler.UniversalRunnable; import me.lucko.helper.interfaces.Delegate; import me.lucko.helper.internal.LoaderUtils; import me.lucko.helper.internal.exception.HelperExceptions; @@ -35,10 +36,9 @@ import me.lucko.helper.scheduler.Ticks; import me.lucko.helper.scheduler.builder.TaskBuilder; import me.lucko.helper.utils.annotation.NonnullByDefault; - -import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitScheduler; +import javax.annotation.Nonnull; import java.util.Objects; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; @@ -46,8 +46,6 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; -import javax.annotation.Nonnull; - /** * Provides common instances of {@link Scheduler}. */ @@ -93,9 +91,10 @@ public static Scheduler async() { /** * Gets Bukkit's scheduler. - * + * Deprecated: not supported by Folia * @return bukkit's scheduler */ + @Deprecated public static BukkitScheduler bukkit() { return Helper.bukkitScheduler(); } @@ -168,7 +167,7 @@ public Task runRepeating(@Nonnull Consumer consumer, long delay, @Nonnull } } - private static class HelperTask extends BukkitRunnable implements Task, Delegate> { + private static class HelperTask extends UniversalRunnable implements Task, Delegate> { private final Consumer backingTask; private final AtomicInteger counter = new AtomicInteger(0); @@ -207,11 +206,6 @@ public boolean stop() { return !this.cancelled.getAndSet(true); } - @Override - public int getBukkitId() { - return getTaskId(); - } - @Override public boolean isClosed() { return this.cancelled.get(); @@ -264,11 +258,6 @@ public boolean stop() { } } - @Override - public int getBukkitId() { - throw new UnsupportedOperationException(); - } - @Override public boolean isClosed() { return this.cancelled.get(); diff --git a/helper/src/main/java/me/lucko/helper/promise/HelperPromise.java b/helper/src/main/java/me/lucko/helper/promise/HelperPromise.java index a0e2c52e..bd1725b8 100644 --- a/helper/src/main/java/me/lucko/helper/promise/HelperPromise.java +++ b/helper/src/main/java/me/lucko/helper/promise/HelperPromise.java @@ -28,30 +28,20 @@ import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; - +import me.lucko.helper.Helper; import me.lucko.helper.interfaces.Delegate; -import me.lucko.helper.internal.LoaderUtils; import me.lucko.helper.internal.exception.HelperExceptions; import me.lucko.helper.scheduler.HelperExecutors; import me.lucko.helper.scheduler.Ticks; -import org.bukkit.Bukkit; - +import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.util.Objects; -import java.util.concurrent.Callable; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CompletionStage; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; +import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Function; import java.util.function.Supplier; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - /** * Implementation of {@link Promise} using the server scheduler. * @@ -172,7 +162,7 @@ private void executeDelayedSync(@Nonnull Runnable runnable, long delayTicks) { if (delayTicks <= 0) { executeSync(runnable); } else { - Bukkit.getScheduler().runTaskLater(LoaderUtils.getPlugin(), HelperExceptions.wrapSchedulerTask(runnable), delayTicks); + Helper.scheduler().runTaskLater(HelperExceptions.wrapSchedulerTask(runnable), delayTicks); } } @@ -180,7 +170,7 @@ private void executeDelayedAsync(@Nonnull Runnable runnable, long delayTicks) { if (delayTicks <= 0) { executeAsync(runnable); } else { - Bukkit.getScheduler().runTaskLaterAsynchronously(LoaderUtils.getPlugin(), HelperExceptions.wrapSchedulerTask(runnable), delayTicks); + Helper.scheduler().runTaskLaterAsynchronously(HelperExceptions.wrapSchedulerTask(runnable), delayTicks); } } @@ -188,7 +178,7 @@ private void executeDelayedSync(@Nonnull Runnable runnable, long delay, TimeUnit if (delay <= 0) { executeSync(runnable); } else { - Bukkit.getScheduler().runTaskLater(LoaderUtils.getPlugin(), HelperExceptions.wrapSchedulerTask(runnable), Ticks.from(delay, unit)); + Helper.scheduler().runTaskLater(HelperExceptions.wrapSchedulerTask(runnable), Ticks.from(delay, unit)); } } diff --git a/helper/src/main/java/me/lucko/helper/scheduler/HelperExecutors.java b/helper/src/main/java/me/lucko/helper/scheduler/HelperExecutors.java index 58b090e4..c77bfe8c 100644 --- a/helper/src/main/java/me/lucko/helper/scheduler/HelperExecutors.java +++ b/helper/src/main/java/me/lucko/helper/scheduler/HelperExecutors.java @@ -25,11 +25,9 @@ package me.lucko.helper.scheduler; -import me.lucko.helper.internal.LoaderUtils; +import me.lucko.helper.Helper; import me.lucko.helper.internal.exception.HelperExceptions; -import org.bukkit.Bukkit; - import java.util.concurrent.Executor; import java.util.concurrent.ScheduledExecutorService; @@ -60,14 +58,14 @@ public static void shutdown() { private static final class BukkitSyncExecutor implements Executor { @Override public void execute(Runnable runnable) { - Bukkit.getScheduler().scheduleSyncDelayedTask(LoaderUtils.getPlugin(), HelperExceptions.wrapSchedulerTask(runnable)); + Helper.scheduler().scheduleSyncDelayedTask(HelperExceptions.wrapSchedulerTask(runnable)); } } private static final class BukkitAsyncExecutor implements Executor { @Override public void execute(Runnable runnable) { - Bukkit.getScheduler().runTaskAsynchronously(LoaderUtils.getPlugin(), HelperExceptions.wrapSchedulerTask(runnable)); + Helper.scheduler().runTaskAsynchronously(HelperExceptions.wrapSchedulerTask(runnable)); } } diff --git a/helper/src/main/java/me/lucko/helper/scheduler/Task.java b/helper/src/main/java/me/lucko/helper/scheduler/Task.java index c2c538e7..30469268 100644 --- a/helper/src/main/java/me/lucko/helper/scheduler/Task.java +++ b/helper/src/main/java/me/lucko/helper/scheduler/Task.java @@ -48,13 +48,6 @@ public interface Task extends Terminable { */ boolean stop(); - /** - * Gets the Bukkit ID for this task - * - * @return the bukkit id for this task - */ - int getBukkitId(); - /** * {@link #stop() Stops} the task */ diff --git a/helper/src/main/java/me/lucko/helper/scheduler/threadlock/ServerThreadLockImpl.java b/helper/src/main/java/me/lucko/helper/scheduler/threadlock/ServerThreadLockImpl.java index ab4db1ae..b201ef2c 100644 --- a/helper/src/main/java/me/lucko/helper/scheduler/threadlock/ServerThreadLockImpl.java +++ b/helper/src/main/java/me/lucko/helper/scheduler/threadlock/ServerThreadLockImpl.java @@ -25,11 +25,9 @@ package me.lucko.helper.scheduler.threadlock; -import me.lucko.helper.internal.LoaderUtils; +import me.lucko.helper.Helper; import me.lucko.helper.promise.ThreadContext; -import org.bukkit.Bukkit; - import java.util.concurrent.CountDownLatch; final class ServerThreadLockImpl implements ServerThreadLock { @@ -48,7 +46,7 @@ final class ServerThreadLockImpl implements ServerThreadLock { } // synchronize with the main thread, then countdown - Bukkit.getScheduler().scheduleSyncDelayedTask(LoaderUtils.getPlugin(), this::signal); + Helper.scheduler().scheduleSyncDelayedTask(this::signal); // wait for the main thread to become synchronized await(); diff --git a/helper/src/main/resources/plugin.yml b/helper/src/main/resources/plugin.yml index d499fd0f..5a2fce73 100644 --- a/helper/src/main/resources/plugin.yml +++ b/helper/src/main/resources/plugin.yml @@ -7,3 +7,4 @@ website: https://github.com/lucko/helper load: STARTUP softdepend: [ProtocolLib, Citizens, ViaVersion] api-version: 1.13 +folia-supported: true diff --git a/pom.xml b/pom.xml index 84a0848c..edb1c5a3 100644 --- a/pom.xml +++ b/pom.xml @@ -134,6 +134,10 @@ spigot-repo https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + jitpack.io + https://jitpack.io + \ No newline at end of file