diff options
author | Tyler Murphy <tylermurphy534@gmail.com> | 2022-05-11 09:49:36 -0400 |
---|---|---|
committer | Tyler Murphy <tylermurphy534@gmail.com> | 2022-05-11 09:49:36 -0400 |
commit | d4f22de7b05dc0170fac130a13ca5b7ad6683bfb (patch) | |
tree | d4322c9795a159231ded3fd379d645a8c433c236 /src/main/java/net/tylermurphy/hideAndSeek/game | |
parent | rank-place palceholder change (diff) | |
download | kenshinshideandseek-d4f22de7b05dc0170fac130a13ca5b7ad6683bfb.tar.gz kenshinshideandseek-d4f22de7b05dc0170fac130a13ca5b7ad6683bfb.tar.bz2 kenshinshideandseek-d4f22de7b05dc0170fac130a13ca5b7ad6683bfb.zip |
bug fixes + spectator flight + no false scoreboards values
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/game')
3 files changed, 67 insertions, 36 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java index 86711ab..61e77e7 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java @@ -38,8 +38,7 @@ public class Board { private static final List<String> Hider = new ArrayList<>(), Seeker = new ArrayList<>(), Spectator = new ArrayList<>(); private static final Map<String, Player> playerList = new HashMap<>(); private static final Map<String, CustomBoard> customBoards = new HashMap<>(); - private static final Map<String, Integer> kills = new HashMap<>(); - private static final Map<String, Integer> deaths = new HashMap<>(); + private static final Map<String, Integer> hider_kills = new HashMap<>(), seeker_kills = new HashMap<>(), hider_deaths = new HashMap<>(), seeker_deaths = new HashMap<>(); public static boolean isPlayer(Player player) { return playerList.containsKey(player.getUniqueId().toString()); @@ -143,32 +142,55 @@ public class Board { Hider.clear(); Seeker.clear(); Spectator.clear(); - kills.clear(); - deaths.clear(); + hider_kills.clear(); + seeker_kills.clear(); + hider_deaths.clear(); + seeker_deaths.clear(); } public static void addKill(UUID uuid){ - if(kills.containsKey(uuid.toString())){ - kills.put(uuid.toString(), kills.get(uuid.toString())+1); - } else { - kills.put(uuid.toString(), 1); + if(Hider.contains(uuid.toString())){ + if(hider_kills.containsKey(uuid.toString())){ + hider_kills.put(uuid.toString(), hider_kills.get(uuid.toString())+1); + } else { + hider_kills.put(uuid.toString(), 1); + } + } else if(getFirstSeeker().getUniqueId().equals(uuid)){ + if(seeker_kills.containsKey(uuid.toString())){ + seeker_kills.put(uuid.toString(), seeker_kills.get(uuid.toString())+1); + } else { + seeker_kills.put(uuid.toString(), 1); + } } } public static void addDeath(UUID uuid){ - if(deaths.containsKey(uuid.toString())){ - deaths.put(uuid.toString(), deaths.get(uuid.toString())+1); - } else { - deaths.put(uuid.toString(), 1); + if(Hider.contains(uuid.toString())){ + if(hider_deaths.containsKey(uuid.toString())){ + hider_deaths.put(uuid.toString(), hider_deaths.get(uuid.toString())+1); + } else { + hider_deaths.put(uuid.toString(), 1); + } + } else if(getFirstSeeker().getUniqueId().equals(uuid)){ + if(seeker_deaths.containsKey(uuid.toString())){ + seeker_deaths.put(uuid.toString(), seeker_deaths.get(uuid.toString())+1); + } else { + seeker_deaths.put(uuid.toString(), 1); + } } } - public static Map<String, Integer> getKills(){ - return new HashMap<>(kills); + public static Map<String, Integer> getHiderKills(){ + return new HashMap<>(hider_kills); } - - public static Map<String, Integer> getDeaths(){ - return new HashMap<>(deaths); + public static Map<String, Integer> getSeekerKills(){ + return new HashMap<>(seeker_kills); + } + public static Map<String, Integer> getHiderDeaths(){ + return new HashMap<>(hider_deaths); + } + public static Map<String, Integer> getSeekerDeaths(){ + return new HashMap<>(seeker_deaths); } public static void createLobbyBoard(Player player) { diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/EventListener.java b/src/main/java/net/tylermurphy/hideAndSeek/game/EventListener.java index f8f754f..1c02685 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/EventListener.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/EventListener.java @@ -215,20 +215,23 @@ public class EventListener implements Listener { // Broadcast player death message if (Board.isSeeker(player)) { Game.broadcastMessage(message("GAME_PLAYER_DEATH").addPlayer(player).toString()); + if(Board.getFirstSeeker().getName().equals(player.getName())){ + Board.addDeath(player.getUniqueId()); + } } else if (Board.isHider(player)) { if (attacker == null) { Game.broadcastMessage(message("GAME_PLAYER_FOUND").addPlayer(player).toString()); } else { Game.broadcastMessage(message("GAME_PLAYER_FOUND_BY").addPlayer(player).addPlayer(attacker).toString()); } + Board.addDeath(player.getUniqueId()); Board.addSeeker(player); } - // Add leaderboard stats - Board.addDeath(player.getUniqueId()); - if(attacker != null){ Board.addKill(attacker.getUniqueId()); } + // Add leaderboard kills if attacker + if(attacker != null && ( Board.isHider(player) || Board.getFirstSeeker().getName().equals(player.getName()) ) ) + Board.addKill(attacker.getUniqueId()); Game.resetPlayer(player); Board.reloadBoardTeams(); - } @EventHandler(priority = EventPriority.HIGHEST) diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java index 76ad068..69153f2 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java @@ -155,35 +155,35 @@ public class Game { status = Status.ENDING; for(Player player : Board.getPlayers()) { player.getInventory().clear(); - player.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 100)); for(PotionEffect effect : player.getActivePotionEffects()){ player.removePotionEffect(effect.getType()); } + player.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 100)); if(Version.atLeast("1.9")){ for(Player temp : Board.getPlayers()) { Packet.setGlow(player, temp, false); } } } - Bukkit.getScheduler().scheduleSyncDelayedTask(Main.plugin, () -> stop(type), 5*20); + List<UUID> players = Board.getPlayers().stream().map(Entity::getUniqueId).collect(Collectors.toList()); + if(type == WinType.HIDER_WIN){ + List<UUID> winners = Board.getHiders().stream().map(Entity::getUniqueId).collect(Collectors.toList()); + Database.playerInfo.addWins(players, winners, Board.getHiderKills(), Board.getHiderDeaths(), Board.getSeekerKills(), Board.getSeekerDeaths(), type); + } else if(type == WinType.SEEKER_WIN){ + List<UUID> winners = new ArrayList<>(); + winners.add(Board.getFirstSeeker().getUniqueId()); + Database.playerInfo.addWins(players, winners, Board.getHiderKills(), Board.getHiderDeaths(), Board.getSeekerKills(), Board.getSeekerDeaths(), type); + } + Bukkit.getScheduler().scheduleSyncDelayedTask(Main.plugin, Game::stop, 5*20); } - public static void stop(WinType type){ + public static void stop(){ if(status == Status.STANDBY) return; tick = 0; countdownTime = -1; status = Status.STANDBY; gameId++; timeLeft = 0; - List<UUID> players = Board.getPlayers().stream().map(Entity::getUniqueId).collect(Collectors.toList()); - if(type == WinType.HIDER_WIN){ - List<UUID> winners = Board.getHiders().stream().map(Entity::getUniqueId).collect(Collectors.toList()); - Database.playerInfo.addWins(players, winners, Board.getKills(), Board.getDeaths(), type); - } else if(type == WinType.SEEKER_WIN){ - List<UUID> winners = new ArrayList<>(); - winners.add(Board.getFirstSeeker().getUniqueId()); - Database.playerInfo.addWins(players, winners, Board.getKills(), Board.getDeaths(), type); - } worldBorder.resetWorldborder(getGameWorld()); for(Player player : Board.getPlayers()) { for(Player player2 : Board.getPlayers()){ @@ -196,6 +196,10 @@ public class Game { Packet.setGlow(player, temp, false); } } + for(PotionEffect effect : player.getActivePotionEffects()){ + player.removePotionEffect(effect.getType()); + } + player.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 100)); if(leaveOnEnd){ Board.removeBoard(player); Board.remove(player); @@ -288,7 +292,7 @@ public class Game { } public static void join(Player player){ - if(Game.status == Status.STANDBY) { + if(Game.status == Status.STANDBY || Game.status == Status.ENDING) { player.teleport(new Location(Bukkit.getWorld(lobbyWorld), lobbyPosition.getX(),lobbyPosition.getY(),lobbyPosition.getZ())); player.getInventory().clear(); if(lobbyStartItem != null && (!lobbyItemStartAdmin || player.hasPermission("hideandseek.start"))) @@ -308,10 +312,11 @@ public class Game { for(Player player2 : Board.getPlayers()){ player2.hidePlayer(player); } - player.setFlying(true); - player.setAllowFlight(true); Board.createGameBoard(player); player.teleport(new Location(Bukkit.getWorld(getGameWorld()), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); + player.setFlying(true); + player.setAllowFlight(true); + player.setFallDistance(0.0F); Titles.sendTitle(player, 10, 70, 20, ChatColor.GRAY + "" + ChatColor.BOLD + "SPECTATING", ChatColor.WHITE + message("SPECTATOR_SUBTITLE").toString()); } @@ -327,6 +332,7 @@ public class Game { public static void leave(Player player){ player.setFlying(false); player.setAllowFlight(false); + player.setFallDistance(0.0F); for(Player player2 : Board.getPlayers()){ player2.showPlayer(player); player.showPlayer(player2); |