package de.oppermann.bastian.spleef.util; import java.util.ArrayList; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.scoreboard.DisplaySlot; import org.bukkit.scoreboard.Objective; import org.bukkit.scoreboard.Score; import org.bukkit.scoreboard.Scoreboard; import com.google.common.util.concurrent.FutureCallback; import de.oppermann.bastian.spleef.arena.SpleefArena; public class ScoreboardConfiguration { private final ArrayList<String> LINES = new ArrayList<>(); public ScoreboardConfiguration() { } public void addLine(String line) { LINES.add(line); } public String getLine(int position) { return LINES.get(position); } public void setScores(Player player, SpleefArena arena) { final SpleefArena ARENA = arena; final Player PLAYER = player; SpleefPlayer.getPlayer(player.getUniqueId(), new FutureCallback<SpleefPlayer>() { @Override public void onFailure(Throwable e) { e.printStackTrace(); } @Override public void onSuccess(SpleefPlayer stats) { if (PlayerManager.getArena(PLAYER.getUniqueId()) == null) { // check if the player is still ingame return; } Scoreboard board; Objective objective; board = Bukkit.getScoreboardManager().getNewScoreboard(); objective = board.registerNewObjective(ChatColor.GOLD + "Spleef", "dummy"); objective.setDisplaySlot(DisplaySlot.SIDEBAR); objective.setDisplayName(ChatColor.GOLD + "Spleef"); for (String score : board.getEntries()) { try { Integer.parseInt(score); board.resetScores(score); } catch (NumberFormatException e) { // everything is fine :) } } for (int i = 0; i < LINES.size(); i++) { String line = LINES.get(i); line = line.replace("%wins%", stats.getWins(ARENA.getName()) + "&0"); line = line.replace("%totalWins%", stats.getTotalWins() + "&1"); line = line.replace("%losses%", stats.getLosses(ARENA.getName()) + "&2"); line = line.replace("%totalLosses%", stats.getTotalLosses() + "&3"); line = line.replace("%points%", stats.getPoints(ARENA.getName()) + "&4"); line = line.replace("%totalPoints%", stats.getTotalPoints() + "&5"); line = line.replace("%totalEarnedPoints%", stats.getTotalEarnedPoints() + "&6"); line = ChatColor.translateAlternateColorCodes('&', line); Score score = objective.getScore(line); score.setScore(1); score.setScore(LINES.size() - i); } PLAYER.setScoreboard(board); } }); } }