Discord

  • 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 wird allen Spielern auf dem Server gestzt von dem, der als letztes gejoined ist

FoxyGaming_732

Minecrafter
Mitglied seit
28 Juni 2019
Beiträge
4
Hey, ich habe eine Frage zu meinem Scoreboard Plugin, welches ein Prefix und eine Sidebar enthält. Ich habe alles soweit fertig und wollte mal fragen, ob ihr von dem Problem schon einmal gehört habt oder dazu eine Lösung habt. Undzwar wie schon im Titel geschrieben, wird allen Spielern auf den Server das Scoreboard von dem Spielern angezeigt, welcher zuletzt gejoined ist. Ich habe in einer Update-Methode ganz normal geschrieben:
Java:
for(Player all : Bukkit.getOnlinePlayers) {
    setscoreboard(all);
    setPrefix(all); // Für den Prefix ;)
}
Ich weiß nicht wiklich woran es liegt, denn in der Join-Methode habe ich schon setScoreboard(p) auch schon rausgenommen und hat auch nicht funkioniert.... Ich arbeite mit Teams und mit einer Hashmap worin das Scoreboard und der Spielername gespeichert wird und wenn der Spieler dort drinne ist, dann gettet er die Teams und "updatet" sie...
Ich hoffe, mein Problem zu schildern war verständlich, wenn nicht könnt ihr mir ja schreiben :)
Mit freundlichen Grüßen
Foxy
 

BrutalVerzockt

Minecrafter
Mitglied seit
15 Juli 2019
Beiträge
8
1. Wir können nichts mit nur einer For-Schleife anfangen.. Wir bräuchten schon den Code-Block, das könnte sein die ganze "onJoin - Methode" oder doch sogar die ganze Klasse, damit wir, dass was du getan hast nachvollziehen können.
 

FoxyGaming_732

Minecrafter
Mitglied seit
28 Juni 2019
Beiträge
4
1. Wir können nichts mit nur einer For-Schleife anfangen.. Wir bräuchten schon den Code-Block, das könnte sein die ganze "onJoin - Methode" oder doch sogar die ganze Klasse, damit wir, dass was du getan hast nachvollziehen können.
Hey, danke, dass du dich gemeldet hast, aber es hat sich schon alles geklärt :)
Danke für deine Hilfe
LG
Foxy
 

Yasuo Krieger

Kuhfänger
Mitglied seit
22 November 2015
Beiträge
60
Minecraft
NonPrimeYasuo
Für das Verständnis schreibe ich trotzdem diesen Betrag, fals andere User dieses Problem haben sollten.

Also erstmal musst du das Scoreboard erstellen:
CreateScoreBoard:
public static void setScoreboard(Player p) {

    ///Hier wird ein neues Scoreboard erstellt
    Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
    Objective obj = board.registerNewObjective("aaa", "bbb");
    
    ///Hier legst du Standort und Anzeigenamen an, dabei gibt es verschiedene Anortnungen
        ///SIDEBAR, an der Seite des Bildschirmes
        ///PLAYER_LIST, hinter dem Namen in der Tablist
        ///BELOW_NAME, unter dem Spielernamen
    obj.setDisplaySlot(DisplaySlot.SIDEBAR);
    obj.setDisplayName("yourname");
    
    ///Jetzt werden die Teams festgelegt
       ///Hinten im String werden die Prioritäten fest gelegt
        ///Das geschied einfach, die kleinste Zahl oder der erste Buchstabe wird weiter oben angezeigt
    Team t1 = board.registerNewTeam("")
    ///Für einen Prefix und Suffix kannst du dies hinzufügen
        ///Achte darauf das der Prefix und Suffix nicht über 16 Zeilen sind
    t1.setPrefix("§1Test §8| §e");
    t1.setSuffix(" §7Online");
    
    ///Wir erstellen hier jetzt das Scoreboard optisch
        ///Bei getScore kannst du reinschreiben was du willst
        ///Hier ist es so das die höhere Zahl weiter oben ist
    obj.getScore("§6Mein Rang").setScore(1);
    ///Hier kannst du jedem den Rang in Textform anzeigen
        ///ich sage hier mal, "dass kann man bestimmt besser lösen"
        ///Abfragen kannst du zum Beispiel die Permissions oder Etwas in MySQL oder einer Config
    if(p.hasPermissions("sb.test") || MySQLStats.getKills(p.getUniqueId().tostring() > 50 || cfg.getString("Player.Name"))){
        obj.getScore("§1Test").setScore(0);
    }
    
    ///Jetzt wird allen die eine Bestimmte Permission haben der Rang gesetzt
    for(Player all : Bukkit.getOnlinePlayers()) {
        if(all.hasPermission("sb.test")) {
            t1.addEntry(all.getName());
        }
    }
    
    ///zum Schluss wird das Scoreboard dem Spieler gegeben
    p.setScoreboard(board);
}
Wenn ihr wissen wollt wie ihr recht Flackerfrei und Laggfrei Scoreboards updatet und erstellt, einfach fragen
Zum schluss muss die Methode in dem PlayerJoinEvent eingefügt werden und dann in die onEnable() Methode in der Mainclasse
JoinEvent:
@EventHandler
public void onJoin(PlayerJoinEvent e) {
    ///Übergimmt bzw nimmt den Spieler aus der Eventclasse
    Player p = e.getPlayer();
    
    ///Setzt das eben angelegte Scoreboard beim Joinen dem Spieler
    CreateScoreboard.setScoreboard(p);
}
Ich hoffe ich konnte euch ein kleines Tutorial geben wie ihr recht Simple ein Scoreboard erstellt
Ich sage nicht das es die besten Methoden sind aber auf jeden fall welche die Funktionieren.
Wenn ihr hilfe braucht steht euch das Forum und auch ich immer zur Verfügung
 
Oben