package hdvtdev.blockAndSeek; import hdvtdev.blockAndSeek.roulette.RouletteCreator; import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; 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) return 2; BlockAndSeekGame game = new BlockAndSeekGame(name); games.put(name, game); new BukkitRunnable() { int duration = 30; int waitTime = 10; @Override public void run() { if (!game.isStarted()) { int playerCount = game.playerCount(); for (Player player : game.getPlayers()) { player.sendActionBar(Component.text("Игроков " + playerCount + "/12")); } if (playerCount > 1) { if (waitTime == 0) { game.start(); for (Player player : game.getPlayers()) { RouletteCreator.createRoulette(player, null, true); } } else { for (Player player : game.getPlayers()) { player.sendMessage(Component.text("Осталось: " + waitTime)); } waitTime--; } } else waitTime = 10; } else { if (game.hidersCound() == 0) { for (Player player : game.getPlayers()) { player.sendActionBar(Component.text("Сикеры победили!")); //TODO } game.end(); games.remove(name); this.cancel(); } for (Player player : game.getPlayers()) { player.sendActionBar(Component.text("Осталось: " + duration)); } if (duration == 0) { for (Player player : game.getPlayers()) { player.sendActionBar(Component.text("Хайдеры победили!")); } game.end(); games.remove(name); this.cancel(); } else duration--; } } }.runTaskTimer(BlockAndSeek.getInstance(), 0L, 20L); return 0; } public static BlockAndSeekGame get(String name) { return games.get(name); } }