package hdvtdev.blockAndSeek.managers; import hdvtdev.blockAndSeek.BlockAndSeek; import hdvtdev.blockAndSeek.BlockAndSeekGame; import hdvtdev.blockAndSeek.BlockAndSeekMap; import hdvtdev.blockAndSeek.Localization; import org.bukkit.Bukkit; import org.bukkit.WorldCreator; import org.bukkit.scoreboard.Criteria; import org.bukkit.scoreboard.DisplaySlot; import org.bukkit.scoreboard.Objective; import org.bukkit.scoreboard.Scoreboard; import java.io.File; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; public class GamesManager { private static final ConcurrentHashMap games = new ConcurrentHashMap<>(); public static boolean isExist(String name) { return games.containsKey(name); } public static Set getAvailableGames() { return games.keySet(); } public static int createGame(String name) { if (games.containsKey(name)) return 1; if (Bukkit.getWorld(name) == null) { if (new File(BlockAndSeek.getServerDataFolder(), name).exists()) { Bukkit.createWorld(new WorldCreator(name)); } else return 2; } BlockAndSeekMap map = MapsManager.getMap(name); BlockAndSeekGame game = new BlockAndSeekGame(name, map); games.put(name, game); return 0; } public static void remove(String name) { games.remove(name); } public static BlockAndSeekGame get(String name) { return games.get(name); } private static Scoreboard updateScoreboard(Scoreboard scoreboard, int players, int maxPlayers) { Objective objective = scoreboard.getObjective(DisplaySlot.SIDEBAR); for (String o : scoreboard.getEntries()) { scoreboard.resetScores(o); } objective.getScore(" ").setScore(3); objective.getScore(Localization.getComponent("game-players-count", "{players}", String.valueOf(players), "{max-players}", String.valueOf(maxPlayers)).toString()).setScore(2); objective.getScore(" ").setScore(1); objective.getScore(Localization.getComponent("wait-time-left", "{time}", String.valueOf(30)).toString()).setScore(0); return scoreboard; } private static Scoreboard newLobbyScoreboard(String name, int players, int maxPlayers) { Scoreboard scoreboard = Bukkit.getScoreboardManager().getNewScoreboard(); Objective objective = scoreboard.registerNewObjective(name, Criteria.DUMMY, Localization.getComponent(" game-title", "{title}", name)); objective.setDisplaySlot(DisplaySlot.SIDEBAR); objective.getScore(" ").setScore(3); objective.getScore(Localization.getComponent("game-players-count", "{players}", String.valueOf(players), "{max-players}", String.valueOf(maxPlayers)).toString()).setScore(2); objective.getScore(" ").setScore(1); objective.getScore(Localization.getComponent("wait-time-left", "{time}", String.valueOf(30)).toString()).setScore(0); return scoreboard; } }