Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private int lobbyTask;
- private int startingTask;
- private int gameEndTask;
- private int gameResetTask;
- private int playerSpreadTask;
- private net.vexar.vexarspleef.map.Map currentMap;
- private VexarSpleef spleef;
- private GameStatus gameStatus;
- private List<UUID> humans = new ArrayList<>();
- private List<UUID> winner = new ArrayList<>();
- private Map<UUID, Integer> coinsEarned = new HashMap<>();
- private Map<UUID, Integer> closeEncounters = new HashMap<>();
- public List<BlockState> blocklist = new ArrayList<BlockState>();
- public GameManager(VexarSpleef spleef) {
- this.spleef = spleef;
- gameStatus = GameStatus.IN_LOBBY;
- lobbyTask = spleef.getServer().getScheduler().scheduleSyncRepeatingTask(spleef, new GameLobbyTask(spleef), 0L, 20L);
- currentMap = new net.vexar.vexarspleef.map.Map(spleef.getConfigFile().getString("map"));
- updateGame(spleef.getConfigFile().getString("db-server"),spleef.getConfigFile().getString("bungee-server"),gameStatus.toString().toUpperCase(), Bukkit.getOnlinePlayers().size(), spleef.getConfigFile().getConfig().getInt("maxPlayers") );
- }
- public void startGameCountdown() {
- gameStatus = GameStatus.START_COUNTDOWN;
- updateGame(spleef.getConfigFile().getString("db-server"),spleef.getConfigFile().getString("bungee-server"),gameStatus.toString().toUpperCase(), Bukkit.getOnlinePlayers().size(), spleef.getConfigFile().getConfig().getInt("maxPlayers") );
- spleef.getServer().getScheduler().cancelTask(lobbyTask);
- startingTask = spleef.getServer().getScheduler().scheduleSyncRepeatingTask(spleef, new GameStartingTask(spleef), 0L, 20L);
- updateScoreboards();
- for (Player p : Bukkit.getOnlinePlayers()) {
- if (!humans.contains(p.getUniqueId())) {
- humans.add(p.getUniqueId());
- }
- }
- }
- public void resetLobby() {
- for (Player p : Bukkit.getOnlinePlayers()) {
- p.sendMessage(spleef.getLang().getMessage("lobbyReset"));
- /*
- Teleport to hub server
- */
- }
- gameStatus = GameStatus.IN_LOBBY;
- updateGame(spleef.getConfigFile().getString("db-server"),spleef.getConfigFile().getString("bungee-server"),gameStatus.toString().toUpperCase(), Bukkit.getOnlinePlayers().size(), spleef.getConfigFile().getConfig().getInt("maxPlayers") );
- spleef.getServer().getScheduler().cancelTask(startingTask);
- lobbyTask = spleef.getServer().getScheduler().scheduleSyncRepeatingTask(spleef, new GameLobbyTask(spleef), 0L, 20L);
- updateScoreboards();
- }
- public void startGame() {
- gameStatus = GameStatus.STARTING;
- updateGame(spleef.getConfigFile().getString("db-server"),spleef.getConfigFile().getString("bungee-server"),gameStatus.toString().toUpperCase(), Bukkit.getOnlinePlayers().size(), spleef.getConfigFile().getConfig().getInt("maxPlayers") );
- spleef.getServer().getScheduler().cancelTask(startingTask);
- for (Player p : Bukkit.getOnlinePlayers()) {
- p.sendMessage(spleef.getLang().getMessage("gameStarting"));
- addPlayerCoins(p.getUniqueId());
- coinsEarned.put(p.getUniqueId(), 0);
- p.getInventory().clear();
- p.teleport(spleef.getDataManager().getMapByName(spleef.getConfigFile().getString("map")).getGameSpawn());
- spleef.getKit(VexarCore.getInstance().getUserManager().getUser(p).getVexarRank()).giveKit(p);
- addPlayerEncounters(p.getUniqueId());
- }
- updateScoreboards();
- playerSpreadTask = spleef.getServer().getScheduler().scheduleSyncRepeatingTask(spleef, new PlayerSpreadTask(spleef), 0L, 20L);
- }
- public void gameOn() {
- gameStatus = GameStatus.IN_GAME;
- updateGame(spleef.getConfigFile().getString("db-server"),spleef.getConfigFile().getString("bungee-server"),gameStatus.toString().toUpperCase(), Bukkit.getOnlinePlayers().size(), spleef.getConfigFile().getConfig().getInt("maxPlayers") );
- spleef.getServer().getScheduler().cancelTask(playerSpreadTask);
- for (Player p : Bukkit.getOnlinePlayers()) {
- if (p != null) {
- if (!humans.contains(p.getUniqueId())) {
- humans.add(p.getUniqueId());
- }
- p.playSound(p.getLocation(), Sound.AMBIENCE_THUNDER, 1f, 1f);
- p.setGameMode(GameMode.SURVIVAL);
- }
- }
- updateScoreboards();
- gameEndTask = spleef.getServer().getScheduler().scheduleSyncRepeatingTask(spleef, new GameEndTask(spleef), 0L, 20L);
- }
- public void doReset() {
- for (BlockState block: blocklist){
- block.update(true);
- }
- blocklist.clear();
- for (Player p : Bukkit.getOnlinePlayers()) {
- /*
- SEND TO HUB
- */
- p.setExp(0);
- p.setLevel(0);
- p.getInventory().clear();
- p.getActivePotionEffects().clear();
- p.setHealth(20L);
- p.getInventory().setArmorContents(null);
- p.setGameMode(GameMode.ADVENTURE);
- for (int i = 0; i <= 8; i++) {
- if (spleef.getIdToItem().containsKey("hotbarslot" + i)) {
- p.getInventory().setItem(i, spleef.getIdToItem().get("hotbarslot" + i).getItem());
- }
- }
- }
- spleef.getServer().getScheduler().cancelTask(gameResetTask);
- spleef.getServer().getScheduler().cancelTasks(spleef);
- gameStatus = GameStatus.IN_LOBBY;
- updateGame(spleef.getConfigFile().getString("db-server"),spleef.getConfigFile().getString("bungee-server"),gameStatus.toString().toUpperCase(), Bukkit.getOnlinePlayers().size(), spleef.getConfigFile().getConfig().getInt("maxPlayers") );
- lobbyTask = spleef.getServer().getScheduler().scheduleSyncRepeatingTask(spleef, new GameLobbyTask(spleef), 0L, 20L);
- humans.clear();
- currentMap = null;
- winner.clear();
- closeEncounters.clear();
- coinsEarned.clear();
- }
- public void endGame(GameEnd reason) {
- gameStatus = GameStatus.RESETTING;
- updateGame(spleef.getConfigFile().getString("db-server"),spleef.getConfigFile().getString("bungee-server"),gameStatus.toString().toUpperCase(), Bukkit.getOnlinePlayers().size(), spleef.getConfigFile().getConfig().getInt("maxPlayers") );
- spleef.getServer().getScheduler().cancelTask(gameEndTask);
- for (Player p : Bukkit.getOnlinePlayers()) {
- User user = VexarCore.getInstance().getUserManager().getUser(p);
- /*
- SEND TO HUB
- */
- switch (reason) {
- case WINNER:
- if (winner.isEmpty()) {
- if (!humans.isEmpty()) {
- winner.add(Bukkit.getOnlinePlayers().iterator().next().getUniqueId());
- } else {
- Random r = new Random();
- int d = r.nextInt(humans.size());
- winner.add(humans.get(d));
- }
- }
- if (winner.contains(p.getUniqueId())) {
- VexarCore.getInstance().getUserManager().getUser(p).addCoins(25);
- System.out.println(VexarCore.getInstance().getUserManager().getUser(p).getCoins());
- p.sendMessage(spleef.getLang().getMessageComplex("winner-reward", new Object[]{15}));
- p.teleport(spleef.getLocManager().getLocation("lobby"));
- if (user.hasStat(new WinStat(0))) {
- user.setStat(new WinStat(1 + (int) user.getCurrentStat(new WinStat(0)).getValue()));
- } else {
- user.setStat(new WinStat(1));
- }
- if (user.hasStat(new PointStat(0))) {
- user.setStat(new PointStat(20 + (int) user.getCurrentStat(new PointStat(0)).getValue()));
- } else {
- user.setStat(new PointStat(20));
- }
- VexarCore.getInstance().getUserManager().saveUsers();
- } else {
- p.sendMessage(spleef.getLang().getMessageComplex("loser-reward", new Object[]{5}));
- VexarCore.getInstance().getUserManager().getUser(p).addCoins(5);
- System.out.println(VexarCore.getInstance().getUserManager().getUser(p).getCoins());
- User humU = VexarCore.getInstance().getUserManager().getUser(p);
- if (humU.hasStat(new LossStat(0))) {
- humU.setStat(new LossStat(1 + (int) humU.getCurrentStat(new LossStat(0)).getValue()));
- } else {
- humU.setStat(new LossStat(1));
- }
- if (user.hasStat(new PointStat(0))) {
- user.setStat(new PointStat(5 + (int) user.getCurrentStat(new PointStat(0)).getValue()));
- } else {
- user.setStat(new PointStat(5));
- }
- VexarCore.getInstance().getUserManager().saveUsers();
- }
- break;
- }
- }
- gameResetTask = spleef.getServer().getScheduler().scheduleSyncRepeatingTask(spleef, new GameOverTask(spleef), 0L, 20L);
- }
- public void updateScoreboards() {
- for (Player p : Bukkit.getOnlinePlayers()) {
- if (gameStatus == GameStatus.IN_LOBBY || gameStatus == GameStatus.STARTING || gameStatus == GameStatus.START_COUNTDOWN) {
- doLobbyScoreboard(p);
- } else if (gameStatus == GameStatus.IN_GAME) {
- doInGameScoreboard(p);
- } else {
- p.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
- }
- }
- }
- private void doInGameScoreboard(Player p) {
- // Scoreboard part
- ScoreboardManager manager = Bukkit.getScoreboardManager();
- Scoreboard board = manager.getNewScoreboard();
- Objective obj = board.registerNewObjective("Game", "dummy");
- HashMap<String, String> data = new HashMap<>();
- new BukkitRunnable()
- {
- @Override
- public void run() {
- data.put("TIME_LEFT", TimeUtil.getFormatedTime(GameEndTask.timeleft));
- String s = spleef.getScoreboards().getString("inGameSb.title");
- s = StrSubstitutor.replace(s, data, "{", "}");
- obj.setDisplayName(Color.color(s));
- }
- }.runTaskTimerAsynchronously(spleef, 0L, 10L);
- obj.setDisplayName(Color.color(spleef.getScoreboards().getString("inGameSb.title")));
- obj.setDisplaySlot(DisplaySlot.SIDEBAR);
- data.put("ME", p.getName());
- data.put("M_E", String.valueOf(0));
- data.put("COINS", "" + getCoinsEarned().get(p.getUniqueId()));
- for (Player online : Bukkit.getOnlinePlayers()) {
- if (online != p) {
- data.put("TARGET",online.getName());
- }
- }
- int i = 15;
- if (p.getScoreboard() != board) {
- for (String str : spleef.getScoreboards().getConfig().getStringList("inGameSb.lines")) {
- if (i - 1 >= 1) {
- i--;
- if (str.contains("{")) {
- str = StrSubstitutor.replace(str, data, "{", "}");
- }
- str = Color.color(str);
- Team team;
- if (str.length() >= 16) {
- team = board.registerNewTeam(str.substring(0, 16));
- team.addEntry(str.substring(0, 16));
- team.setPrefix(str.substring(16));
- } else {
- team = board.registerNewTeam(str);
- team.addEntry(str);
- team.setPrefix("");
- }
- team.setSuffix("");
- obj.getScore(str).setScore(i);
- }
- }
- p.setScoreboard(board);
- }
- }
- private void doLobbyScoreboard(Player p) {
- // Scoreboard part
- ScoreboardManager manager = Bukkit.getScoreboardManager();
- Scoreboard board = manager.getNewScoreboard();
- Objective obj = board.registerNewObjective("Lobby", "dummy");
- HashMap<String, String> data = new HashMap<>();
- new BukkitRunnable()
- {
- @Override
- public void run() {
- data.put("TIME_LEFT", TimeUtil.getFormatedTime(GameStartingTask.timer));
- String s = spleef.getScoreboards().getString("inLobbySb.title");
- s = StrSubstitutor.replace(s, data, "{", "}");
- obj.setDisplayName(Color.color(s));
- }
- }.runTaskTimerAsynchronously(spleef, 0L, 10L);
- obj.setDisplayName(Color.color(spleef.getScoreboards().getString("inLobbySb.title")));
- obj.setDisplaySlot(DisplaySlot.SIDEBAR);
- if (p.getScoreboard() != board) {
- int i = 15;
- data.put("O", String.valueOf(Bukkit.getOnlinePlayers().size()));
- data.put("N", String.valueOf(spleef.getConfigFile().getConfig().getInt("minPlayers")));
- for (String str : spleef.getScoreboards().getConfig().getStringList("inLobbySb.lines")) {
- if (i - 1 >= 1) {
- i--;
- if (str.contains("{")) {
- str = StrSubstitutor.replace(str, data, "{", "}");
- }
- str = Color.color(str);
- Team team;
- if (str.length() >= 16) {
- team = board.registerNewTeam(str.substring(0, 16));
- team.addEntry(str.substring(0, 16));
- team.setPrefix(str.substring(16));
- } else {
- team = board.registerNewTeam(str);
- team.addEntry(str);
- team.setPrefix("");
- }
- team.setSuffix("");
- obj.getScore(str).setScore(i);
- }
- }
- p.setScoreboard(board);
- }
- }
- public void addBlock(Block block) {
- blocklist.add(block.getState());
- }
- public boolean isAttached(Block base, Block attached) {
- MaterialData bs = attached.getState().getData();
- if (!(bs instanceof Attachable)) return false;
- Attachable at = (Attachable) bs;
- if (attached.getRelative(at.getAttachedFace()).equals(base))
- return true;
- return false;
- }
- public List<UUID> getHumans() {
- return humans;
- }
- public List<UUID> getWinner() {
- return winner;
- }
- public void addPlayerCoins(UUID id) {
- coinsEarned.put(id, 0);
- }
- public void addPlayerEncounters(UUID id) {
- closeEncounters.put(id, 0);
- }
- public void addPlayerEncountersInt(UUID id, int i) {
- closeEncounters.put(id, (closeEncounters.get(id) + i));
- }
- public int getCloseEncounters(UUID id) {
- return closeEncounters.get(id);
- }
- public int getLobbyTask() {
- return lobbyTask;
- }
- public int getStartingTask() {
- return startingTask;
- }
- public int getGameEndTask() {
- return gameEndTask;
- }
- public int getGameResetTask() {
- return gameResetTask;
- }
- public int getPlayerSpreadTask() {
- return playerSpreadTask;
- }
- public net.vexar.vexarspleef.map.Map getCurrentMap() {
- return currentMap;
- }
- public VexarSpleef getSpleef() {
- return spleef;
- }
- public GameStatus getGameStatus() {
- return gameStatus;
- }
- public Map<UUID, Integer> getCoinsEarned() {
- return coinsEarned;
- }
- public void updateGame(String id, String name, String status, int online, int max) {
- String query = "UPDATE `minigames` SET `id` = ? `name` = ? `status` = ?, online = ?, `max` = ?";
- try {
- PreparedStatement stmt = VexarCore.getInstance().getDb().getConnection().prepareStatement(query);
- stmt.setString(1, id);
- stmt.setString(2, name);
- stmt.setString(3, status);
- stmt.setInt(4, online);
- stmt.setInt(5, max);
- stmt.executeUpdate();
- } catch (SQLException ex) {
- ex.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement