diff options
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/game')
10 files changed, 114 insertions, 125 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java index 55dfa3c..18cad40 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java @@ -35,7 +35,6 @@ import java.util.stream.Collectors; import static net.tylermurphy.hideAndSeek.configuration.Config.*; import static net.tylermurphy.hideAndSeek.configuration.Localization.message; -@SuppressWarnings("deprecation") public class Board { private final List<String> Hider = new ArrayList<>(), Seeker = new ArrayList<>(), Spectator = new ArrayList<>(); @@ -244,7 +243,7 @@ public class Board { Status status = Main.getInstance().getGame().getStatus(); Taunt taunt = Main.getInstance().getGame().getTaunt(); - Border worldBorder = Main.getInstance().getGame().getBorder(); + Border worldBorder = Main.getInstance().getGame().getCurrentMap().getWorldBorder(); Glow glow = Main.getInstance().getGame().getGlow(); int i = 0; @@ -259,7 +258,7 @@ public class Board { String value = getTeam(player); board.setLine(String.valueOf(i), line.replace("{TEAM}", value)); } else if (line.contains("{BORDER}")) { - if (!worldBorderEnabled) continue; + if (!Main.getInstance().getGame().getCurrentMap().isWorldBorderEnabled()) continue; if (worldBorder == null || status == Status.STARTING) { board.setLine(String.valueOf(i), line.replace("{BORDER}", BORDER_COUNTING.replace("{AMOUNT}", "0"))); } else if (!worldBorder.isRunning()) { diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Disguiser.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Disguiser.java index 2f8cbf6..dabb735 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/Disguiser.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Disguiser.java @@ -2,17 +2,17 @@ package net.tylermurphy.hideAndSeek.game; import static net.tylermurphy.hideAndSeek.configuration.Config.*; +import net.tylermurphy.hideAndSeek.configuration.Map; import net.tylermurphy.hideAndSeek.game.util.Disguise; import org.bukkit.Material; import org.bukkit.entity.Player; import org.jetbrains.annotations.Nullable; import java.util.HashMap; -import java.util.Map; public class Disguiser { - private final Map<Player, Disguise> disguises; + private final HashMap<Player, Disguise> disguises; public Disguiser(){ this.disguises = new HashMap<>(); @@ -35,7 +35,7 @@ public class Disguiser { } public void check(){ - for(Map.Entry<Player, Disguise> set : disguises.entrySet()){ + for(HashMap.Entry<Player, Disguise> set : disguises.entrySet()){ Disguise disguise = set.getValue(); Player player = set.getKey(); if(!player.isOnline()) { @@ -47,9 +47,9 @@ public class Disguiser { } } - public void disguise(Player player, Material material){ - if(!blockhuntEnabled){ - player.sendMessage(errorPrefix + "Please enable blockhunt in config.yml to enable disguises. Blockhunt does not work on 1.8"); + public void disguise(Player player, Material material, Map map){ + if(!map.isBlockHuntEnabled()){ + player.sendMessage(errorPrefix + "Please enable blockhunt in this map inside maps.yml to enable disguises. Blockhunt does not work on 1.8"); return; } if(disguises.containsKey(player)){ diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java index 71c3e84..2f86849 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java @@ -24,18 +24,17 @@ import com.cryptomorin.xseries.messages.Titles; import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; import net.tylermurphy.hideAndSeek.Main; -import net.tylermurphy.hideAndSeek.game.events.Border; +import net.tylermurphy.hideAndSeek.configuration.Map; +import net.tylermurphy.hideAndSeek.configuration.Maps; import net.tylermurphy.hideAndSeek.game.events.Glow; import net.tylermurphy.hideAndSeek.game.events.Taunt; import net.tylermurphy.hideAndSeek.game.listener.RespawnHandler; import net.tylermurphy.hideAndSeek.game.util.*; -import net.tylermurphy.hideAndSeek.world.WorldLoader; import org.bukkit.*; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import java.io.File; import java.util.*; import java.util.stream.Collectors; @@ -46,24 +45,25 @@ public class Game { private final Taunt taunt; private final Glow glow; - private final Border worldBorder; - private final WorldLoader worldLoader; private final Board board; private Status status; + private Map currentMap; + private int gameTick; private int lobbyTimer; private int startingTimer; private int gameTimer; private boolean hiderLeft; - public Game(Board board){ + public Game(Board board) { + + this.currentMap = Maps.getRandomMap(); + this.taunt = new Taunt(); this.glow = new Glow(); - this.worldBorder = new Border(); - this.worldLoader = new WorldLoader(spawnWorld); this.status = Status.STANDBY; @@ -92,18 +92,10 @@ public class Game { return glow; } - public Border getBorder(){ - return worldBorder; - } - public Taunt getTaunt(){ return taunt; } - public WorldLoader getWorldLoader(){ - return worldLoader; - } - public void start() { try { Optional<Player> rand = board.getPlayers().stream().skip(new Random().nextInt(board.size())).findFirst(); @@ -115,17 +107,17 @@ public class Game { } public void start(Player seeker) { - if (mapSaveEnabled) worldLoader.rollback(); + if (mapSaveEnabled) currentMap.getWorldLoader().rollback(); board.reload(); board.addSeeker(seeker); - PlayerLoader.loadSeeker(seeker, getGameWorld()); + PlayerLoader.loadSeeker(seeker, currentMap); board.getPlayers().forEach(player -> { if(board.isSeeker(player)) return; board.addHider(player); - PlayerLoader.loadHider(player, getGameWorld()); + PlayerLoader.loadHider(player, currentMap); }); board.getPlayers().forEach(board::createGameBoard); - worldBorder.resetWorldBorder(getGameWorld()); + currentMap.getWorldBorder().resetWorldBorder(); if (gameLength > 0) gameTimer = gameLength; status = Status.STARTING; startingTimer = 30; @@ -147,21 +139,21 @@ public class Game { public void end() { board.getPlayers().forEach(PlayerLoader::unloadPlayer); - worldBorder.resetWorldBorder(getGameWorld()); + currentMap.getWorldBorder().resetWorldBorder(); board.getPlayers().forEach(player -> { if (leaveOnEnd) { board.removeBoard(player); board.remove(player); handleBungeeLeave(player); } else { - player.teleport(new Location(Bukkit.getWorld(lobbyWorld), lobbyPosition.getX(),lobbyPosition.getY(),lobbyPosition.getZ())); + player.teleport(currentMap.getLobby()); board.createLobbyBoard(player); board.addHider(player); - PlayerLoader.joinPlayer(player); + PlayerLoader.joinPlayer(player, currentMap); } }); RespawnHandler.temp_loc.clear(); - if (mapSaveEnabled) worldLoader.unloadMap(); + if (mapSaveEnabled) currentMap.getWorldLoader().unloadMap(); board.reloadLobbyBoards(); status = Status.ENDED; } @@ -172,14 +164,14 @@ public class Game { ItemStack[] data = player.getInventory().getContents(); Main.getInstance().getDatabase().getInventoryData().saveInventory(player.getUniqueId(), data); } - PlayerLoader.joinPlayer(player); + PlayerLoader.joinPlayer(player, currentMap); board.addHider(player); board.createLobbyBoard(player); board.reloadLobbyBoards(); if (announceMessagesToNonPlayers) Bukkit.broadcastMessage(messagePrefix + message("GAME_JOIN").addPlayer(player)); else broadcastMessage(messagePrefix + message("GAME_JOIN").addPlayer(player)); } else { - PlayerLoader.loadSpectator(player, getGameWorld()); + PlayerLoader.loadSpectator(player, currentMap); board.addSpectator(player); board.createGameBoard(player); player.sendMessage(messagePrefix + message("GAME_JOIN_SPECTATOR")); @@ -216,12 +208,12 @@ public class Game { out.writeUTF(leaveServer); player.sendPluginMessage(Main.getInstance(), "BungeeCord", out.toByteArray()); } else { - player.teleport(new Location(Bukkit.getWorld(exitWorld), exitPosition.getX(), exitPosition.getY(), exitPosition.getZ())); + player.teleport(exitPosition); } } public void onTick() { - if (isNotSetup()) return; + if (currentMap.isNotSetup()) return; if (status == Status.STANDBY) whileWaiting(); else if (status == Status.STARTING) whileStarting(); else if (status == Status.PLAYING) whilePlaying(); @@ -257,7 +249,7 @@ public class Game { board.getPlayers().forEach(player -> { PlayerLoader.resetPlayer(player, board); if(board.isSeeker(player)){ - player.teleport(new Location(Bukkit.getWorld(getGameWorld()), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ())); + player.teleport(currentMap.getSpawn()); } }); } else if (startingTimer == 1){ @@ -317,7 +309,7 @@ public class Game { board.reloadGameBoards(); gameTimer--; } - if (worldBorderEnabled) worldBorder.update(); + if (currentMap.isWorldBorderEnabled()) currentMap.getWorldBorder().update(); if (tauntEnabled) taunt.update(); if (glowEnabled || alwaysGlow) glow.update(); } @@ -331,21 +323,17 @@ public class Game { } } - public boolean isNotSetup() { - if (spawnPosition.getBlockX() == 0 && spawnPosition.getBlockY() == 0 && spawnPosition.getBlockZ() == 0) return true; - if (lobbyPosition.getBlockX() == 0 && lobbyPosition.getBlockY() == 0 && lobbyPosition.getBlockZ() == 0) return true; - if (exitPosition.getBlockX() == 0 && exitPosition.getBlockY() == 0 && exitPosition.getBlockZ() == 0) return true; - if (seekerLobbyPosition.getBlockX() == 0 && seekerLobbyPosition.getBlockY() == 0 && seekerLobbyPosition.getBlockZ() == 0) return true; - if (mapSaveEnabled) { - File destination = new File(Main.getInstance().getWorldContainer() + File.separator + getGameWorld()); - if (!destination.exists()) return true; - } - return saveMinX == 0 || saveMinZ == 0 || saveMaxX == 0 || saveMaxZ == 0; + public Map getCurrentMap() { + return currentMap; + } + + public void setCurrentMap(Map map) { + this.currentMap = map; } - public String getGameWorld() { - if (mapSaveEnabled) return "hideandseek_"+spawnWorld; - else return spawnWorld; + public World getGameWorld() { + if(currentMap == null || currentMap.getSpawn() == null) return null; + else return currentMap.getSpawn().getWorld(); } private void checkWinConditions() { diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java b/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java index eedfabe..83f4eee 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java @@ -23,9 +23,8 @@ import com.cryptomorin.xseries.messages.Titles; import net.md_5.bungee.api.ChatColor; import net.tylermurphy.hideAndSeek.Main; import net.tylermurphy.hideAndSeek.configuration.Items; -import org.bukkit.Bukkit; +import net.tylermurphy.hideAndSeek.configuration.Map; import org.bukkit.GameMode; -import org.bukkit.Location; import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeInstance; import org.bukkit.entity.Player; @@ -35,30 +34,29 @@ import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import static net.tylermurphy.hideAndSeek.configuration.Config.*; -import static net.tylermurphy.hideAndSeek.configuration.Config.lobbyPosition; import static net.tylermurphy.hideAndSeek.configuration.Localization.message; @SuppressWarnings("deprecation") public class PlayerLoader { - public static void loadHider(Player player, String gameWorld){ - player.teleport(new Location(Bukkit.getWorld(gameWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); + public static void loadHider(Player player, Map map){ + player.teleport(map.getSpawn()); loadPlayer(player); player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED,1000000,5,false,false)); Titles.sendTitle(player, 10, 70, 20, ChatColor.WHITE + "" + message("HIDER_TEAM_NAME"), ChatColor.WHITE + message("HIDERS_SUBTITLE").toString()); - if(blockhuntEnabled){ - openBlockHuntPicker(player); + if(map.isBlockHuntEnabled()){ + openBlockHuntPicker(player, map); } } - public static void loadSeeker(Player player, String gameWorld){ - player.teleport(new Location(Bukkit.getWorld(gameWorld), seekerLobbyPosition.getX(),seekerLobbyPosition.getY(),seekerLobbyPosition.getZ())); + public static void loadSeeker(Player player, Map map){ + player.teleport(map.getSeekerLobby()); loadPlayer(player); Titles.sendTitle(player, 10, 70, 20, ChatColor.WHITE + "" + message("SEEKER_TEAM_NAME"), ChatColor.WHITE + message("SEEKERS_SUBTITLE").toString()); } - public static void loadSpectator(Player player, String gameWorld){ - player.teleport(new Location(Bukkit.getWorld(gameWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); + public static void loadSpectator(Player player, Map map){ + player.teleport(map.getSpawn()); loadPlayer(player); player.setAllowFlight(true); player.setFlying(true); @@ -115,8 +113,8 @@ public class PlayerLoader { player.setFallDistance(0.0F); } - public static void joinPlayer(Player player){ - player.teleport(new Location(Bukkit.getWorld(lobbyWorld), lobbyPosition.getX(),lobbyPosition.getY(),lobbyPosition.getZ())); + public static void joinPlayer(Player player, Map map){ + player.teleport(map.getLobby()); loadPlayer(player); if (lobbyStartItem != null && (!lobbyItemStartAdmin || player.hasPermission("hideandseek.start"))) player.getInventory().setItem(lobbyItemStartPosition, lobbyStartItem); @@ -143,11 +141,11 @@ public class PlayerLoader { } } - public static void openBlockHuntPicker(Player player){ - int slots = ((blockhuntBlocks.size()-1)/9)*9+9; - Inventory inventory = Main.getInstance().getServer().createInventory(null, slots, "Select a Block"); - for(int i=0;i<blockhuntBlocks.size();i++){ - inventory.setItem(i, new ItemStack(blockhuntBlocks.get(i))); + public static void openBlockHuntPicker(Player player, Map map){ + int slots = ((map.getBlockHunt().size()-1)/9)*9+9; + Inventory inventory = Main.getInstance().getServer().createInventory(null, slots, "Select a Block: " + map.getName()); + for(int i=0;i<map.getBlockHunt().size();i++){ + inventory.setItem(i, new ItemStack(map.getBlockHunt().get(i))); } player.openInventory(inventory); } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/events/Border.java b/src/main/java/net/tylermurphy/hideAndSeek/game/events/Border.java index 647c4b6..9fb7e13 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/events/Border.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/events/Border.java @@ -1,8 +1,7 @@ package net.tylermurphy.hideAndSeek.game.events; import net.tylermurphy.hideAndSeek.Main; -import org.bukkit.Bukkit; -import org.bukkit.World; +import net.tylermurphy.hideAndSeek.configuration.Map; import static net.tylermurphy.hideAndSeek.configuration.Config.*; import static net.tylermurphy.hideAndSeek.configuration.Localization.message; @@ -11,9 +10,13 @@ public class Border { private int delay; private boolean running; + private final Map map; + private int currentSize; - public Border() { - delay = 60 * worldBorderDelay; + public Border(Map map) { + this.map = map; + this.delay = (int) (60 * map.getWorldBorderData().getY()); + this.currentSize = (int) map.getWorldBorderData().getX(); } public void update() { @@ -21,7 +24,7 @@ public class Border { Main.getInstance().getGame().broadcastMessage(worldBorderPrefix + message("WORLDBORDER_WARN")); } else if (delay == 0) { if (running) { - delay = 60 * worldBorderDelay; + delay = (int) (60 * map.getWorldBorderData().getY()); running = false; } else decreaseWorldBorder(); @@ -30,34 +33,30 @@ public class Border { } private void decreaseWorldBorder() { - if (currentWorldborderSize == 100) return; - int change = worldBorderChange; - if (currentWorldborderSize-worldBorderChange < 100) { - change = currentWorldborderSize-100; + if (currentSize == 100) return; + int change = (int) map.getWorldBorderData().getZ(); + if (currentSize-change < 100) { + change = currentSize-100; } running = true; Main.getInstance().getGame().broadcastMessage(worldBorderPrefix + message("WORLDBORDER_DECREASING").addAmount(change)); - currentWorldborderSize -= worldBorderChange; - World world = Bukkit.getWorld(Main.getInstance().getGame().getGameWorld()); - assert world != null; - org.bukkit.WorldBorder border = world.getWorldBorder(); + currentSize -= map.getWorldBorderData().getZ(); + org.bukkit.WorldBorder border = map.getSpawn().getWorld().getWorldBorder(); border.setSize(border.getSize()-change,30); delay = 30; } - public void resetWorldBorder(String worldName) { - World world = Bukkit.getWorld(worldName); - assert world != null; - org.bukkit.WorldBorder border = world.getWorldBorder(); - if (worldBorderEnabled) { - border.setSize(worldBorderSize); - border.setCenter(worldBorderPosition.getX(), worldBorderPosition.getZ()); - currentWorldborderSize = worldBorderSize; + public void resetWorldBorder() { + org.bukkit.WorldBorder border = map.getSpawn().getWorld().getWorldBorder(); + if (map.isWorldBorderEnabled()) { + border.setSize(map.getWorldBorderData().getX()); + border.setCenter(map.getWorldBorderPos().getX(), map.getWorldBorderPos().getY()); + currentSize = (int) map.getWorldBorderData().getX(); } else { border.setSize(30000000); border.setCenter(0, 0); } - delay = 60 * worldBorderDelay; + delay = (int) (60 * map.getWorldBorderData().getY()); } public int getDelay() { diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java index d03d5d6..cd63fd8 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java @@ -7,7 +7,6 @@ import net.tylermurphy.hideAndSeek.game.Game; import net.tylermurphy.hideAndSeek.game.PlayerLoader; import net.tylermurphy.hideAndSeek.game.util.Status; import org.bukkit.Bukkit; -import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.event.EventHandler; @@ -18,7 +17,6 @@ import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.PlayerDeathEvent; import static net.tylermurphy.hideAndSeek.configuration.Config.*; -import static net.tylermurphy.hideAndSeek.configuration.Config.spawnPosition; import static net.tylermurphy.hideAndSeek.configuration.Localization.message; public class DamageHandler implements Listener { @@ -32,8 +30,8 @@ public class DamageHandler implements Listener { // Define variables Player player = (Player) event.getEntity(); Player attacker = null; - // If no spawn position, we won't be able to manage their death :o - if (spawnPosition == null) { return; } + // If map is not setup we won't be able to process on it :o + if (game.getCurrentMap().isNotSetup()) { return; } // If there is an attacker, find them if (event instanceof EntityDamageByEntityEvent) { if (((EntityDamageByEntityEvent) event).getDamager() instanceof Player) @@ -73,9 +71,9 @@ public class DamageHandler implements Listener { if (board.isSpectator(player)) { event.setCancelled(true); if (Main.getInstance().supports(18) && player.getLocation().getBlockY() < -64) { - player.teleport(new Location(Bukkit.getWorld(game.getGameWorld()), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ())); + player.teleport(game.getCurrentMap().getSpawn()); } else if (!Main.getInstance().supports(18) && player.getLocation().getY() < 0) { - player.teleport(new Location(Bukkit.getWorld(game.getGameWorld()), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ())); + player.teleport(game.getCurrentMap().getSpawn()); } return; } @@ -98,15 +96,15 @@ public class DamageHandler implements Listener { Main.getInstance().getDisguiser().reveal(player); // Teleport player to seeker spawn if(delayedRespawn){ - player.teleport(new Location(Bukkit.getWorld(game.getGameWorld()), seekerLobbyPosition.getX(), seekerLobbyPosition.getY(), seekerLobbyPosition.getZ())); + player.teleport(game.getCurrentMap().getSeekerLobby()); player.sendMessage(messagePrefix + message("RESPAWN_NOTICE").addAmount(delayedRespawnDelay)); Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.getInstance(), () -> { if(game.getStatus() == Status.PLAYING){ - player.teleport(new Location(Bukkit.getWorld(game.getGameWorld()), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ())); + player.teleport(game.getCurrentMap().getSpawn()); } }, delayedRespawnDelay * 20L); } else { - player.teleport(new Location(Bukkit.getWorld(game.getGameWorld()), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ())); + player.teleport(game.getCurrentMap().getSpawn()); } // Add leaderboard stats board.addDeath(player.getUniqueId()); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InteractHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InteractHandler.java index 3440780..1f2c388 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InteractHandler.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InteractHandler.java @@ -50,7 +50,7 @@ public class InteractHandler implements Listener { if (temp.isSimilar(lobbyStartItem) && event.getPlayer().hasPermission("hideandseek.start")) { event.setCancelled(true); - if (Main.getInstance().getGame().isNotSetup()) { + if (Main.getInstance().getGame().getCurrentMap().isNotSetup()) { event.getPlayer().sendMessage(errorPrefix + message("GAME_SETUP")); return; } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InventoryHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InventoryHandler.java index e72bea0..2439b2b 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InventoryHandler.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InventoryHandler.java @@ -24,6 +24,8 @@ import static net.tylermurphy.hideAndSeek.configuration.Config.*; import com.cryptomorin.xseries.XMaterial; import net.tylermurphy.hideAndSeek.Main; import net.tylermurphy.hideAndSeek.command.Debug; +import net.tylermurphy.hideAndSeek.configuration.Map; +import net.tylermurphy.hideAndSeek.configuration.Maps; import net.tylermurphy.hideAndSeek.game.util.Status; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -79,17 +81,22 @@ public class InventoryHandler implements Listener { private void checkForBlockHuntMenu(InventoryClickEvent event){ boolean test; + String mapName; if(Main.getInstance().supports(14)){ - test = event.getView().getTitle().equals("Select a Block"); + test = event.getView().getTitle().startsWith("Select a Block: "); + mapName = event.getView().getTitle().substring("Select a Block: ".length()); } else { - test = event.getInventory().getName().equals("Select a Block"); + test = event.getInventory().getName().startsWith("Select a Block: "); + mapName = event.getInventory().getName().substring("Select a Block: ".length()); } if(!test) return; event.setCancelled(true); - Material mat = blockhuntBlocks.get(event.getRawSlot()); + Map map = Maps.getMap(mapName); + if(map == null) return; + Material mat = map.getBlockHunt().get(event.getRawSlot()); if(mat == null) return; Player player = (Player) event.getWhoClicked(); - Main.getInstance().getDisguiser().disguise(player, mat); + Main.getInstance().getDisguiser().disguise(player, mat, map); player.closeInventory(); } @@ -97,17 +104,22 @@ public class InventoryHandler implements Listener { public void onInventoryClose(InventoryCloseEvent event){ if (!(event.getPlayer() instanceof Player)) return; boolean test; + String mapName; if(Main.getInstance().supports(14)){ - test = event.getView().getTitle().equals("Select a Block"); + test = event.getView().getTitle().startsWith("Select a Block: "); + mapName = event.getView().getTitle().substring("Select a Block: ".length()); } else { - test = event.getInventory().getName().equals("Select a Block"); + test = event.getInventory().getName().startsWith("Select a Block: "); + mapName = event.getInventory().getName().substring("Select a Block: ".length()); } if(!test) return; - Material mat = blockhuntBlocks.get(0); + Map map = Maps.getMap(mapName); + if(map == null) return; + Material mat = map.getBlockHunt().get(0); if(mat == null) return; Player player = (Player) event.getPlayer(); if(Main.getInstance().getDisguiser().disguised(player)) return; - Main.getInstance().getDisguiser().disguise(player, mat); + Main.getInstance().getDisguiser().disguise(player, mat, map); player.closeInventory(); } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java index 6d88ebf..0ad95b5 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java @@ -4,9 +4,7 @@ import net.tylermurphy.hideAndSeek.Main; import net.tylermurphy.hideAndSeek.configuration.Items; import net.tylermurphy.hideAndSeek.game.PlayerLoader; import net.tylermurphy.hideAndSeek.game.util.Status; -import org.bukkit.Bukkit; import org.bukkit.GameMode; -import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -17,8 +15,6 @@ import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.ItemStack; import static net.tylermurphy.hideAndSeek.configuration.Config.*; -import static net.tylermurphy.hideAndSeek.configuration.Config.exitPosition; - public class JoinLeaveHandler implements Listener { @EventHandler(priority = EventPriority.HIGHEST) @@ -28,20 +24,20 @@ public class JoinLeaveHandler implements Listener { } Main.getInstance().getBoard().remove(event.getPlayer()); removeItems(event.getPlayer()); - if (Main.getInstance().getGame().isNotSetup()) return; + if (Main.getInstance().getGame().getCurrentMap().isNotSetup()) return; if (autoJoin) { Main.getInstance().getGame().join(event.getPlayer()); } else if (teleportToExit) { - if (event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld()) || event.getPlayer().getWorld().getName().equals(lobbyWorld)) { - event.getPlayer().teleport(new Location(Bukkit.getWorld(exitWorld), exitPosition.getX(), exitPosition.getY(), exitPosition.getZ())); + if (event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld().getName()) || event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getCurrentMap().getLobby().getWorld().getName())) { + event.getPlayer().teleport(exitPosition); event.getPlayer().setGameMode(GameMode.ADVENTURE); } } else { - if (mapSaveEnabled && event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld())) { + if (mapSaveEnabled && event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld().getName())) { if (Main.getInstance().getGame().getStatus() != Status.STANDBY && Main.getInstance().getGame().getStatus() != Status.ENDING) { Main.getInstance().getGame().join(event.getPlayer()); } else { - event.getPlayer().teleport(new Location(Bukkit.getWorld(exitWorld), exitPosition.getX(), exitPosition.getY(), exitPosition.getZ())); + event.getPlayer().teleport(exitPosition); event.getPlayer().setGameMode(GameMode.ADVENTURE); } } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/MovementHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/MovementHandler.java index e6e32f6..966f581 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/MovementHandler.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/MovementHandler.java @@ -2,6 +2,7 @@ package net.tylermurphy.hideAndSeek.game.listener; import com.google.common.collect.Sets; import net.tylermurphy.hideAndSeek.Main; +import net.tylermurphy.hideAndSeek.configuration.Map; import net.tylermurphy.hideAndSeek.game.listener.events.PlayerJumpEvent; import org.bukkit.Material; import org.bukkit.event.EventHandler; @@ -12,9 +13,6 @@ import org.bukkit.event.player.PlayerMoveEvent; import java.util.Set; import java.util.UUID; -import static net.tylermurphy.hideAndSeek.configuration.Config.*; -import static net.tylermurphy.hideAndSeek.configuration.Config.saveMaxZ; - public class MovementHandler implements Listener { private final Set<UUID> prevPlayersOnGround = Sets.newHashSet(); @@ -51,10 +49,11 @@ public class MovementHandler implements Listener { private void checkBounds(PlayerMoveEvent event){ if (!Main.getInstance().getBoard().contains(event.getPlayer())) return; - if (!event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld())) return; - if (!event.getTo().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld())) return; + if (!event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld().getName())) return; + if (!event.getTo().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld().getName())) return; if (event.getPlayer().hasPermission("hideandseek.leavebounds")) return; - if (event.getTo().getBlockX() < saveMinX || event.getTo().getBlockX() > saveMaxX || event.getTo().getBlockZ() < saveMinZ || event.getTo().getBlockZ() > saveMaxZ) { + Map map = Main.getInstance().getGame().getCurrentMap(); + if (event.getTo().getBlockX() < map.getBoundsMin().getBlockX() || event.getTo().getBlockX() > map.getBoundsMax().getBlockX() || event.getTo().getBlockZ() < map.getBoundsMin().getZ() || event.getTo().getBlockZ() > map.getBoundsMax().getZ()) { event.setCancelled(true); } } |