diff options
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/configuration')
-rw-r--r-- | src/main/java/net/tylermurphy/hideAndSeek/configuration/Map.java | 52 | ||||
-rw-r--r-- | src/main/java/net/tylermurphy/hideAndSeek/configuration/Maps.java | 37 |
2 files changed, 68 insertions, 21 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/configuration/Map.java b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Map.java index b18a0b0..42cab4b 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/configuration/Map.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Map.java @@ -1,6 +1,7 @@ package net.tylermurphy.hideAndSeek.configuration; import java.io.File; +import java.util.ArrayList; import java.util.List; import net.tylermurphy.hideAndSeek.Main; @@ -22,7 +23,7 @@ public class Map { seekerLobbyPosition = new Location(null, 0, 0, 0); private String - gameWorldName; + gameWorldName = "world"; private int xBoundMin = 0, @@ -36,10 +37,10 @@ public class Map { worldBorderChange = 0; private boolean - blockhunt; + blockhunt = false; private List<Material> - blockhuntBlocks; + blockhuntBlocks = new ArrayList<>(); private final Border worldBorder; @@ -55,7 +56,8 @@ public class Map { public void setSpawn(Location pos) { this.spawnPosition = pos; - this.gameWorldName = pos.getWorld().getName(); + if(pos.getWorld() != null) + this.gameWorldName = pos.getWorld().getName(); } public void setLobby(Location pos) { @@ -73,7 +75,6 @@ public class Map { this.worldBorderChange = 0; this.xWorldBorder = 0; this.zWorldBorder = 0; - this.worldBorder.resetWorldBorder(); } else { this.worldBorderSize = size; this.worldBorderDelay = delay; @@ -81,6 +82,7 @@ public class Map { this.xWorldBorder = x; this.zWorldBorder = z; } + this.worldBorder.resetWorldBorder(); } public void setBlockhunt(boolean enabled, List<Material> blocks) { @@ -98,14 +100,31 @@ public class Map { this.zBoundMax = z; } + public Location getGameSpawn() { + if(mapSaveEnabled) { + return new Location( + Bukkit.getWorld("hs_" + gameWorldName), + spawnPosition.getX(), + spawnPosition.getY(), + spawnPosition.getZ() + ); + } else { + return spawnPosition; + } + } + + public String getGameSpawnName() { + return "hs_"+gameWorldName; + } + public Location getSpawn() { - if(mapSaveEnabled) - spawnPosition.setWorld(Bukkit.getWorld("hs_"+gameWorldName)); - else - spawnPosition.setWorld(Bukkit.getWorld(gameWorldName)); return spawnPosition; } + public String getSpawnName() { + return gameWorldName; + } + public Location getLobby() { return lobbyPosition; } @@ -114,6 +133,19 @@ public class Map { return seekerLobbyPosition; } + public Location getGameSeekerLobby() { + if(mapSaveEnabled) { + return new Location( + Bukkit.getWorld("hs_" + gameWorldName), + seekerLobbyPosition.getX(), + seekerLobbyPosition.getY(), + seekerLobbyPosition.getZ() + ); + } else { + return seekerLobbyPosition; + } + } + public boolean isWorldBorderEnabled() { return worldBorderSize > 0; } @@ -158,7 +190,7 @@ public class Map { return new Vector( xBoundMax, 0, - zBoundMin + zBoundMax ); } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/configuration/Maps.java b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Maps.java index 736fec2..4f18639 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/configuration/Maps.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Maps.java @@ -21,10 +21,17 @@ public class Maps { } public static Map getRandomMap() { - Optional<Map> map = MAPS.values().stream().skip(new Random().nextInt(MAPS.values().size())).findFirst(); - if(map.isPresent()) return map.get(); - setMap("default", new Map("default")); - return MAPS.get("default"); + Optional<Map> map; + if(MAPS.values().size() > 0) { + Collection<Map> setupMaps = MAPS.values().stream().filter(m -> !m.isNotSetup()).collect(Collectors.toList()); + if(setupMaps.size() < 1) { + return null; + } + map = setupMaps.stream().skip(new Random().nextInt(setupMaps.size())).findFirst(); + } else { + map = Optional.empty(); + } + return map.orElse(null); } public static void setMap(String name, Map map) { @@ -32,6 +39,12 @@ public class Maps { saveMaps(); } + public static boolean removeMap(String name) { + boolean status = MAPS.remove(name) != null; + saveMaps(); + return status; + } + public static Collection<Map> getAllMaps() { return MAPS.values(); } @@ -69,9 +82,11 @@ public class Maps { data.getInt("worldborder.delay"), data.getInt("worldborder.change") ); + List<String> blockhunt = data.getStringList("blockhunt.blocks"); + if(blockhunt == null) blockhunt = new ArrayList<>(); map.setBlockhunt( - data.getBoolean("blockhunt.enabled"), - data.getStringList("blockhunt.blocks") + data.getBoolean("blockhunt.enabled"), + blockhunt .stream() .map(XMaterial::matchXMaterial) .filter(Optional::isPresent) @@ -113,8 +128,8 @@ public class Maps { data.set("worldborder.pos.delay", map.getWorldBorderData().getY()); data.set("worldborder.pos.change", map.getWorldBorderData().getZ()); data.set("blockhunt.enabled", map.isBlockHuntEnabled()); - data.set("blockhunt.blocks", map.getBlockHunt().stream().map(Material::name)); - maps.set(map.getName(), map); + data.set("blockhunt.blocks", map.getBlockHunt().stream().map(Material::name).collect(Collectors.toList())); + maps.set(map.getName(), data); } manager.set("maps", maps); @@ -128,9 +143,9 @@ public class Maps { } else { data.set("spawns." + name + ".world", "world"); } - data.set("spawns.." + name + ".x", spawn.getX()); - data.set("spawns.." + name + ".y", spawn.getY()); - data.set("spawns.." + name + ".z", spawn.getZ()); + data.set("spawns." + name + ".x", spawn.getX()); + data.set("spawns." + name + ".y", spawn.getY()); + data.set("spawns." + name + ".z", spawn.getZ()); } } |