From 2139a8d5d30237b6066691af3f29bf1105e4298a Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Mon, 6 Feb 2023 12:15:09 -0500 Subject: spawn patch, bounds checks, drop items, regen --- .../tylermurphy/hideAndSeek/configuration/Map.java | 441 +++++++++++---------- 1 file changed, 222 insertions(+), 219 deletions(-) (limited to 'src/main/java/net/tylermurphy/hideAndSeek/configuration/Map.java') diff --git a/src/main/java/net/tylermurphy/hideAndSeek/configuration/Map.java b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Map.java index a23a1f7..394bbf3 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/configuration/Map.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Map.java @@ -15,224 +15,227 @@ import static net.tylermurphy.hideAndSeek.configuration.Config.*; public class Map { - private final String name; - - private Location - spawnPosition = Location.getDefault(), - lobbyPosition = Location.getDefault(), - seekerLobbyPosition = Location.getDefault(); - - private int - xBoundMin = 0, - zBoundMin = 0, - xBoundMax = 0, - zBoundMax = 0, - xWorldBorder = 0, - zWorldBorder = 0, - worldBorderSize = 0, - worldBorderDelay = 0, - worldBorderChange = 0; - - private boolean - blockhunt = false; - - private List - blockhuntBlocks = new ArrayList<>(); - - private final Border - worldBorder; - - private final WorldLoader - worldLoader; - - public Map(String name) { - this.name = name; - this.worldBorder = new Border(this); - this.worldLoader = new WorldLoader(this); - } - - public void setSpawn(Location pos) { - this.spawnPosition = pos; - } - - public void setLobby(Location pos) { - this.lobbyPosition = pos; - } - - public void setSeekerLobby(Location pos) { - this.seekerLobbyPosition = pos; - } - - public void setWorldBorderData(int x, int z, int size, int delay, int move) { - if(size < 1) { - this.worldBorderSize = 0; - this.worldBorderDelay = 0; - this.worldBorderChange = 0; - this.xWorldBorder = 0; - this.zWorldBorder = 0; - } else { - this.worldBorderSize = size; - this.worldBorderDelay = delay; - this.worldBorderChange = move; - this.xWorldBorder = x; - this.zWorldBorder = z; - } - this.worldBorder.resetWorldBorder(); - } - - public void setBlockhunt(boolean enabled, List blocks) { - if (Main.getInstance().supports(9)) { - this.blockhunt = enabled; - } else { - this.blockhunt = false; - } - this.blockhuntBlocks = blocks; - } - - public void setBoundMin(int x, int z) { - this.xBoundMin = x; - this.zBoundMin = z; - } - - public void setBoundMax(int x, int z) { - this.xBoundMax = x; - this.zBoundMax = z; - } - - @NotNull - public Location getGameSpawn() { - if(mapSaveEnabled) { - return spawnPosition.changeWorld("hs_"+name); - } else { - return spawnPosition; - } - } - - @NotNull - public String getGameSpawnName() { - if(mapSaveEnabled) - return getGameSpawn().getWorld(); - else - return getSpawn().getWorld(); - } - - @NotNull - public Location getSpawn() { - return spawnPosition; - } - - @NotNull - public String getSpawnName() { - return getSpawn().getWorld(); - } - - @NotNull - public Location getLobby() { - return lobbyPosition; - } - - @NotNull - public String getLobbyName() { - return getLobby().getWorld(); - } - - @NotNull - public Location getSeekerLobby() { - return seekerLobbyPosition; - } - - @NotNull - public String getSeekerLobbyName() { - return getSeekerLobby().getWorld(); - } - - @NotNull - public Location getGameSeekerLobby() { - if(mapSaveEnabled) { - return seekerLobbyPosition.changeWorld("hs_"+name); - } else { - return seekerLobbyPosition; - } - } - - public boolean isWorldBorderEnabled() { - return worldBorderSize > 0; - } - - @NotNull - public Vector getWorldBorderPos() { - return new Vector( - xWorldBorder, - 0, - zWorldBorder - ); - } - - @NotNull - public Vector getWorldBorderData() { - return new Vector( - worldBorderSize, - worldBorderDelay, - worldBorderChange - ); - } - - @NotNull - public Border getWorldBorder() { - return worldBorder; - } - - public boolean isBlockHuntEnabled() { - return blockhunt; - } - - @NotNull - public List getBlockHunt() { - return blockhuntBlocks; - } - - @NotNull - public Vector getBoundsMin() { - return new Vector( - xBoundMin, - 0, - zBoundMin - ); - } - - @NotNull - public Vector getBoundsMax() { - return new Vector( - xBoundMax, - 0, - zBoundMax - ); - } - - @NotNull - public String getName() { - return name; - } - - @NotNull - public WorldLoader getWorldLoader() { - return worldLoader; - } - - public boolean isNotSetup() { - if (spawnPosition.getBlockX() == 0 && spawnPosition.getBlockY() == 0 && spawnPosition.getBlockZ() == 0 || !spawnPosition.exists()) return true; - if (lobbyPosition.getBlockX() == 0 && lobbyPosition.getBlockY() == 0 && lobbyPosition.getBlockZ() == 0 || !lobbyPosition.exists()) return true; - if (exitPosition == null || exitPosition.getBlockX() == 0 && exitPosition.getBlockY() == 0 && exitPosition.getBlockZ() == 0 || !exitPosition.exists()) return true; - if (seekerLobbyPosition.getBlockX() == 0 && seekerLobbyPosition.getBlockY() == 0 && seekerLobbyPosition.getBlockZ() == 0 || !seekerLobbyPosition.exists()) return true; - if (mapSaveEnabled && !getGameSpawn().exists()) return true; - if (blockhunt && blockhuntBlocks.isEmpty()) return true; - if(isWorldBorderEnabled() && - new Vector(spawnPosition.getX(), 0, spawnPosition.getZ()).distance(new Vector(xWorldBorder, 0, zWorldBorder)) > 100) return true; - return xBoundMin == 0 || zBoundMin == 0 || xBoundMax == 0 || zBoundMax == 0; - } - - public boolean isBoundsNotSetup() { - return xBoundMin == 0 || zBoundMin == 0 || xBoundMax == 0 || zBoundMax == 0; - } + private final String name; + + private Location + spawnPosition = Location.getDefault(), + lobbyPosition = Location.getDefault(), + seekerLobbyPosition = Location.getDefault(); + + private int + xBoundMin = 0, + zBoundMin = 0, + xBoundMax = 0, + zBoundMax = 0, + xWorldBorder = 0, + zWorldBorder = 0, + worldBorderSize = 0, + worldBorderDelay = 0, + worldBorderChange = 0; + + private boolean + blockhunt = false; + + private List + blockhuntBlocks = new ArrayList<>(); + + private final Border + worldBorder; + + private final WorldLoader + worldLoader; + + public Map(String name) { + this.name = name; + this.worldBorder = new Border(this); + this.worldLoader = new WorldLoader(this); + } + + public void setSpawn(Location pos) { + this.spawnPosition = pos; + } + + public void setLobby(Location pos) { + this.lobbyPosition = pos; + } + + public void setSeekerLobby(Location pos) { + this.seekerLobbyPosition = pos; + } + + public void setWorldBorderData(int x, int z, int size, int delay, int move) { + if(size < 1) { + this.worldBorderSize = 0; + this.worldBorderDelay = 0; + this.worldBorderChange = 0; + this.xWorldBorder = 0; + this.zWorldBorder = 0; + } else { + this.worldBorderSize = size; + this.worldBorderDelay = delay; + this.worldBorderChange = move; + this.xWorldBorder = x; + this.zWorldBorder = z; + } + this.worldBorder.resetWorldBorder(); + } + + public void setBlockhunt(boolean enabled, List blocks) { + if (Main.getInstance().supports(9)) { + this.blockhunt = enabled; + } else { + this.blockhunt = false; + } + this.blockhuntBlocks = blocks; + } + + public void setBoundMin(int x, int z) { + this.xBoundMin = x; + this.zBoundMin = z; + } + + public void setBoundMax(int x, int z) { + this.xBoundMax = x; + this.zBoundMax = z; + } + + @NotNull + public Location getGameSpawn() { + if(mapSaveEnabled) { + return spawnPosition.changeWorld("hs_"+name); + } else { + return spawnPosition; + } + } + + @NotNull + public String getGameSpawnName() { + if(mapSaveEnabled) + return getGameSpawn().getWorld(); + else + return getSpawn().getWorld(); + } + + @NotNull + public Location getSpawn() { + return spawnPosition; + } + + @NotNull + public String getSpawnName() { + return getSpawn().getWorld(); + } + + @NotNull + public Location getLobby() { + return lobbyPosition; + } + + @NotNull + public String getLobbyName() { + return getLobby().getWorld(); + } + + @NotNull + public Location getSeekerLobby() { + return seekerLobbyPosition; + } + + @NotNull + public String getSeekerLobbyName() { + return getSeekerLobby().getWorld(); + } + + @NotNull + public Location getGameSeekerLobby() { + if(mapSaveEnabled) { + return seekerLobbyPosition.changeWorld("hs_"+name); + } else { + return seekerLobbyPosition; + } + } + + public boolean isWorldBorderEnabled() { + return worldBorderSize > 0; + } + + @NotNull + public Vector getWorldBorderPos() { + return new Vector( + xWorldBorder, + 0, + zWorldBorder + ); + } + + @NotNull + public Vector getWorldBorderData() { + return new Vector( + worldBorderSize, + worldBorderDelay, + worldBorderChange + ); + } + + @NotNull + public Border getWorldBorder() { + return worldBorder; + } + + public boolean isBlockHuntEnabled() { + return blockhunt; + } + + @NotNull + public List getBlockHunt() { + return blockhuntBlocks; + } + + @NotNull + public Vector getBoundsMin() { + return new Vector( + xBoundMin, + 0, + zBoundMin + ); + } + + @NotNull + public Vector getBoundsMax() { + return new Vector( + xBoundMax, + 0, + zBoundMax + ); + } + + @NotNull + public String getName() { + return name; + } + + @NotNull + public WorldLoader getWorldLoader() { + return worldLoader; + } + + public boolean isNotSetup() { + if (spawnPosition.getBlockX() == 0 && spawnPosition.getBlockY() == 0 && spawnPosition.getBlockZ() == 0 || !spawnPosition.exists()) return true; + if (lobbyPosition.getBlockX() == 0 && lobbyPosition.getBlockY() == 0 && lobbyPosition.getBlockZ() == 0 || !lobbyPosition.exists()) return true; + if (exitPosition == null || exitPosition.getBlockX() == 0 && exitPosition.getBlockY() == 0 && exitPosition.getBlockZ() == 0 || !exitPosition.exists()) return true; + if (seekerLobbyPosition.getBlockX() == 0 && seekerLobbyPosition.getBlockY() == 0 && seekerLobbyPosition.getBlockZ() == 0 || !seekerLobbyPosition.exists()) return true; + if (mapSaveEnabled && !getGameSpawn().exists()) return true; + if (blockhunt && blockhuntBlocks.isEmpty()) return true; + if(isWorldBorderEnabled() && + new Vector(spawnPosition.getX(), 0, spawnPosition.getZ()).distance(new Vector(xWorldBorder, 0, zWorldBorder)) > 100) return true; + return isBoundsNotSetup(); + } + + public boolean isBoundsNotSetup() { + if (xBoundMin == 0 || zBoundMin == 0 || xBoundMax == 0 || zBoundMax == 0) return true; + int xDiff = xBoundMax - xBoundMin; + int zDiff = zBoundMax - zBoundMin; + return xDiff < 5 || zDiff < 5; + } } -- cgit v1.2.3-freya