Changed Fight Scoreboard to SWScoreboard #194
@ -28,31 +28,33 @@ import de.steamwar.fightsystem.winconditions.*;
|
|||||||
import de.steamwar.scoreboard.SWScoreboard;
|
import de.steamwar.scoreboard.SWScoreboard;
|
||||||
import de.steamwar.scoreboard.ScoreboardCallback;
|
import de.steamwar.scoreboard.ScoreboardCallback;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
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.Scoreboard;
|
import org.bukkit.scoreboard.Scoreboard;
|
||||||
|
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class FightScoreboard {
|
public class FightScoreboard implements Listener {
|
||||||
|
|
||||||
private FightScoreboard(){}
|
|
||||||
|
|
||||||
private static final Set<FightState> fullScoreboard = EnumSet.of(FightState.RUNNING, FightState.SPECTATE);
|
private static final Set<FightState> fullScoreboard = EnumSet.of(FightState.RUNNING, FightState.SPECTATE);
|
||||||
private static int index = 0;
|
private static int index = 0;
|
||||||
|
private static ScoreBoardObjective objective;
|
||||||
|
|
||||||
public static void init(){
|
public static void init(){
|
||||||
|
|||||||
Bukkit.getScheduler().scheduleSyncRepeatingTask(FightSystem.getPlugin(), () -> {
|
Bukkit.getScheduler().scheduleSyncRepeatingTask(FightSystem.getPlugin(), () -> nextIndexDisplay(), 0, 200);
|
||||||
Bukkit.getOnlinePlayers().forEach(player -> SWScoreboard.removeScoreboard(player));
|
}
|
||||||
|
|
||||||
Lixfel
hat
Listener sollen im Ordner Listener sein, in diesem Fall solltest du wsl. einfach im ConnectionListener im JonListener einen Aufruf hierher machen. Listener sollen im Ordner Listener sein, in diesem Fall solltest du wsl. einfach im ConnectionListener im JonListener einen Aufruf hierher machen.
|
|||||||
FightTeam fightTeam = getIndexDisplay();
|
public static Scoreboard getScoreboard() {
|
||||||
ScoreBoardObjective objective;
|
return Bukkit.getScoreboardManager().getMainScoreboard();
|
||||||
if(fightTeam != null)
|
}
|
||||||
objective = teamScoreboard(fightTeam);
|
|
||||||
else
|
|
||||||
objective = generalScoreboard();
|
|
||||||
|
|
||||||
Bukkit.getOnlinePlayers().forEach(player -> SWScoreboard.createScoreboard(player, new ScoreboardCallback() {
|
@EventHandler()
|
||||||
Lixfel
hat
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. 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.
Chaoscaot
hat
Die Nametags werden gehided und der Name hat auch die richtige Farbe in der Sidebar. Die Nametags werden gehided und der Name hat auch die richtige Farbe in der Sidebar.
|
|||||||
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
|
SWScoreboard.createScoreboard(event.getPlayer(), new ScoreboardCallback() {
|
||||||
@Override
|
@Override
|
||||||
public HashMap<String, Integer> getData() {
|
public HashMap<String, Integer> getData() {
|
||||||
return objective.getScores();
|
return objective.getScores();
|
||||||
@ -62,12 +64,12 @@ public class FightScoreboard {
|
|||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
return objective.getTitle();
|
return objective.getTitle();
|
||||||
}
|
}
|
||||||
}));
|
});
|
||||||
}, 0, 200);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Scoreboard getScoreboard() {
|
@EventHandler
|
||||||
return Bukkit.getScoreboardManager().getMainScoreboard();
|
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||||
|
SWScoreboard.removeScoreboard(event.getPlayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ScoreBoardObjective teamScoreboard(FightTeam fightTeam){
|
private static ScoreBoardObjective teamScoreboard(FightTeam fightTeam){
|
||||||
@ -123,6 +125,11 @@ public class FightScoreboard {
|
|||||||
if(index > 2)
|
if(index > 2)
|
||||||
return;
|
return;
|
||||||
index = 0;
|
index = 0;
|
||||||
|
FightTeam team = getIndexDisplay();
|
||||||
|
if(team != null)
|
||||||
|
objective = teamScoreboard(team);
|
||||||
|
else
|
||||||
|
objective = generalScoreboard();
|
||||||
}
|
}
|
||||||
|
|
||||||
Lixfel
hat
Die Funktion nextIndexDisplay sollte sich mit der Funktion getIndexDisplay zusammenführen lassen. Die Funktion nextIndexDisplay sollte sich mit der Funktion getIndexDisplay zusammenführen lassen.
|
|||||||
private static class ScoreBoardObjective {
|
private static class ScoreBoardObjective {
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren
Fände es besser, direkt titel und scores zu speichern (siehe unten)