• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Spigot Brauche Hilfe bei einem Scoreboard und Tablist ohne Flackern!

Blura_

Kuhfänger
Registriert
25 Juli 2019
Beiträge
79
Diamanten
300
Minecraft
Blura_
Ich brauche Hilfe bei einem Scoreboard und Tablist die sich updaten ohne Flackers.
Ich habe es mit diesem Video versucht aber da kann man nur 1 Scoreboard Zeile Updaten. wenn man mehrere Updatet ersetzen sich die Scoreboard Zeilen gegenseitig.
Ich hoffe ihr könnt mir da helfen.

 

Xenoshi

Kuhfänger
Registriert
22 November 2015
Beiträge
77
Diamanten
300
Minecraft
godlessFloof
Servus. Hier ist ein Code von mir der in der 1.8 zu 100% funktioniert (benutze ihn selbst)


Scoreboard erstellen und updaten:
    public static void setScoreboard(Player p) {
        Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
        Objective obj = board.registerNewObjective("aaa", "bbb");
        
        Date today1 = Calendar.getInstance().getTime();
        DateFormat tm = new SimpleDateFormat("HH:mm:ss");
        String gettime = tm.format(today1);
        
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        obj.setDisplayName("Your Scoreboard");
    
        obj.getScore("§1").setScore(14);
        obj.getScore(updateTeam(board, "Time", "§7§lOnlinezeit: ", "§6" + gettime, ChatColor.YELLOW)).setScore(12);
        obj.getScore("§2").setScore(10);
        obj.getScore(updateTeam(board, "Kills", "§7§lKills: ", "§6" + StatsClass.getKills(p), ChatColor.BLUE)).setScore(6);
        obj.getScore(updateTeam(board, "Deaths", "§7§lDeaths: ", "§6" + StatsClass.getDeaths(p), ChatColor.RED)).setScore(4);
        obj.getScore(updateTeam(board, "Coins", "§7§lCoins: ", "§6" + StatsClass.getCoins(p), ChatColor.GREEN)).setScore(2);
        obj.getScore("§5").setScore(0);
        
        p.setScoreboard(board);
    }
    
    public static void updateScoreboard(Player p) {
        Scoreboard board = p.getScoreboard();
        Objective obj = board.getObjective("aaa");
        
        Date today1 = Calendar.getInstance().getTime();
        DateFormat tm = new SimpleDateFormat("HH:mm:ss");
        String gettime = tm.format(today1);
        
        obj.getScore(updateTeam(board, "Time", "§7§lOnlinezeit: ", "§6" + gettime, ChatColor.YELLOW)).setScore(12);
        obj.getScore(updateTeam(board, "Kills", "§7§lKills: ", "§6" + StatsClass.getKills(p), ChatColor.BLUE)).setScore(6);
        obj.getScore(updateTeam(board, "Deaths", "§7§lDeaths: ", "§6" + StatsClass.getDeaths(p), ChatColor.RED)).setScore(4);
        obj.getScore(updateTeam(board, "Coins", "§7§lCoins: ", "§6" + StatsClass.getCoins(p), ChatColor.GREEN)).setScore(2);
        
    }

Teams erstellen und updaten:
    public static Team getTeam(Scoreboard board, String Team, String prefix, String suffix) {
        Team team = board.getTeam(Team);
        if(team == null) {
            team = board.registerNewTeam(Team);
        }
        team.setPrefix(prefix);
        team.setSuffix(suffix);
        team.setAllowFriendlyFire(false);
        team.setCanSeeFriendlyInvisibles(true);
        
        return team;
    }
    
    public static String updateTeam(Scoreboard board, String Team, String prefix, String suffix, ChatColor entry) {
        Team team = board.getTeam(Team);
        if(team == null) {
            team = board.registerNewTeam(Team);
        }
        team.setPrefix(prefix);
        team.setSuffix(suffix);
        team.addEntry(entry.toString());
        
        return entry.toString();
    }

Scoreboard scheduler:
DIES MUSST DU DANN NOCH IN DEN onEnable() teil packen z.B. startScoreboard();     
Beim PlayerJoinEvent einfach Yourclass.setScoreboard einsetzen

    public void startScoreboard() {
        Bukkit.getScheduler().scheduleSyncRepeatingTask(instance, new Runnable() {

            @Override
            public void run() {
                for(Player all : Bukkit.getOnlinePlayers()) {
                    Yourclass.updateScoreboard(all);
                }

            }
        }, 0, 20);
    }

Hoffe du verstehst es. So flackert das Scoreboard kaum bis gar nicht.
LG Yasuo
 

Blura_

Kuhfänger
Registriert
25 Juli 2019
Beiträge
79
Diamanten
300
Minecraft
Blura_
Servus. Hier ist ein Code von mir der in der 1.8 zu 100% funktioniert (benutze ihn selbst)


Scoreboard erstellen und updaten:
    public static void setScoreboard(Player p) {
        Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
        Objective obj = board.registerNewObjective("aaa", "bbb");
       
        Date today1 = Calendar.getInstance().getTime();
        DateFormat tm = new SimpleDateFormat("HH:mm:ss");
        String gettime = tm.format(today1);
       
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        obj.setDisplayName("Your Scoreboard");
   
        obj.getScore("§1").setScore(14);
        obj.getScore(updateTeam(board, "Time", "§7§lOnlinezeit: ", "§6" + gettime, ChatColor.YELLOW)).setScore(12);
        obj.getScore("§2").setScore(10);
        obj.getScore(updateTeam(board, "Kills", "§7§lKills: ", "§6" + StatsClass.getKills(p), ChatColor.BLUE)).setScore(6);
        obj.getScore(updateTeam(board, "Deaths", "§7§lDeaths: ", "§6" + StatsClass.getDeaths(p), ChatColor.RED)).setScore(4);
        obj.getScore(updateTeam(board, "Coins", "§7§lCoins: ", "§6" + StatsClass.getCoins(p), ChatColor.GREEN)).setScore(2);
        obj.getScore("§5").setScore(0);
       
        p.setScoreboard(board);
    }
   
    public static void updateScoreboard(Player p) {
        Scoreboard board = p.getScoreboard();
        Objective obj = board.getObjective("aaa");
       
        Date today1 = Calendar.getInstance().getTime();
        DateFormat tm = new SimpleDateFormat("HH:mm:ss");
        String gettime = tm.format(today1);
       
        obj.getScore(updateTeam(board, "Time", "§7§lOnlinezeit: ", "§6" + gettime, ChatColor.YELLOW)).setScore(12);
        obj.getScore(updateTeam(board, "Kills", "§7§lKills: ", "§6" + StatsClass.getKills(p), ChatColor.BLUE)).setScore(6);
        obj.getScore(updateTeam(board, "Deaths", "§7§lDeaths: ", "§6" + StatsClass.getDeaths(p), ChatColor.RED)).setScore(4);
        obj.getScore(updateTeam(board, "Coins", "§7§lCoins: ", "§6" + StatsClass.getCoins(p), ChatColor.GREEN)).setScore(2);
       
    }

Teams erstellen und updaten:
    public static Team getTeam(Scoreboard board, String Team, String prefix, String suffix) {
        Team team = board.getTeam(Team);
        if(team == null) {
            team = board.registerNewTeam(Team);
        }
        team.setPrefix(prefix);
        team.setSuffix(suffix);
        team.setAllowFriendlyFire(false);
        team.setCanSeeFriendlyInvisibles(true);
       
        return team;
    }
   
    public static String updateTeam(Scoreboard board, String Team, String prefix, String suffix, ChatColor entry) {
        Team team = board.getTeam(Team);
        if(team == null) {
            team = board.registerNewTeam(Team);
        }
        team.setPrefix(prefix);
        team.setSuffix(suffix);
        team.addEntry(entry.toString());
       
        return entry.toString();
    }

Scoreboard scheduler:
DIES MUSST DU DANN NOCH IN DEN onEnable() teil packen z.B. startScoreboard();    
Beim PlayerJoinEvent einfach Yourclass.setScoreboard einsetzen

    public void startScoreboard() {
        Bukkit.getScheduler().scheduleSyncRepeatingTask(instance, new Runnable() {

            @Override
            public void run() {
                for(Player all : Bukkit.getOnlinePlayers()) {
                    Yourclass.updateScoreboard(all);
                }

            }
        }, 0, 20);
    }

Hoffe du verstehst es. So flackert das Scoreboard kaum bis gar nicht.
LG Yasuo
Vielen Dank!
 
Oben