I would like to have the teams "coins" and "tokens" update in the scoreboard every second when the player enters the server. The BukkitRunnable should be interrupted when the player leaves the server.
I experimented a bit and found a solution. I would be interested in your opinion on the code, if I wrote it efficiently and practically.
The "updateScoreboard()" method is in the PlayerJoinEvent listener.
Do you have any suggestions for improvement?
public class ScoreBoard {
public void setScoreBoard(Player player) {
Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
Objective object = board.registerNewObjective("returnscoreboard", "dummy");
object.setDisplayName("§cTest");
object.setDisplaySlot(DisplaySlot.SIDEBAR);
Team satoshis = board.registerNewTeam("satoshis");
Team tokens = board.registerNewTeam("tokens");
object.getScore("§a").setScore(6);
object.getScore("§esatoshis:").setScore(5);
object.getScore("§b").setScore(4);
object.getScore("§c").setScore(3);
object.getScore("§etokens").setScore(2);
object.getScore("§d").setScore(1);
object.getScore("§f").setScore(0);
satoshis.addEntry("§b");
satoshis.setPrefix("≫ §a" + API_Geld.getSatoshis(player.getUniqueId()));
tokens.addEntry("§d");
tokens.setPrefix("≫ §a" + API_Geld.getReturnTokens(player.getUniqueId()));
player.setScoreboard(board);
}
public void updateScoreboard(Player player) {
Scoreboard board = player.getScoreboard();
Team satoshis = board.getTeam("satoshis");
Team tokens = board.getTeam("tokens");
BukkitRunnable tester = new BukkitRunnable() {
@Override
public void run() {
if(player.isOnline()) {
satoshis.setPrefix("≫ §a" + API_Geld.getSatoshis(player.getUniqueId()));
tokens.setPrefix("≫ §a" + API_Geld.getReturnTokens(player.getUniqueId()));
System.out.println("RELOAD");
} else {
System.out.println("OFFLINE");
cancel();
}
}
};
tester.runTaskTimer(Main.getPlugin(), 0, 40);
}
}