From 1325e042a6e7af37669bcd32e9d7a133f2ae22e6 Mon Sep 17 00:00:00 2001 From: tylermurphy534 Date: Sun, 30 Oct 2022 21:40:59 -0400 Subject: finish beta build of multi map support --- .../hideAndSeek/configuration/Maps.java | 37 +++++++++++++++------- 1 file changed, 26 insertions(+), 11 deletions(-) (limited to 'src/main/java/net/tylermurphy/hideAndSeek/configuration/Maps.java') 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 = 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; + if(MAPS.values().size() > 0) { + Collection 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 getAllMaps() { return MAPS.values(); } @@ -69,9 +82,11 @@ public class Maps { data.getInt("worldborder.delay"), data.getInt("worldborder.change") ); + List 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()); } } -- cgit v1.2.3-freya