1. 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!

Scoreboard richtig updaten?

Dieses Thema im Forum "Programmierung" wurde erstellt von Blindhero, 20. März 2014.

  1. Blindhero
    Online

    Blindhero

    Hallo Liebe Minecraft Community. Ich habe bisher wenige Scoreboard tutorials gefunden also wollte ich mal fragen wie ich das mache, dass ich ein Scoreboard gut update ohne dass es Flackert? Jeden ServerTick wird einer Hashmap das aktuelle Leben des Spielers zugewiesen und das Scoreboard geupdated:

    Code (Text):
    1.  
    2. this.getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
    3.     public void run() {
    4.                      for(Player p : getServer().getOnlinePlayers()) {      
    5.             oldHealth.put(p, (int) (((Damageable) p).getHealth()));
    6.             }
    7.                     for(Clan c : clans) {
    8.             if(c.getOnlineMember().size() > 0) {
    9.                 showClanboard(c);
    10.             }
    11.         }
    12.     }
    13. }, 20L, 0L);
    14.  
    So und hier die Scoreboard Methode:

    Code (Text):
    1.  
    2. public void showClanboard(Clan c) {
    3.     if(c != null) {
    4.         ScoreboardManager manager = Bukkit.getScoreboardManager();
    5.         Scoreboard board = manager.getNewScoreboard();
    6.         Objective clanboard = board.getObjective("clanboard");
    7.             if(clanboard == null) {
    8.                 clanboard = board.registerNewObjective("clanboard", "health");
    9.                 clanboard.setDisplaySlot(DisplaySlot.SIDEBAR);
    10.                 clanboard.setDisplayName(ChatColor.YELLOW + c.getName() + ChatColor.GREEN +" Health in %");
    11.             }
    12.             Team team = board.getTeam(c.getName());
    13.                 if(team == null) {
    14.                     team = board.registerNewTeam(c.getName());
    15.                 }
    16.             for(OfflinePlayer m : team.getPlayers()) {
    17.                 if(!m.isOnline()) {
    18.                     team.removePlayer(m);
    19.                 }
    20.             }              
    21.             boolean update = false;
    22.             for(Player m : c.getOnlineMember()) {      
    23.                 Score score = clanboard.getScore(m);       
    24.                 int s = (int) ((oldHealth.get(m) / ((Damageable) m).getMaxHealth()) * 100);
    25.                     if(s != score.getScore() || !team.hasPlayer(m)) {
    26.                         update = true;
    27.                     }      
    28.                 }
    29.             if(update) {
    30.                 for(Player m : c.getOnlineMember()) {
    31.                     if(!team.hasPlayer(m)) {
    32.                         team.addPlayer(m);     
    33.                     }      
    34.                 m.setScoreboard(board);
    35.                 Score score = clanboard.getScore(m);   
    36.                 score.setScore((int) (((Damageable) m).getHealth() / ((Damageable) m).getMaxHealth() * 100));  
    37.                 }
    38.             }
    39.         }
    40.     }
    41.  
    Leider flackert das immer wenn mehrere Clans online sind. Jemand ne Idee wie man das richtig bzw besser machen könnte? :D
     
    #1
  2. Werbung
    Online

    Werbung

  3. Pappi
    Offline

    Pappi Gesperrt

    Registriert seit:
    28. Oktober 2012
    Beiträge:
    141
    Ort:
    H.a.S/NRW/Germany
    Minecraft:
    Pappi / PapaHarni
    Update ist Farblich Makiert.

    Schau wo du die Player class hier bekommst bei dem Update.
     
    #2
  4. Blindhero
    Online

    Blindhero

    Ah also frage ich ab ob dieser spieler ein offenes scoreboard hat? Zählen aber nich auch 2. Name tags bzw. Das tab board dazu?
     
    #3
  5. Pappi
    Offline

    Pappi Gesperrt

    Registriert seit:
    28. Oktober 2012
    Beiträge:
    141
    Ort:
    H.a.S/NRW/Germany
    Minecraft:
    Pappi / PapaHarni
    Dafür hast du ja dieses :

    Und kannst Ja auch noch abfragen ob es dem DisplaySlot hat.

     
    #4