diff --git a/pom.xml b/pom.xml
index be8053d6..6ef11fc2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -339,6 +339,10 @@
com.google.thirdparty
fr.xephi.authme.libs.com.google.thirdparty
+
+ com.cryptomorin.xseries
+ fr.xephi.authme.libs.xseries
+
com.google.j2objc
fr.xephi.authme.libs.com.google.j2objc
diff --git a/src/main/java/fr/xephi/authme/AuthMe.java b/src/main/java/fr/xephi/authme/AuthMe.java
index 85751661..cdcf9ac6 100644
--- a/src/main/java/fr/xephi/authme/AuthMe.java
+++ b/src/main/java/fr/xephi/authme/AuthMe.java
@@ -49,7 +49,6 @@ import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
-import org.bukkit.scheduler.BukkitScheduler;
import org.jetbrains.annotations.NotNull;
import javax.inject.Inject;
@@ -259,7 +258,6 @@ public class AuthMe extends JavaPlugin {
injector.register(AuthMe.class, this);
injector.register(Server.class, getServer());
injector.register(PluginManager.class, getServer().getPluginManager());
- injector.register(BukkitScheduler.class, getServer().getScheduler());
injector.provide(DataFolder.class, getDataFolder());
injector.registerProvider(Settings.class, SettingsProvider.class);
injector.registerProvider(DataSource.class, DataSourceProvider.class);
diff --git a/src/main/java/fr/xephi/authme/initialization/OnStartupTasks.java b/src/main/java/fr/xephi/authme/initialization/OnStartupTasks.java
index 02f17e95..705f3bcc 100644
--- a/src/main/java/fr/xephi/authme/initialization/OnStartupTasks.java
+++ b/src/main/java/fr/xephi/authme/initialization/OnStartupTasks.java
@@ -1,5 +1,6 @@
package fr.xephi.authme.initialization;
+import com.github.Anon8281.universalScheduler.UniversalRunnable;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.datasource.DataSource;
@@ -18,7 +19,6 @@ import org.bstats.bukkit.Metrics;
import org.bstats.charts.SimplePie;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
-import org.bukkit.scheduler.BukkitRunnable;
import javax.inject.Inject;
import java.util.List;
@@ -96,7 +96,7 @@ public class OnStartupTasks {
if (!settings.getProperty(RECALL_PLAYERS)) {
return;
}
- bukkitService.runTaskTimerAsynchronously(new BukkitRunnable() {
+ bukkitService.runTaskTimerAsynchronously(new UniversalRunnable() {
@Override
public void run() {
List loggedPlayersWithEmptyMail = dataSource.getLoggedPlayersWithEmptyMail();
diff --git a/src/main/java/fr/xephi/authme/initialization/TaskCloser.java b/src/main/java/fr/xephi/authme/initialization/TaskCloser.java
index e60f1135..4cd6daa9 100644
--- a/src/main/java/fr/xephi/authme/initialization/TaskCloser.java
+++ b/src/main/java/fr/xephi/authme/initialization/TaskCloser.java
@@ -25,6 +25,7 @@ public class TaskCloser implements Runnable {
@Override
public void run() {
+ scheduler.cancelTasks();
if (dataSource != null) {
dataSource.closeConnection();
}
diff --git a/src/main/java/fr/xephi/authme/service/BukkitService.java b/src/main/java/fr/xephi/authme/service/BukkitService.java
index 3f6a87aa..98b92867 100644
--- a/src/main/java/fr/xephi/authme/service/BukkitService.java
+++ b/src/main/java/fr/xephi/authme/service/BukkitService.java
@@ -1,5 +1,7 @@
package fr.xephi.authme.service;
+import com.github.Anon8281.universalScheduler.UniversalRunnable;
+import com.github.Anon8281.universalScheduler.scheduling.tasks.MyScheduledTask;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.initialization.SettingsDependent;
import fr.xephi.authme.settings.Settings;
@@ -16,7 +18,6 @@ import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
-import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;
import javax.inject.Inject;
@@ -167,7 +168,7 @@ public class BukkitService implements SettingsDependent {
if (useAsyncTasks) {
runTaskAsynchronously(task);
} else {
- task.run();
+ runTask(task);
}
}
@@ -200,7 +201,7 @@ public class BukkitService implements SettingsDependent {
* @throws IllegalArgumentException if task is null
* @throws IllegalStateException if this was already scheduled
*/
- public BukkitTask runTaskTimerAsynchronously(BukkitRunnable task, long delay, long period) {
+ public MyScheduledTask runTaskTimerAsynchronously(UniversalRunnable task, long delay, long period) {
return task.runTaskTimerAsynchronously(authMe, delay, period);
}
@@ -215,7 +216,7 @@ public class BukkitService implements SettingsDependent {
* @throws IllegalArgumentException if plugin is null
* @throws IllegalStateException if this was already scheduled
*/
- public BukkitTask runTaskTimer(BukkitRunnable task, long delay, long period) {
+ public MyScheduledTask runTaskTimer(UniversalRunnable task, long delay, long period) {
return task.runTaskTimer(authMe, delay, period);
}
diff --git a/src/main/java/fr/xephi/authme/task/MessageTask.java b/src/main/java/fr/xephi/authme/task/MessageTask.java
index cf4366d9..dd11e8ef 100644
--- a/src/main/java/fr/xephi/authme/task/MessageTask.java
+++ b/src/main/java/fr/xephi/authme/task/MessageTask.java
@@ -1,12 +1,12 @@
package fr.xephi.authme.task;
+import com.github.Anon8281.universalScheduler.UniversalRunnable;
import org.bukkit.entity.Player;
-import org.bukkit.scheduler.BukkitRunnable;
/**
* Message shown to a player in a regular interval as long as he is not logged in.
*/
-public class MessageTask extends BukkitRunnable {
+public class MessageTask extends UniversalRunnable {
private final Player player;
private final String[] message;
diff --git a/src/main/java/fr/xephi/authme/task/purge/PurgeTask.java b/src/main/java/fr/xephi/authme/task/purge/PurgeTask.java
index 5c4a8707..15ab6552 100644
--- a/src/main/java/fr/xephi/authme/task/purge/PurgeTask.java
+++ b/src/main/java/fr/xephi/authme/task/purge/PurgeTask.java
@@ -1,5 +1,6 @@
package fr.xephi.authme.task.purge;
+import com.github.Anon8281.universalScheduler.UniversalRunnable;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.output.ConsoleLoggerFactory;
import fr.xephi.authme.permission.PermissionsManager;
@@ -9,14 +10,13 @@ import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
-import org.bukkit.scheduler.BukkitRunnable;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
import java.util.UUID;
-class PurgeTask extends BukkitRunnable {
+class PurgeTask extends UniversalRunnable {
//how many players we should check for each tick
private static final int INTERVAL_CHECK = 5;