Scoreboard Flackern verhindern?

Wenn ihr bei eurem Plugin nicht weiter kommt, könnt ihr hier euer Problem beschreiben und um Hilfe bitten.

Scoreboard Flackern verhindern?

Beitragvon CoooopaTV » Mi 23. Nov 2016, 23:22

Hallo zusammen!

Ich habe folgendes programmiert:
Code: Alles auswählen
  1. package Stuff;
  2. import java.util.ArrayList;
  3. import java.util.UUID;
  4. import org.bukkit.Bukkit;
  5. import org.bukkit.OfflinePlayer;
  6. import org.bukkit.scoreboard.DisplaySlot;
  7. import org.bukkit.scoreboard.Objective;
  8. import org.bukkit.scoreboard.Scoreboard;
  9. import org.bukkit.scoreboard.ScoreboardManager;
  10. import Main.Clazz;
  11. public class PlayerBoard {
  12.    UUID uniqueId;
  13.    
  14.    ScoreboardManager board;
  15.    ArrayList<Scoreboard> scb = new ArrayList<Scoreboard>();
  16.    Scoreboard current;
  17.    
  18.    Integer obj_integer = 0;
  19.    
  20.    Objective current_objective;
  21.    
  22.    public PlayerBoard(UUID uniqueId) {
  23.       this.uniqueId = uniqueId;
  24.       
  25.       board = Bukkit.getScoreboardManager();
  26.       scb.add(board.getNewScoreboard());
  27.       scb.add(board.getNewScoreboard());
  28.       
  29.       registerScoreboard();
  30.    }
  31.    
  32.    public void registerScoreboard() {
  33.       Scoreboard scoreboard = null;
  34.       
  35.       for(Scoreboard scoreb : scb) {
  36.          if(!scoreb.equals(current)) scoreboard = scoreb;
  37.       }
  38.       
  39.       obj_integer = obj_integer + 1;
  40.       String string = "sb_" + obj_integer;
  41.       
  42.       String[] lines = scoreboard_content;
  43.       
  44.       Arena arena = getArenaByPlayer(uniqueId);
  45.       
  46.       ArrayList<String> ct = new ArrayList<String>();
  47.       
  48.       for(String line : lines) {
  49.          if(line.contains("kit:")) {
  50.             if(arena != null && arena.kit_change_time_formatted != null) {
  51.                String[] content = line.split(":");
  52.                
  53.                for(String cont : content) {
  54.                   if(cont.contains("mm")) line = line.replace("mm", arena.kit_change_time_formatted[0]);
  55.                   if(cont.contains("ss")) line = line.replace("ss", arena.kit_change_time_formatted[1]);
  56.                }
  57.                line = line.replace("kit:", "");
  58.             } else {
  59.                line = line.replace("kit", "-").replace("mm", "").replace("ss", "").replace(":", "");
  60.             }
  61.          }
  62.          if(line.contains("%KIT%")) {
  63.             String map = "-";
  64.             if(arena != null && arena.current_kit != null) {
  65.                map = arena.current_kit.getDisplayName();
  66.             }
  67.             line = line.replace("%KIT%", map);
  68.          }
  69.          if(line.contains("map:")) {
  70.             if(arena != null && arena.map_change_time_formatted != null) {
  71.                String[] content = line.split(":");
  72.                
  73.                for(String cont : content) {
  74.                   if(cont.contains("mm")) line = line.replace("mm", arena.map_change_time_formatted[0]);
  75.                   if(cont.contains("ss")) line = line.replace("ss", arena.map_change_time_formatted[1]);
  76.                }
  77.                line = line.replace("map:", "");
  78.             } else {
  79.                line = line.replace("map:", "-").replace("mm", "").replace("ss", "").replace(":", "");
  80.             }
  81.          }
  82.          if(line.contains("%MAP%")) {
  83.             String map = "-";
  84.             if(arena != null && arena.current_map != null) {
  85.                map = arena.current_map.getDisplayName();
  86.             }
  87.             line = line.replace("%MAP%", map);
  88.          }
  89.          ct.add(line);
  90.       }
  91.       
  92.       Objective objective = scoreboard.registerNewObjective(string, "dummy");
  93.       
  94.       Integer score = 21;
  95.       for(String line : ct) {
  96.          score--;
  97.          objective.getScore(line.replace("&", "§")).setScore(score);
  98.       }
  99.       
  100.       objective.setDisplaySlot(DisplaySlot.SIDEBAR);
  101.       objective.setDisplayName(scoreboard_title.replace("&", "§"));
  102.       
  103.       current_objective = objective;
  104.       current = scoreboard;
  105.       
  106.       updateScoreboard();
  107.    }
  108.    
  109.    
  110.    
  111.    public void updateScoreboard() {
  112.       OfflinePlayer player = Bukkit.getOfflinePlayer(uniqueId);
  113.       if(player != null && player.isOnline()) player.getPlayer().setScoreboard(current);
  114.    }
  115. }


speicher diese Boards wie folgt:
Code: Alles auswählen
  1. public HashMap<Player, PlayerBoard> player_boards = new HashMap<>();


Wichtig: Das mit den zwei Scoreboards war auch nur ein Versuch!

Nun stellt sich mir die Frage, wie kann ich das Scoreboard updaten ohne es flackern zu sehen?

Freue mich über jeden einzigen konstruktiven Tipp!

Danke :)!
Benutzeravatar
CoooopaTV
 
Beiträge: 10
Registriert: Di 19. Jul 2016, 23:05

Re: Scoreboard Flackern verhindern?

Beitragvon CoooopaTV » Fr 25. Nov 2016, 12:35

#Niemand?
Benutzeravatar
CoooopaTV
 
Beiträge: 10
Registriert: Di 19. Jul 2016, 23:05

Re: Scoreboard Flackern verhindern?

Beitragvon ilouHD » Fr 25. Nov 2016, 19:43

Zur Lösung deines Problems kannst du ja mal hier nachschauen:
https://dev-tek.de/Thread/2268-Scoreboard-flackern/

Ich hoffe es hilft dir.

Mit freundlichen Grüßen
ilou
Bild
Benutzeravatar
ilouHD
 
Beiträge: 1733
Registriert: Do 9. Jan 2014, 14:49


Zurück zu Hilfe und Support

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 21 Gäste

cron