fixed task duplication by refactoring how tasks are managed through tasks or command

This commit is contained in:
2025-01-30 12:10:08 +01:00
parent d22ac3d22a
commit c853f7a433
3 changed files with 51 additions and 2 deletions

View File

@@ -38,6 +38,7 @@ public class TridentwarCommand implements CommandExecutor {
case "start":
if(commandSender.hasPermission(this.gameManager.getPlugin().config.getString("admin.start")) ||
commandSender.hasPermission(this.gameManager.getPlugin().config.getString("admin.all"))) {
gameManager.getLobbyWaitingTask().cancel();
gameManager.setGameState(GameState.STARTING);
} else {
// Get permission error message from config

View File

@@ -4,6 +4,7 @@ import de.steev.Tridentwar.manager.GameManager;
import de.steev.Tridentwar.manager.GameState;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scoreboard.DisplaySlot;
@@ -25,12 +26,21 @@ public class LobbyWaitingTask extends BukkitRunnable {
@Override
public void run() {
if (Bukkit.getOnlinePlayers().size() >= this.gameManager.getPlugin().config.getInt("maxplayers")) {
timeLeft=10;
}
Scoreboard board = manager.getNewScoreboard();
Objective obj = board.registerNewObjective("Tridentwar", "dummy", "SLPNetwork");
obj.setDisplaySlot(DisplaySlot.SIDEBAR);
timeLeft--;
for (Player player : Bukkit.getOnlinePlayers()){
obj.getScore("=-=-=-=-=-=-=-=-=-=-=").setScore(4);
obj.getScore(this.gameManager.getPlugin().config.getString("scoreboard.lobby.player") + " " + player.getDisplayName()).setScore(3);
obj.getScore(this.gameManager.getPlugin().config.getString("scoreboard.lobby.timeleft") + " " + timeLeft).setScore(2);
@@ -40,7 +50,6 @@ public class LobbyWaitingTask extends BukkitRunnable {
player.setScoreboard(board);
}
timeLeft--;
this.gameManager.getMessageManager().broadCastXPBar(ChatColor.translateAlternateColorCodes('&', this.gameManager.getPlugin().languageDataConfig.getString("game.countdown") + timeLeft));
if (timeLeft > 10) {
switch (timeLeft) {
@@ -64,7 +73,7 @@ public class LobbyWaitingTask extends BukkitRunnable {
} else {
Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&',
this.gameManager.getFileHandler().replaceVars(this.gameManager.getPlugin().languageDataConfig.getString("game.starting"), null, null)));
gameManager.setGameState(GameState.STARTING);
this.gameManager.setGameState(GameState.ACTIVE);
}
cancel();
return;