Explorar o código

Replace Bukkit schedulers in ScoreboardWrapper.java

Rockyers hai 1 ano
pai
achega
0603faff33

+ 29 - 29
src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java

@@ -18,12 +18,10 @@ import com.gmail.nossr50.util.player.NotificationManager;
 import com.gmail.nossr50.util.player.UserManager;
 import com.gmail.nossr50.util.scoreboards.ScoreboardManager.SidebarType;
 import com.gmail.nossr50.util.skills.SkillTools;
+import com.tcoded.folialib.wrapper.WrappedTask;
 import org.apache.commons.lang.Validate;
-import org.bukkit.Bukkit;
 import org.bukkit.ChatColor;
 import org.bukkit.entity.Player;
-import org.bukkit.scheduler.BukkitRunnable;
-import org.bukkit.scheduler.BukkitTask;
 import org.bukkit.scoreboard.DisplaySlot;
 import org.bukkit.scoreboard.Objective;
 import org.bukkit.scoreboard.Score;
@@ -87,38 +85,40 @@ public class ScoreboardWrapper {
         }
     }
 
-    public BukkitTask updateTask = null;
+    public WrappedTask updateTask = null;
 
-    private class ScoreboardQuickUpdate extends BukkitRunnable {
-        @Override
-        public void run() {
-            updateSidebar();
-            updateTask = null;
+    private class ScoreboardQuickUpdate {
+        public WrappedTask runTaskLater(long delay) {
+            return mcMMO.p.getFoliaLib().getImpl().runLater(() -> {
+                updateSidebar();
+                updateTask = null;
+            }, delay * Misc.TICK_CONVERSION_FACTOR, TimeUnit.MILLISECONDS);
         }
     }
 
-    public BukkitTask revertTask = null;
+    public WrappedTask revertTask = null;
 
-    private class ScoreboardChangeTask extends BukkitRunnable {
-        @Override
-        public void run() {
-            tryRevertBoard();
-            revertTask = null;
+    private class ScoreboardChangeTask {
+        public WrappedTask runTaskLater(long delay) {
+            return mcMMO.p.getFoliaLib().getImpl().runLater(() -> {
+                tryRevertBoard();
+                revertTask = null;
+            }, delay * Misc.TICK_CONVERSION_FACTOR, TimeUnit.MILLISECONDS);
         }
     }
 
-    public BukkitTask cooldownTask = null;
+    public WrappedTask cooldownTask = null;
 
-    private class ScoreboardCooldownTask extends BukkitRunnable {
-        @Override
-        public void run() {
-            // Stop updating if it's no longer something displaying cooldowns
-            if (isBoardShown() && (isSkillScoreboard() || isCooldownScoreboard())) {
-                doSidebarUpdateSoon();
-            }
-            else {
-                stopCooldownUpdating();
-            }
+    private class ScoreboardCooldownTask {
+        public WrappedTask runTaskTimer(long delay, long period) {
+            return mcMMO.p.getFoliaLib().getImpl().runTimer(() -> {
+                // Stop updating if it's no longer something displaying cooldowns
+                if (isBoardShown() && (isSkillScoreboard() || isCooldownScoreboard())) {
+                    doSidebarUpdateSoon();
+                } else {
+                    stopCooldownUpdating();
+                }
+            }, delay, period, TimeUnit.MILLISECONDS);
         }
     }
 
@@ -126,7 +126,7 @@ public class ScoreboardWrapper {
     public void doSidebarUpdateSoon() {
         if (updateTask == null) {
             // To avoid spamming the scheduler, store the instance and run 2 ticks later
-            updateTask = new ScoreboardQuickUpdate().runTaskLater(mcMMO.p, 2L);
+            updateTask = new ScoreboardQuickUpdate().runTaskLater(2L);
         }
     }
 
@@ -134,7 +134,7 @@ public class ScoreboardWrapper {
         if (cooldownTask == null) {
             // Repeat every 5 seconds.
             // Cancels once all cooldowns are done, using stopCooldownUpdating().
-            cooldownTask = new ScoreboardCooldownTask().runTaskTimer(mcMMO.p, 5 * Misc.TICK_CONVERSION_FACTOR, 5 * Misc.TICK_CONVERSION_FACTOR);
+            cooldownTask = new ScoreboardCooldownTask().runTaskTimer(5 * Misc.TICK_CONVERSION_FACTOR, 5 * Misc.TICK_CONVERSION_FACTOR);
         }
     }
 
@@ -217,7 +217,7 @@ public class ScoreboardWrapper {
         }
 
         player.setScoreboard(scoreboard);
-        revertTask = new ScoreboardChangeTask().runTaskLater(mcMMO.p, ticks);
+        revertTask = new ScoreboardChangeTask().runTaskLater(ticks);
 
         // TODO is there any way to do the time that looks acceptable?
         // player.sendMessage(LocaleLoader.getString("Commands.Scoreboard.Timer", StringUtils.capitalize(sidebarType.toString().toLowerCase(Locale.ENGLISH)), ticks / 20F));