|
@@ -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));
|