Merge pull request 'fixed task duplication by refactoring how tasks are managed through tasks or command' (#12) from bugfix-task-duplication into main

Reviewed-on: #12
This commit is contained in:
Steev 2025-01-30 12:10:33 +01:00
commit be945c688c
3 changed files with 51 additions and 2 deletions

39
config.yml Normal file
View File

@ -0,0 +1,39 @@
# general
prefix: null
minplayers: 2
maxplayers: 4
# The language selected here can only be changed by reloading the plugin
# the language must equal the language file in ../lang
# by default avaiable are: de-ger, en-us
language: "en-us"
autorestart: false
lobby-auto-queue: true
force-on-spawn: true
lobby-server: "lobby"
# scoreboard
scoreboard:
lobby:
player: "Player:"
timeleft: "Starting in:"
server: "your.server.ip"
ingame:
timeleft: "Time:"
player: "Player:"
alive: "Alive:"
kills: "kills:"
server: "your.server.ip"
# spawn points
lobby: null
arena: null
# Permissions
admin:
all: "tw.admin"
setlocation:
all: "tw.admin.setlocation"
lobby: "tw.admin.setlocation.lobby"
arena: "tw.admin.setlocation.arena"
start: "tw.admin.start"
stop: "tw.admin.stop"

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;