Sorted Tablist and Player Specific Scoreboard at the same Time

Discussion in 'Plugin Development' started by Entjic, Aug 21, 2019.

Thread Status:
Not open for further replies.
  1. Hey there,
    I got a little problem but first my code:


    Method for refreshing my scoreboard
    Code:
     
           
    public class ScoreboardRefresh {
    //hashmap for playerspecific scoreboard
    public static Map<UUID, Scoreboard> playerScoreboards = new HashMap<UUID, Scoreboard>();
    //this method works so the code of this doesnt matter
    GetRank gr = new GetRank();
            public Scoreboard refreshScoreboard(Player player) {
            Scoreboard scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
            Objective objective = scoreboard.registerNewObjective("sicebar", "dummy");
    
            objective.setDisplaySlot(DisplaySlot.SIDEBAR);
            objective.setDisplayName(ChatColor.AQUA + "myserver");
            objective.getScore(ChatColor.GREEN + "your name:").setScore(5);
            objective.getScore(ChatColor.DARK_GRAY + "「" + ChatColor.GOLD + player.getName() + ChatColor.DARK_GRAY + "」").setScore(4);
            objective.getScore(ChatColor.GREEN + "your rank:").setScore(3);
            objective.getScore(gr.getPrefix(player)).setScore(2);
            objective.getScore(ChatColor.GREEN + "TeamSpeak:").setScore(1);
            objective.getScore(ChatColor.GOLD + "myserver").setScore(0);
    
            if(!playerScoreboards.containsKey(player.getUniqueId())) {
                playerScoreboards.put(player.getUniqueId(), scoreboard);
            }
            player.setScoreboard(scoreboard);
            return scoreboard;
        }


    Method for refreshing my tablist
    Code:
    public void doIt() {
            ScoreboardRefresh scoreboardRefresh = new ScoreboardRefresh();
            for (Player player : Bukkit.getOnlinePlayers()) {
                String name = player.getName();
                UUID playeruuid = player.getUniqueId();
                Team owner, admin, developer, jrdeveloper, srmoderator, moderator, jrmoderator, builder, jrbuilder, supporter, jrsupporter, yt, vip, spieler;
                if(ScoreboardRefresh.playerScoreboards.get(playeruuid) == null){
                    ScoreboardRefresh.playerScoreboards.put(playeruuid, scoreboardRefresh.refreshScoreboard(player));
                }
                Scoreboard scoreboard = ScoreboardRefresh.playerScoreboards.get(playeruuid);
                if(!ScoreboardRefresh.playerScoreboards.containsKey(player.getUniqueId())) {
                    ScoreboardRefresh.playerScoreboards.put(player.getUniqueId(), scoreboard);
                }
    }
    //registering Teams
                if (scoreboard.getTeam("aaOwner") == null) {
                    owner = scoreboard.registerNewTeam("aaOwner");
                } else {
                    owner = scoreboard.getTeam("aaOwner");
                }
                if (scoreboard.getTeam("abAdmin") == null) {
                    admin = scoreboard.registerNewTeam("abAdmin");
                } else {
                    admin = scoreboard.getTeam("aaOwner");
                }
                if (scoreboard.getTeam("acDeveloper") == null) {
                    developer = scoreboard.registerNewTeam("acDeveloper");
                } else {
                    developer = scoreboard.getTeam("acDeveloper");
                }
                if (scoreboard.getTeam("adJrDeveloper") == null) {
                    jrdeveloper = scoreboard.registerNewTeam("adJrDeveloper");
                } else {
                    jrdeveloper = scoreboard.getTeam("adJrDeveloper");
                }
                if (scoreboard.getTeam("aeSrModerator") == null) {
                    srmoderator = scoreboard.registerNewTeam("aeSrModerator");
                } else {
                    srmoderator = scoreboard.getTeam("aeSrModerator");
                }
                if (scoreboard.getTeam("afModerator") == null) {
                    moderator = scoreboard.registerNewTeam("afModerator");
                } else {
                    moderator = scoreboard.getTeam("afModerator");
                }
                if (scoreboard.getTeam("afModerator") == null) {
                    moderator = scoreboard.registerNewTeam("afModerator");
                } else {
                    moderator = scoreboard.getTeam("afModerator");
                }
                if (scoreboard.getTeam("agJrModerator") == null) {
                    jrmoderator = scoreboard.registerNewTeam("agJrModerator");
                } else {
                    jrmoderator = scoreboard.getTeam("agJrModerator");
                }
                if (scoreboard.getTeam("ahBuilder") == null) {
                    builder = scoreboard.registerNewTeam("ahBuilder");
                } else {
                    builder = scoreboard.getTeam("ahBuilder");
                }
                if (scoreboard.getTeam("aiJrBuilder") == null) {
                    jrbuilder = scoreboard.registerNewTeam("aiJrBuilder");
                } else {
                    jrbuilder = scoreboard.getTeam("aiJrBuilder");
                }
                if (scoreboard.getTeam("ajSupporter") == null) {
                    supporter = scoreboard.registerNewTeam("ajSupporter");
                } else {
                    supporter = scoreboard.getTeam("ajSupporter");
                }
                if (scoreboard.getTeam("akJrSupporter") == null) {
                    jrsupporter = scoreboard.registerNewTeam("akJrSupporter");
                } else {
                    jrsupporter = scoreboard.getTeam("akJrSupporter");
                }
                if (scoreboard.getTeam("alYT") == null) {
                    yt = scoreboard.registerNewTeam("alYT");
                } else {
                    yt = scoreboard.getTeam("alYT");
                }
                if (scoreboard.getTeam("amVip") == null) {
                    vip = scoreboard.registerNewTeam("amVip");
                } else {
                    vip = scoreboard.getTeam("amVip");
                }
                if (scoreboard.getTeam("anSpieler") == null) {
                    spieler = scoreboard.registerNewTeam("anSpieler");
                } else {
                    spieler = scoreboard.getTeam("anSpieler");
                }
    //removing player for making sure he is in only one team
                owner.removePlayer(player);
                admin.removePlayer(player);
                developer.removePlayer(player);
                jrdeveloper.removePlayer(player);
                srmoderator.removePlayer(player);
                moderator.removePlayer(player);
                jrmoderator.removePlayer(player);
                builder.removePlayer(player);
                jrbuilder.removePlayer(player);
                supporter.removePlayer(player);
                jrsupporter.removePlayer(player);
                yt.removePlayer(player);
                vip.removePlayer(player);
                spieler.removePlayer(player);
    //setting the prefix by using another method which works so the code of this doesnt matter
                GetRank.Rank rank = getRank.getRank(player);
                switch (rank) {
                    case Owner:
                        player.setDisplayName(ChatColor.DARK_GRAY + "「" + ChatColor.DARK_RED + "Owner" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.DARK_RED + name);
                        player.setPlayerListName(ChatColor.DARK_GRAY + "「" + ChatColor.DARK_RED + "Owner" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.DARK_RED + name);
                        owner.addPlayer(player);
                        break;
                    case Admin:
                        player.setDisplayName(ChatColor.DARK_GRAY + "「" + ChatColor.RED + "Admin" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.RED + name);
                        player.setPlayerListName(ChatColor.DARK_GRAY + "「" + ChatColor.RED + "Admin" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.RED + name);
                        admin.addPlayer(player);
                        break;
                    case Developer:
                        player.setDisplayName(ChatColor.DARK_GRAY + "「" + ChatColor.AQUA + "Developer" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.AQUA + name);
                        player.setPlayerListName(ChatColor.DARK_GRAY + "「" + ChatColor.AQUA + "Developer" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.AQUA + name);
                        developer.addPlayer(player);
                        break;
                    case JrDeveloper:
                        player.setDisplayName(ChatColor.DARK_GRAY + "「" + ChatColor.AQUA + "JrDeveloper" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.AQUA + name);
                        player.setPlayerListName(ChatColor.DARK_GRAY + "「" + ChatColor.AQUA + "JrDeveloper" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.AQUA + name);
                        jrdeveloper.addPlayer(player);
                        break;
                    case SrModerator:
                        player.setDisplayName(ChatColor.DARK_GRAY + "「" + ChatColor.RED + "SrModerator" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.RED + name);
                        player.setPlayerListName(ChatColor.DARK_GRAY + "「" + ChatColor.RED + "SrModerator" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.RED + name);
                        srmoderator.addPlayer(player);
                        break;
                    case Moderator:
                        player.setDisplayName(ChatColor.DARK_GRAY + "「" + ChatColor.RED + "Moderator" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.RED + name);
                        player.setPlayerListName(ChatColor.DARK_GRAY + "「" + ChatColor.RED + "Moderator" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.RED + name);
                        moderator.addPlayer(player);
                        break;
                    case JrModerator:
                        player.setDisplayName(ChatColor.DARK_GRAY + "「" + ChatColor.RED + "JrModerator" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.RED + name);
                        player.setPlayerListName(ChatColor.DARK_GRAY + "「" + ChatColor.RED + "JrModerator" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.RED + name);
                        jrmoderator.addPlayer(player);
                        break;
                    case Builder:
                        player.setDisplayName(ChatColor.DARK_GRAY + "「" + ChatColor.YELLOW + "Builder" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.YELLOW + name);
                        player.setPlayerListName(ChatColor.DARK_GRAY + "「" + ChatColor.YELLOW + "Builder" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.YELLOW + name);
                        builder.addPlayer(player);
                        break;
                    case JrBuilder:
                        player.setDisplayName(ChatColor.DARK_GRAY + "「" + ChatColor.YELLOW + "JrBuilder" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.YELLOW + name);
                        player.setPlayerListName(ChatColor.DARK_GRAY + "「" + ChatColor.YELLOW + "JrBuilder" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.YELLOW + name);
                        jrbuilder.addPlayer(player);
                        break;
                    case Supporter:
                        player.setDisplayName(ChatColor.DARK_GRAY + "「" + ChatColor.GREEN + "Supporter" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.GREEN + name);
                        player.setPlayerListName(ChatColor.DARK_GRAY + "「" + ChatColor.GREEN + "Supporter" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.GREEN + name);
                        supporter.addPlayer(player);
                        break;
                    case JrSupporter:
                        player.setDisplayName(ChatColor.DARK_GRAY + "「" + ChatColor.GREEN + "JrSupporter" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.GREEN + name);
                        player.setPlayerListName(ChatColor.DARK_GRAY + "「" + ChatColor.GREEN + "JrSupporter" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.GREEN + name);
                        jrsupporter.addPlayer(player);
                        break;
                    case YT:
                        player.setDisplayName(ChatColor.DARK_PURPLE + "「" + ChatColor.AQUA + "YT" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.DARK_PURPLE + name);
                        player.setPlayerListName(ChatColor.DARK_GRAY + "「" + ChatColor.DARK_PURPLE + "YT" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.DARK_PURPLE + name);
                        yt.addPlayer(player);
                        break;
                    case VIP:
                        player.setDisplayName(ChatColor.DARK_GRAY + "「" + ChatColor.GOLD + "VIP" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.GOLD + name);
                        player.setPlayerListName(ChatColor.DARK_GRAY + "「" + ChatColor.GOLD + "VIP" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.GOLD + name);
                        vip.addPlayer(player);
                        break;
                    case Spieler:
                        player.setDisplayName(ChatColor.DARK_GRAY + "「" + ChatColor.GRAY + "Spieler" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.GRAY + name);
                        player.setPlayerListName(ChatColor.DARK_GRAY + "「" + ChatColor.GRAY + "Spieler" + ChatColor.DARK_GRAY + "」"
                                + ChatColor.GRAY + name);
                        spieler.addPlayer(player);
                        break;
    
                }
    //setting the scoreboard
                player.setScoreboard(scoreboard);
            }
        }

    So, i got a working player speficic scoreboard and the sorted tablist did working before i tryed to change it a little bit for making them both compatible.
    There is my problem. How can i change my code to make them compatible? For the playerspecific scoreboard i need for every player a own scoreboard but for a sorted tab list i need all players to be in the same scoreboard. So any ideas what to do?

    Entjic
     
  2. Offline

    Kars

    Isn't scoreboard displayed in the tablist? I might be wrong.
     
  3. Yeah, the tablist shows all players sorted by their scoreboard teams. But for this all players have to be in the same scoreboard (might also be wrong), but for a playerspecific scoreboard every player has to be in his own scoreboard :p

    Hope Im wrong .. otherwise I dont know how to do this
     
Thread Status:
Not open for further replies.

Share This Page