From e575d7a493339e5664b0fb94cd021eacd286a786 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Sun, 11 Oct 2020 10:22:07 +0200 Subject: [PATCH] Scoreboard Improvement --- .../fightsystem/utils/FightScoreboard.java | 57 +++++++++++-------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/utils/FightScoreboard.java b/FightSystem_Main/src/de/steamwar/fightsystem/utils/FightScoreboard.java index acb8b6a..d7e582a 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/utils/FightScoreboard.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/utils/FightScoreboard.java @@ -28,48 +28,50 @@ import de.steamwar.fightsystem.winconditions.*; import de.steamwar.scoreboard.SWScoreboard; import de.steamwar.scoreboard.ScoreboardCallback; 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 java.util.EnumSet; import java.util.HashMap; import java.util.Set; -public class FightScoreboard { - - private FightScoreboard(){} +public class FightScoreboard implements Listener { private static final Set fullScoreboard = EnumSet.of(FightState.RUNNING, FightState.SPECTATE); private static int index = 0; + private static ScoreBoardObjective objective; public static void init(){ - Bukkit.getScheduler().scheduleSyncRepeatingTask(FightSystem.getPlugin(), () -> { - Bukkit.getOnlinePlayers().forEach(player -> SWScoreboard.removeScoreboard(player)); - - FightTeam fightTeam = getIndexDisplay(); - ScoreBoardObjective objective; - if(fightTeam != null) - objective = teamScoreboard(fightTeam); - else - objective = generalScoreboard(); - - Bukkit.getOnlinePlayers().forEach(player -> SWScoreboard.createScoreboard(player, new ScoreboardCallback() { - @Override - public HashMap getData() { - return objective.getScores(); - } - - @Override - public String getTitle() { - return objective.getTitle(); - } - })); - }, 0, 200); + Bukkit.getScheduler().scheduleSyncRepeatingTask(FightSystem.getPlugin(), () -> nextIndexDisplay(), 0, 200); } public static Scoreboard getScoreboard() { return Bukkit.getScoreboardManager().getMainScoreboard(); } + @EventHandler() + public void onPlayerJoin(PlayerJoinEvent event) { + SWScoreboard.createScoreboard(event.getPlayer(), new ScoreboardCallback() { + @Override + public HashMap getData() { + return objective.getScores(); + } + + @Override + public String getTitle() { + return objective.getTitle(); + } + }); + } + + @EventHandler + public void onPlayerQuit(PlayerQuitEvent event) { + SWScoreboard.removeScoreboard(event.getPlayer()); + } + private static ScoreBoardObjective teamScoreboard(FightTeam fightTeam){ ScoreBoardObjective objective = new ScoreBoardObjective(fightTeam.getColoredName()); fightTeam.getPlayers().forEach(fp -> { @@ -123,6 +125,11 @@ public class FightScoreboard { if(index > 2) return; index = 0; + FightTeam team = getIndexDisplay(); + if(team != null) + objective = teamScoreboard(team); + else + objective = generalScoreboard(); } private static class ScoreBoardObjective {