From 3448146b8fc6346bda07c579ab9449a382861dd4 Mon Sep 17 00:00:00 2001 From: Nahuel Dolores Date: Fri, 21 Jul 2023 11:54:37 -0300 Subject: Fix issues and wrap up work --- .../java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java | 8 ++++---- .../quests/bukkit/runnable/QuestsAutoSaveRunnable.java | 4 +--- .../leonardobishop/quests/bukkit/scheduler/WrappedRunnable.java | 1 + .../quests/bukkit/scheduler/folia/FoliaServerScheduler.java | 4 +++- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java index 35fd3fc8..8bfcd00b 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java @@ -81,7 +81,7 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { private TaskTypeManager taskTypeManager; private QPlayerManager qPlayerManager; private QuestController questController; - private QuestCompleter questCompleter; + private BukkitQuestCompleter questCompleter; private BukkitQuestsConfig questsConfig; private Updater updater; private ServerScheduler serverScheduler; @@ -102,7 +102,7 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { private VersionSpecificHandler versionSpecificHandler; private LogHistory logHistory; - private QuestsAutoSaveRunnable questAutoSaveTask; + private WrappedTask questAutoSaveTask; private WrappedTask questQueuePollTask; private BiFunction placeholderAPIProcessor; @@ -508,7 +508,7 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { long autoSaveInterval = this.getConfig().getLong("options.performance-tweaking.quest-autosave-interval", 12000); try { if (questAutoSaveTask != null) questAutoSaveTask.cancel(); - questAutoSaveTask = new QuestsAutoSaveRunnable(this, autoSaveInterval); + questAutoSaveTask = new QuestsAutoSaveRunnable(this).runTaskTimer(getScheduler(), autoSaveInterval, autoSaveInterval); } catch (Exception ex) { questsLogger.debug("Cannot cancel and restart quest autosave task"); } @@ -516,7 +516,7 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { long queueExecuteInterval = this.getConfig().getLong("options.performance-tweaking.quest-queue-executor-interval", 1); try { if (questQueuePollTask != null) questQueuePollTask.cancel(); - questQueuePollTask = serverScheduler.runTaskTimer((BukkitQuestCompleter) questCompleter, queueExecuteInterval, queueExecuteInterval); + questQueuePollTask = serverScheduler.runTaskTimer(questCompleter, queueExecuteInterval, queueExecuteInterval); } catch (Exception ex) { questsLogger.debug("Cannot cancel and restart queue executor task"); } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/runnable/QuestsAutoSaveRunnable.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/runnable/QuestsAutoSaveRunnable.java index d9999a96..3ffc1876 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/runnable/QuestsAutoSaveRunnable.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/runnable/QuestsAutoSaveRunnable.java @@ -14,14 +14,12 @@ public class QuestsAutoSaveRunnable extends WrappedRunnable { private final Queue queue = new LinkedList<>(); private final BukkitQuestsPlugin plugin; - public QuestsAutoSaveRunnable(BukkitQuestsPlugin plugin, long autoSaveInterval) { + public QuestsAutoSaveRunnable(BukkitQuestsPlugin plugin) { for (Player player : Bukkit.getOnlinePlayers()) { queue.add(player.getUniqueId()); } this.plugin = plugin; - - this.runTaskTimer(plugin.getScheduler(), autoSaveInterval, autoSaveInterval); } @Override diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/scheduler/WrappedRunnable.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/scheduler/WrappedRunnable.java index 3d8377a4..485f9e14 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/scheduler/WrappedRunnable.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/scheduler/WrappedRunnable.java @@ -33,6 +33,7 @@ public abstract class WrappedRunnable implements Runnable { */ @NotNull public WrappedTask runTaskTimer(@NotNull ServerScheduler serverScheduler, long delay, long period) { + checkNotYetScheduled(); return setupTask(serverScheduler.runTaskTimer(this, delay, period)); } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/scheduler/folia/FoliaServerScheduler.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/scheduler/folia/FoliaServerScheduler.java index d33564b5..7814b79e 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/scheduler/folia/FoliaServerScheduler.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/scheduler/folia/FoliaServerScheduler.java @@ -55,7 +55,9 @@ public class FoliaServerScheduler implements ServerScheduler { @Override public @NotNull WrappedTask runTaskTimer(@NotNull Runnable runnable, long delay, long period) { - return new FoliaWrappedTask(globalRegionScheduler.runAtFixedRate(plugin, task -> runnable.run(), delay, period)); + return new FoliaWrappedTask(globalRegionScheduler.runAtFixedRate(plugin, task -> { + if (runnable != null) runnable.run(); + }, delay, period)); } @Override -- cgit v1.2.3-70-g09d2