• 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 Problem

xGamerTim

Minecrafter
Registriert
22 Januar 2016
Beiträge
8
Diamanten
0
Sehr geehrte Community,

Ich habe ein Problem mit meinem Plugin.
Erklärung des Plugins:

Ich setze beim PlayerJoinEvent das Scoreboard erstmals.
Dann setzte ich Teams welche durch einen Scheduler jede Sekunde geupdatet werden.
Soweit so gut, nur funktioniert das Scoreboard solange bis ein zweiter Spieler
Joint. Danach wechselt das Scoreboard die Infos zwischen mir und dem zweiten Spieler und flackert herum.

Darum die Frage an die Community ob ihr mir weiterhelfen könntet.

Hier mein Code:

https://pastebin.com/bb1r2Acr

Code:
package de.xGamerTim.Sidebar;
import java.lang.reflect.Field;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import org.bukkit.Bukkit;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.Team;
import net.md_5.bungee.api.ChatColor;
import net.minecraft.server.v1_8_R3.IChatBaseComponent;
import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerListHeaderFooter;
import net.minecraft.server.v1_8_R3.IChatBaseComponent.ChatSerializer;
import ru.tehkode.permissions.bukkit.Permission***;
public class setBoard implements Listener
{
    public static HashMap<Scoreboard, Player> boards = new HashMap<>();
  
    @SuppressWarnings("deprecation")
    public static void setScoreboard (Player p)
    { 
        Date today1 = Calendar.getInstance().getTime();
        DateFormat tm = new SimpleDateFormat("HH:mm");
        String time = tm.format(today1);
      
        Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
        Objective obj = board.registerNewObjective("aaa","bbb");
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        obj.setDisplayName("§a§lScoreboard");
        Team team1 = board.registerNewTeam("Team1");
        Team team2 = board.registerNewTeam("Team2");
        Team team3 = board.registerNewTeam("Team3");
        Team team4 = board.registerNewTeam("Team4");
        Team team5 = board.registerNewTeam("Team5");
        Team team6 = board.registerNewTeam("Team6");
        Team team7 = board.registerNewTeam("Team7");
        Team team8 = board.registerNewTeam("Team8");
        Team team9 = board.registerNewTeam("Team9");
        Team team10 = board.registerNewTeam("Team10");
        Team team11 = board.registerNewTeam("Team11");
        Team team12 = board.registerNewTeam("Team12");
        Team team13 = board.registerNewTeam("Team13");
        Team team14 = board.registerNewTeam("Team14");
        Team team15 = board.registerNewTeam("Team15");
        Team team16 = board.registerNewTeam("Team16");
        team1.setPrefix("§r§1");
        team2.setPrefix("§a§lDein Name:");
        team3.setPrefix("§7" + Permission***.getUser(p).getGroups()[0].getPrefix() +  p.getName());
        team4.setPrefix("§r§2");
        team5.setPrefix("§a§lDein Rang:");
        team6.setPrefix("§7" + Permission***.getUser(p).getGroups()[0].getPrefix() + Permission***.getUser(p).getGroups()[0].getName());
        team7.setPrefix("§r§3");
        team8.setPrefix("§a§lGuthaben:");
        team9.setPrefix("§a" + de.xGamerTim.Shop.Economy.EconomySystem.getStringMoney(p.getName()) + " §7€");
        team10.setPrefix("§r§4");
        team11.setPrefix("§a§lUhrzeit:");
        team12.setPrefix("§7" + time);
        team13.setPrefix("§r§5");
        team14.setPrefix("§a§lOnline:");
        team15.setPrefix("§a" + Bukkit.getOnlinePlayers().size() + "§7/§c" + Bukkit.getMaxPlayers());
        team16.setPrefix("§r§6");
                      
        team1.addEntry("§a".toString());
        team2.addEntry("§b".toString());
        team3.addEntry("§c".toString());
        team4.addEntry("§d".toString());
        team5.addEntry("§e".toString());
        team6.addEntry("§f".toString());
        team7.addEntry("§1".toString());
        team8.addEntry("§2".toString());
        team9.addEntry("§3".toString());
        team10.addEntry("§4".toString());
        team11.addEntry("§5".toString());
        team12.addEntry("§6".toString());
        team13.addEntry("§7".toString());
        team14.addEntry("§8".toString());
        team15.addEntry("§9".toString());
        team16.addEntry("§0".toString());
      
        obj.getScore("§a".toString()).setScore(16);
        obj.getScore("§b".toString()).setScore(15);
        obj.getScore("§c".toString()).setScore(14);
        obj.getScore("§d".toString()).setScore(13);
        obj.getScore("§e".toString()).setScore(12);
        obj.getScore("§f".toString()).setScore(11);
        obj.getScore("§1".toString()).setScore(10);
        obj.getScore("§2".toString()).setScore(9);
        obj.getScore("§3".toString()).setScore(8);
        obj.getScore("§4".toString()).setScore(7);
        obj.getScore("§5".toString()).setScore(6);
        obj.getScore("§6".toString()).setScore(5);
        obj.getScore("§7".toString()).setScore(4);
        obj.getScore("§8".toString()).setScore(3);
        obj.getScore("§9".toString()).setScore(2);
        obj.getScore("§0".toString()).setScore(1);
      
        boards.put(board,p);
        p.setScoreboard(board);
        Bukkit.getScheduler().scheduleAsyncRepeatingTask(Main.getInstance(), new Runnable()
        {
            @Override
            public void run()
            {
              
                Player player = boards.get(board);
                for (Scoreboard board : boards.keySet())
                {
                    Date today1 = Calendar.getInstance().getTime();
                    DateFormat tm = new SimpleDateFormat("HH:mm");
                    String time2 = tm.format(today1);
                  
                    board.getTeam("Team3").setPrefix("§7" + Permission***.getUser(p).getGroups()[0].getPrefix() +  p.getDisplayName());
                    board.getTeam("Team6").setPrefix("§7" + Permission***.getUser(p).getGroups()[0].getPrefix() + Permission***.getUser(p).getGroups()[0].getName());
                    board.getTeam("Team9").setPrefix("§a" + de.xGamerTim.Shop.Economy.EconomySystem.getStringMoney(p.getName()) + " §7€");
                    board.getTeam("Team15").setPrefix("§a" + Bukkit.getOnlinePlayers().size() + "§7/§c" + Bukkit.getMaxPlayers());
                    board.getTeam("Team12").setPrefix("§7" + time2);
                  
                    p.setScoreboard(board);
                }
            }
          
        }, 0, 20);
    } 
  
    public static void setTablist(Player p, String header, String footer)
    {
        if(header == null) header = "";
        if(footer == null) footer = "";
      
        IChatBaseComponent tabHeater = ChatSerializer.a("{\"text\":\"" + header + "\"}");
        IChatBaseComponent tabFooter = ChatSerializer.a("{\"text\":\"" + footer + "\"}");
      
        PacketPlayOutPlayerListHeaderFooter headerPacket = new PacketPlayOutPlayerListHeaderFooter(tabHeater);
      
        try
        {
            Field field = headerPacket.getClass().getDeclaredField("b");
          
            field.setAccessible(true);
            field.set(headerPacket, tabFooter);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            ((CraftPlayer)p).getHandle().playerConnection.sendPacket(headerPacket);
        }
    }
    @EventHandler
    public void onJoin(PlayerJoinEvent e)
    { 
      
        Player p = e.getPlayer();
      
        setTablist(e.getPlayer(), "§8» §aHerzlich Willkommen auf dem Server §8« \n §8» §bOpen Beta §8«", "§8» §7Dies ist ein Plugintestserver §8«");
        setScoreboard(p);
    }
}
 
F

Figz

Guest
Dein Fehler liegt in dem RepeatingTask.
In deiner for-Schleife setzt du dem gleichen Spieler jedes mal ein anderes Scoreboard.

Am sinnvollsten wäre es einen Schedular zu erstellen und dann einmal dein Set durchzuiterieren.

Code:
for(Map.Entry<Scoreboard, Player> entry : boards.entrySet()
{
  Scoreboard sb = entry.getKey();
  Player p = entry.getValue();
  // Scoreboard aktualisieren
 p.setScoreboard(sb);
}

Bei dem obigen Code wird es trd noch das Flackern geben.
 
Oben