package cx.sfy.TheBridge.managers; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.scoreboard.DisplaySlot; import cx.sfy.TheBridge.Main; import cx.sfy.TheBridge.game.Game; import cx.sfy.TheBridge.game.GameFour; import cx.sfy.TheBridge.game.Game.State; import cx.sfy.TheBridge.game.GameFour.FState; import cx.sfy.TheBridge.utils.ScoreboardUtil; import me.clip.placeholderapi.PlaceholderAPI; public class ScoreboardManager { private HashMap sb = new HashMap(); private HashMap score = new HashMap(); Main plugin; public ScoreboardManager(Main plugin) { this.plugin = plugin; } public HashMap getSB(){ return sb; } public void createLobbyBoard(Player p) { sb.put(p, "lobby"); p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); ScoreboardUtil scoreboardUtil = new ScoreboardUtil("all", "starting", false); scoreboardUtil.setName(plugin.getLang().get("scoreboards.main-title")); String titulo = plugin.getLang().get(p, "scoreboards.main"); String [] title = titulo.split("\\n"); for (Integer n = 1, n2 = title.length - 1; n < title.length + 1; ++n, --n2) { scoreboardUtil.lines(n, lobby(p, title[n2])); } scoreboardUtil.build(p); score.put(p, scoreboardUtil); } public void createWaitingBoard(Player p) { sb.put(p, "waiting"); Game game = plugin.getGM().getGameByPlayer(p); p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); ScoreboardUtil scoreboardUtil = new ScoreboardUtil("lobby", "starting", false); scoreboardUtil.setName(plugin.getLang().get("scoreboards.lobby-title")); String titulo = plugin.getLang().get(p, "scoreboards.lobby"); String [] title = titulo.split("\\n"); for (Integer n = 1, n2 = title.length - 1; n < title.length + 1; ++n, --n2) { scoreboardUtil.lines(n, game(p, title[n2], game)); } scoreboardUtil.build(p); score.put(p, scoreboardUtil); } public void createStartingBoard(Player p) { sb.put(p, "starting"); Game game = plugin.getGM().getGameByPlayer(p); p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); ScoreboardUtil scoreboardUtil = new ScoreboardUtil("starting", "starting", false); scoreboardUtil.setName(plugin.getLang().get("scoreboards.starting-title")); String titulo = plugin.getLang().get(p, "scoreboards.starting"); String [] title = titulo.split("\\n"); for (Integer n = 1, n2 = title.length - 1; n < title.length + 1; ++n, --n2) { scoreboardUtil.lines(n, game(p, title[n2], game)); } scoreboardUtil.build(p); score.put(p, scoreboardUtil); } public void createGameBoard(Player p) { sb.put(p, "game"); Game game = plugin.getGM().getGameByPlayer(p); p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); ScoreboardUtil scoreboardUtil = new ScoreboardUtil("game-normal", "starting", false); scoreboardUtil.setName(plugin.getLang().get("scoreboards.game-normal-title")); String titulo = plugin.getLang().get(p, "scoreboards.game-normal"); String [] title = titulo.split("\\n"); for (Integer n = 1, n2 = title.length - 1; n < title.length + 1; ++n, --n2) { scoreboardUtil.lines(n, game(p, title[n2], game)); } scoreboardUtil.build(p); score.put(p, scoreboardUtil); } public void createWaitingFourBoard(Player p) { sb.put(p, "waiting"); GameFour game = plugin.getGM().getGameFourByPlayer(p); p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); ScoreboardUtil scoreboardUtil = new ScoreboardUtil("lobby", "starting", false); scoreboardUtil.setName(plugin.getLang().get("scoreboards.lobby-title")); String titulo = plugin.getLang().get(p, "scoreboards.lobby"); String [] title = titulo.split("\\n"); for (Integer n = 1, n2 = title.length - 1; n < title.length + 1; ++n, --n2) { scoreboardUtil.lines(n, gameFour(p, title[n2], game)); } scoreboardUtil.build(p); score.put(p, scoreboardUtil); } public void createStartingFourBoard(Player p) { sb.put(p, "starting"); GameFour game = plugin.getGM().getGameFourByPlayer(p); p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); ScoreboardUtil scoreboardUtil = new ScoreboardUtil("starting", "starting", false); scoreboardUtil.setName(plugin.getLang().get("scoreboards.starting-title")); String titulo = plugin.getLang().get(p, "scoreboards.starting"); String [] title = titulo.split("\\n"); for (Integer n = 1, n2 = title.length - 1; n < title.length + 1; ++n, --n2) { scoreboardUtil.lines(n, gameFour(p, title[n2], game)); } scoreboardUtil.build(p); score.put(p, scoreboardUtil); } public void createGameFourBoard(Player p) { sb.put(p, "game"); GameFour game = plugin.getGM().getGameFourByPlayer(p); p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); ScoreboardUtil scoreboardUtil = new ScoreboardUtil("game-four", "starting", false); scoreboardUtil.setName(plugin.getLang().get("scoreboards.game-four-title")); String titulo = plugin.getLang().get(p, "scoreboards.game-four"); String [] title = titulo.split("\\n"); for (Integer n = 1, n2 = title.length - 1; n < title.length + 1; ++n, --n2) { scoreboardUtil.lines(n, gameFour(p, title[n2], game)); } scoreboardUtil.build(p); score.put(p, scoreboardUtil); } public void update(Player p) { if (p == null || !p.isOnline()) { return; } ScoreboardUtil scoreboardUtil = score.get(p); if (plugin.getGM().getGameByPlayer(p) == null && plugin.getGM().getGameFourByPlayer(p) == null) { if (sb.get(p).equals("lobby")) { scoreboardUtil.setName(plugin.getLang().get("scoreboards.main-title")); String titulo = plugin.getLang().get(p, "scoreboards.main"); String [] title = titulo.split("\\n"); for (Integer n = 1, n2 = title.length - 1; n < title.length + 1; ++n, --n2) { scoreboardUtil.lines(n, lobby(p, title[n2])); } } else { createLobbyBoard(p); } } else { if (plugin.getGM().getGameByPlayer(p) != null) { Game game = plugin.getGM().getGameByPlayer(p); if (game.isState(State.WAITING)) { if (sb.get(p).equals("waiting")) { scoreboardUtil.setName(plugin.getLang().get("scoreboards.lobby-title")); String titulo = plugin.getLang().get(p, "scoreboards.lobby"); String [] title = titulo.split("\\n"); for (Integer n = 1, n2 = title.length - 1; n < title.length + 1; ++n, --n2) { scoreboardUtil.lines(n, game(p, title[n2], game)); } } else { createWaitingBoard(p); } } else if (game.isState(State.STARTING)) { if (sb.get(p).equals("starting")) { scoreboardUtil.setName(plugin.getLang().get("scoreboards.starting-title")); String titulo = plugin.getLang().get(p, "scoreboards.starting"); String [] title = titulo.split("\\n"); for (Integer n = 1, n2 = title.length - 1; n < title.length + 1; ++n, --n2) { scoreboardUtil.lines(n, game(p, title[n2], game)); } } else { createStartingBoard(p); } } else if (game.isState(State.INGAME) || game.isState(State.PREGAME) || game.isState(State.FINISH) || game.isState(State.RESTARTING)) { if (sb.get(p).equals("game")) { scoreboardUtil.setName(plugin.getLang().get("scoreboards.game-normal-title")); String titulo = plugin.getLang().get(p, "scoreboards.game-normal"); String [] title = titulo.split("\\n"); for (Integer n = 1, n2 = title.length - 1; n < title.length + 1; ++n, --n2) { scoreboardUtil.lines(n, game(p, title[n2], game)); } } else { createGameBoard(p); } } } else if (plugin.getGM().getGameFourByPlayer(p) != null) { GameFour game = plugin.getGM().getGameFourByPlayer(p); if (game.isState(FState.WAITING)) { if (sb.get(p).equals("waiting")) { scoreboardUtil.setName(plugin.getLang().get("scoreboards.lobby-title")); String titulo = plugin.getLang().get(p, "scoreboards.lobby"); String [] title = titulo.split("\\n"); for (Integer n = 1, n2 = title.length - 1; n < title.length + 1; ++n, --n2) { scoreboardUtil.lines(n, gameFour(p, title[n2], game)); } } else { createWaitingFourBoard(p); } } else if (game.isState(FState.STARTING)) { if (sb.get(p).equals("starting")) { scoreboardUtil.setName(plugin.getLang().get("scoreboards.starting-title")); String titulo = plugin.getLang().get(p, "scoreboards.starting"); String [] title = titulo.split("\\n"); for (Integer n = 1, n2 = title.length - 1; n < title.length + 1; ++n, --n2) { scoreboardUtil.lines(n, gameFour(p, title[n2], game)); } } else { createStartingFourBoard(p); } } else if (game.isState(FState.INGAME) || game.isState(FState.PREGAME) || game.isState(FState.FINISH) || game.isState(FState.RESTARTING)) { if (sb.get(p).equals("game")) { scoreboardUtil.setName(plugin.getLang().get("scoreboards.game-four-title")); String titulo = plugin.getLang().get(p, "scoreboards.game-four"); String [] title = titulo.split("\\n"); for (Integer n = 1, n2 = title.length - 1; n < title.length + 1; ++n, --n2) { scoreboardUtil.lines(n, gameFour(p, title[n2], game)); } } else { createGameFourBoard(p); } } } } } Date now = new Date(); SimpleDateFormat sm = new SimpleDateFormat("dd/MM/yy"); public String lobby(Player p, String c) { if (plugin.getPlaceholder()) { return PlaceholderAPI.setPlaceholders(p, c.replaceAll("", String.valueOf(Bukkit.getOnlinePlayers().size())).replaceAll("", p.getName())); } else { return c.replaceAll("", String.valueOf(Bukkit.getOnlinePlayers().size())).replaceAll("", p.getName()); } } public String game(Player p, String c, Game game) { if (plugin.getPlaceholder()) { return PlaceholderAPI.setPlaceholders(p, c .replaceAll("", String.valueOf(game.getGoals(p))) .replaceAll("", String.valueOf(game.getKills(p))) .replaceAll("", sm.format(now)) .replaceAll("", String.valueOf(game.getTeams().get(ChatColor.BLUE).getGoals())) .replaceAll("", String.valueOf(game.getTeams().get(ChatColor.RED).getGoals())) .replaceAll("