Changed Fight Scoreboard to SWScoreboard #194
Keine Reviewer
Label
Kein Label
Bug
Codeverbesserung
Einsteiger Freundlich
Idee
In Arbeit
Neues Feature
Prio A
Security Breach
Überprüfung notwendig
Verbesserung
Zu Beobachten
Kein Meilenstein
Niemand zuständig
3 Beteiligte
Fällig am
Kein Fälligkeitsdatum gesetzt.
Abhängigkeiten
Keine Abhängigkeiten gesetzt.
Referenz: SteamWar/FightSystem#194
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren
Keine Beschreibung angegeben.
Branch "scoreboard-reimplement" löschen
Das Löschen eines Branches ist permanent. Obwohl der Branch für eine kurze Zeit weiter existieren könnte, kann diese Aktion in den meisten Fällen NICHT rückgängig gemacht werden. Fortfahren?
Closes: #189
@ -57,3 +46,1 @@
//noinspection deprecation
scoreboard.registerNewObjective("AAA", "BBB");
objective.setDisplaySlot(DisplaySlot.SIDEBAR);
Bukkit.getOnlinePlayers().forEach(player -> SWScoreboard.removeScoreboard(player));
Man sollte das Scoreboard nicht regelmäßig bei jedem Spieler neu setzen, das macht das SWScoreboard schon von selbst.
@ -123,0 +125,4 @@
if(index > 2)
return;
index = 0;
FightTeam team = getIndexDisplay();
Das schaut mir katastrophal verbuggt aus, da dürfte nie das korrekte Scoreboard angezeigt werden!
Es wird wohl immer einmal kein Scoreboard angezeigt werden weil
Index = 0
bedeutet diegetIndexDisplay()
Methode gibtnull
zurück. Dies sollte behoben werden.Der Fehler ist nun behoben, bzw um 13:00 am gleichen Tag wurde dieser Fehler noch behoben, deswegen habe ich den Pull-Request jetzt nach einer guten Zeit drauf gucken genehmigt
Wurde dieser Branch (erfolgreich) getestet?
@Chaoscaot Bitte Merge-Konflikt beheben und einmal in einer Arena testen!
Tested!
@ -44,3 +46,2 @@
private static final Scoreboard scoreboard = Objects.requireNonNull(Bukkit.getScoreboardManager()).getMainScoreboard();
private static final Objective objective;
private static int index = 0;
private static ScoreBoardObjective objective;
Fände es besser, direkt titel und scores zu speichern (siehe unten)
@ -52,2 +49,2 @@
else
objective = scoreboard.getObjective("AAA");
public static void init(){
Bukkit.getPluginManager().registerEvents(new FightScoreboard(), FightSystem.getPlugin());
Listener sollen im Ordner Listener sein, in diesem Fall solltest du wsl. einfach im ConnectionListener im JonListener einen Aufruf hierher machen.
@ -66,2 +54,2 @@
else
generalScoreboard();
public static Scoreboard getScoreboard() {
return Bukkit.getScoreboardManager().getMainScoreboard();
Hast du darauf geachtet, dass die Teammitglieder immer noch keinen Nametag über sich haben & in der passenden Farbe rechts angezeigt werden? Aufgrund der derzeitigen SWScoreboard-Implementierung (welche ich überarbeiten möchte) habe ich da nämlich so meine Befürchtungen.
Die Nametags werden gehided und der Name hat auch die richtige Farbe in der Sidebar.
@ -122,3 +121,2 @@
objective.getScore(key).setScore(value);
if(Config.recording())
RecordSystem.scoreboardData(key, value);
objective.scores.forEach(RecordSystem::scoreboardData);
Du sendest jeden Score doppelt raus.
@ -134,3 +131,4 @@
return null;
}
private static void nextIndexDisplay() {
Die Funktion nextIndexDisplay sollte sich mit der Funktion getIndexDisplay zusammenführen lassen.
@ -137,0 +142,4 @@
objective = generalScoreboard();
}
private static class ScoreBoardObjective {
Die Extraklasse als Container für Titel und Scores finde ich nicht wirklich nötig & fügt nur unnötig Komplexität hinzu
@ -137,0 +159,4 @@
public void addScore(String string, int i) {
if(Config.recording())
RecordSystem.scoreboardData(string, i);
Hier zweite Scoresendung.
Da war noch eine NPE drin...
Dann fix sie jetzt!
Ist schon im Branch