diff --git a/configs/steamtower.yml b/configs/steamtower.yml index e25a261..de69118 100644 --- a/configs/steamtower.yml +++ b/configs/steamtower.yml @@ -14,7 +14,7 @@ tower: pitch: 0.0 doors: [] keys: [] - lavaY: 220 + lavaY: 78 laveSpace: 7 towerGenerator: diff --git a/src/de/steamwar/towerrun/config/WorldConfig.java b/src/de/steamwar/towerrun/config/WorldConfig.java index c888197..9b48e76 100644 --- a/src/de/steamwar/towerrun/config/WorldConfig.java +++ b/src/de/steamwar/towerrun/config/WorldConfig.java @@ -125,20 +125,30 @@ public class WorldConfig { ESCAPE_HEIGHT = tower.getInt("escapeHeight"); SPAWN = parseLocation(tower.getConfigurationSection("spawn")); - List doors = tower.getConfigurationSection("doors").getKeys(false).stream() - .map(tower.getConfigurationSection("doors")::getConfigurationSection) - .toList(); - DOORS = new Location[doors.size()]; - for (int i = 0; i < doors.size(); i++) { - DOORS[i] = parseLocation(doors.get(i)); + ConfigurationSection doorSection = tower.getConfigurationSection("doors"); + if (doorSection != null) { + List doors = doorSection.getKeys(false).stream() + .map(tower.getConfigurationSection("doors")::getConfigurationSection) + .toList(); + DOORS = new Location[doors.size()]; + for (int i = 0; i < doors.size(); i++) { + DOORS[i] = parseLocation(doors.get(i)); + } + } else { + DOORS = new Location[0]; } - List keys = tower.getConfigurationSection("keys").getKeys(false).stream() - .map(tower.getConfigurationSection("keys")::getConfigurationSection) - .toList(); - KEYS = new Location[keys.size()]; - for (int i = 0; i < keys.size(); i++) { - KEYS[i] = parseLocation(keys.get(i)); + ConfigurationSection keysSection = tower.getConfigurationSection("keys"); + if (keysSection != null) { + List keys = keysSection.getKeys(false).stream() + .map(tower.getConfigurationSection("keys")::getConfigurationSection) + .toList(); + KEYS = new Location[keys.size()]; + for (int i = 0; i < keys.size(); i++) { + KEYS[i] = parseLocation(keys.get(i)); + } + } else { + KEYS = new Location[0]; } LAVA_Y = tower.getInt("lavaY"); diff --git a/src/de/steamwar/towerrun/game/TowerRunGame.java b/src/de/steamwar/towerrun/game/TowerRunGame.java index d0b14d6..ec24426 100644 --- a/src/de/steamwar/towerrun/game/TowerRunGame.java +++ b/src/de/steamwar/towerrun/game/TowerRunGame.java @@ -84,8 +84,12 @@ public class TowerRunGame { for (int z = WorldConfig.MIN_TOWER.getBlockZ(); z < WorldConfig.MAX_TOWER.getBlockZ(); z += WorldConfig.LAVE_SPACE) { Vector pos = new Vector(x, 0, z); if (Arrays.stream(WorldConfig.REGIONS).anyMatch(region -> region.contains(pos))) { - WorldConfig.MIN_TOWER.getWorld().getBlockAt(x, WorldConfig.LAVA_Y, z).setType(Material.LAVA, true); - WorldConfig.MIN_TOWER.getWorld().getBlockAt(x, WorldConfig.LAVA_Y - 1, z).setType(Material.BEDROCK, true); + int offset = WorldConfig.LAVA_Y; + if (TowerRun.getTowerGenerator() != null) { + offset += TowerRun.getTowerGenerator().getHeight(); + } + WorldConfig.MIN_TOWER.getWorld().getBlockAt(x, offset, z).setType(Material.LAVA, true); + WorldConfig.MIN_TOWER.getWorld().getBlockAt(x, offset - 1, z).setType(Material.BEDROCK, true); } } }