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