Scoreboard wird allen Spielern auf dem Server gestzt von dem, der als letztes gejoined ist

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

    Code
    1. for(Player all : Bukkit.getOnlinePlayers) {
    2. setscoreboard(all);
    3. setPrefix(all); // Für den Prefix ;)
    4. }


    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;)

  • Hier nochmal der ganze Code, damit es zu keinen Komplikationen/Missverständnisse kommt ;)


    Ich weiß es ist sehr unordentlich und sogar manches "unnötig" aber für mich ist es gut so :D


  • Hier nochmal der ganze Code, damit es zu keinen Komplikationen/Missverständnisse kommt ;)


    Ich weiß es ist sehr unordentlich und sogar manches "unnötig" aber für mich ist es gut so :D


    Wie Pierre schon gesagt hat, brauchst du für jeden Spieler ein eigenes Scoreboard, um für jeden Spieler andere Werte anzeigen zu können. Dazu solltest du aber ein NewScoreboard verwerden, bei einem MainScoreboard hast du das Problem wie schon jetzt.


    Die Eigenschaft vom MainScoreboard ist, dass es für alle Spieler gesetzt wird. Daher ist deine einzige Möglichkeit ein NewScoreboard.


    Wichtig dann dabei, nur dem neu hinzugekommenen Spieler das Scoreboard zu setzen, nicht allen.

  • Hier bitteschön ;)


  • Das Problem ist, warum alle Spieler das selbe Scoreboard erhalten, du setzt das neue Scoreboard jedem Spieler. Das ist nicht Sinn und Zweck der ganzen Geschichte.


    Du erstellst für jeden Spieler ein NewScoreboard, nicht am Anfang nur eins. Darin setzt du dann die ganzen Werte und setzt nur dem neu hinzugekommenen Spieler das neue Scoreboard.

  • Moin,


    sorry wenn ich das so direkt sage, aber dein Code ist eine absolute Katastrophe.

    Man könnte deine geposteten 800 Zeilen in weniger als 100 Zeilen hinschreiben (dynamisch mit Schleifen auslesen statt alles im Code festgeschrieben)

    und auch besser leserlich hinschreiben.


    Ich sehe, dass dir einige essenzielle Grundlagen in der Programmierung fehlen.
    Deshalb empfehle ich dir dein Bukkit-Projekt erstmal zu pausieren und dich mit den Java-Grundlagen zu befassen.
    Denn Bukkit ist nur eine API basierend auf Java, und damit guten Code zu schreiben geht eben nur mit einem fundierten Java-Basiswissen.


    Gute Tutorials/Bücher findest du im Internet, einfach darauf achten, dass es nur Java selbst ist, kein Bukkit-Bezug!


    Wenn du dich da ein bisschen detaillierter eingelesen hast kannst du dir mal die Bukkit Dokumentation anschauen und dann mit deinem Plugin weitermachen.
    Und ja, das braucht eine gewisse Zeit, aber die investierst du dann auch in sauberen und guten Code.


    Mfg