diff --git a/configs/steamtower.yml b/configs/steamtower.yml index 397307f..de69118 100644 --- a/configs/steamtower.yml +++ b/configs/steamtower.yml @@ -2,53 +2,31 @@ tower: regions: 1: minX: 0 - maxX: 69 - minZ: 0 + maxX: 0 + minZ: 69 maxZ: 79 escapeHeight: 1 spawn: x: 66 - y: 25 + y: 23 z: 71 yaw: 180.0 pitch: 0.0 doors: [] keys: [] - lavaY: 76 - laveSpace: 9 + lavaY: 78 + laveSpace: 7 towerGenerator: x: 0 y: 12 z: 0 schematicType: steamtower - fillRegions: - 1: - minX: 28 - minZ: 30 - maxX: 33 - maxZ: 37 - percentage: 0.3 - material: MANGROVE_ROOTS - 2: - minX: 36 - minZ: 47 - maxX: 42 - maxZ: 52 - percentage: 0.7 - material: MANGROVE_ROOTS - 3: - minX: 29 - minZ: 43 - maxX: 36 - maxZ: 46 - percentage: 1.0 - material: MANGROVE_ROOTS -minX: -40 -maxX: 109 -minZ: -40 -maxZ: 119 +minX: -20 +maxX: 89 +minZ: -20 +maxZ: 99 winconditions: - LAST_REMAINING diff --git a/src/de/steamwar/towerrun/TowerRun.java b/src/de/steamwar/towerrun/TowerRun.java index e917740..4b1f47d 100644 --- a/src/de/steamwar/towerrun/TowerRun.java +++ b/src/de/steamwar/towerrun/TowerRun.java @@ -24,7 +24,6 @@ import de.steamwar.towerrun.commands.StartCommand; import de.steamwar.towerrun.config.WorldConfig; import de.steamwar.towerrun.countdowns.EndCountdown; import de.steamwar.towerrun.countdowns.LobbyCountdown; -import de.steamwar.towerrun.game.TowerRunGame; import de.steamwar.towerrun.generator.TowerGenerator; import de.steamwar.towerrun.listener.GlobalListener; import de.steamwar.towerrun.listener.IngameListener; @@ -72,7 +71,5 @@ public class TowerRun extends JavaPlugin { final LobbyCountdown lobbyCountdown = new LobbyCountdown(); new EndCountdown(lobbyCountdown); new StartCommand(lobbyCountdown); - - TowerRunGame.reset(); } } diff --git a/src/de/steamwar/towerrun/config/WorldConfig.java b/src/de/steamwar/towerrun/config/WorldConfig.java index 43b08f7..9b48e76 100644 --- a/src/de/steamwar/towerrun/config/WorldConfig.java +++ b/src/de/steamwar/towerrun/config/WorldConfig.java @@ -29,7 +29,6 @@ import lombok.Getter; import lombok.experimental.UtilityClass; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.util.Vector; @@ -163,7 +162,7 @@ public class WorldConfig { ACTIVE_WINCONDITIONS = config.getStringList("winconditions"); WINCONDITIONS.stream().filter(winCondition -> ACTIVE_WINCONDITIONS.contains(winCondition.getName())).forEach(winCondition -> winCondition.setActive(true)); - ConfigurationSection towerGeneratorSection = config.getConfigurationSection("towerGenerator"); + ConfigurationSection towerGeneratorSection = tower.getConfigurationSection("towerGenerator"); if (towerGeneratorSection == null) { TOWER_GENERATOR_CONFIG = null; } else { @@ -203,46 +202,12 @@ public class WorldConfig { public final int y; public final int z; public final SchematicType schematicType; - public final TowerGeneratorFillRegion[] FILL_REGIONS; public TowerGeneratorConfig(ConfigurationSection section) { x = section.getInt("x"); y = section.getInt("y"); z = section.getInt("z"); schematicType = SchematicType.fromDB(section.getString("schematicType")); - - ConfigurationSection fillRegionsSection = section.getConfigurationSection("fillRegions"); - if (fillRegionsSection != null) { - List fillRegions = fillRegionsSection.getKeys(false).stream() - .map(fillRegionsSection::getConfigurationSection) - .toList(); - - FILL_REGIONS = new TowerGeneratorFillRegion[fillRegions.size()]; - for (int i = 0; i < fillRegions.size(); i++) { - FILL_REGIONS[i] = new TowerGeneratorFillRegion(fillRegions.get(i)); - } - } else { - FILL_REGIONS = new TowerGeneratorFillRegion[0]; - } - } - } - - @Getter - public static final class TowerGeneratorFillRegion { - private final int minX; - private final int minZ; - private final int maxX; - private final int maxZ; - private final double percentage; - private final Material material; - - public TowerGeneratorFillRegion(ConfigurationSection section) { - minX = section.getInt("minX"); - minZ = section.getInt("minZ"); - maxX = section.getInt("maxX"); - maxZ = section.getInt("maxZ"); - percentage = section.getDouble("percentage"); - material = Material.valueOf(section.getString("material")); } } } diff --git a/src/de/steamwar/towerrun/countdowns/LobbyCountdown.java b/src/de/steamwar/towerrun/countdowns/LobbyCountdown.java index df8a5a0..35a1794 100644 --- a/src/de/steamwar/towerrun/countdowns/LobbyCountdown.java +++ b/src/de/steamwar/towerrun/countdowns/LobbyCountdown.java @@ -48,7 +48,6 @@ public class LobbyCountdown extends Countdown { @Override void timerEnd() { TowerRunGame.prepareTower(); - override = false; } @Override diff --git a/src/de/steamwar/towerrun/game/TowerRunGame.java b/src/de/steamwar/towerrun/game/TowerRunGame.java index 477d4e1..ec24426 100644 --- a/src/de/steamwar/towerrun/game/TowerRunGame.java +++ b/src/de/steamwar/towerrun/game/TowerRunGame.java @@ -65,10 +65,7 @@ public class TowerRunGame { private static void start() { if (GameState.getCurrentState() == GameStates.GENERATING_TOWER) { PLAYERS_ALIVE.addAll(TowerRunPlayer.getAll()); - PLAYERS_ALIVE.forEach(p -> { - p.reset(); - p.player().setGameMode(GameMode.SURVIVAL); - }); + PLAYERS_ALIVE.forEach(TowerRunPlayer::reset); GameState.nextState(); generateLava(); TowerRun.getMessage().broadcast("GAME_START"); @@ -128,11 +125,7 @@ public class TowerRunGame { resetWorld(); GameState.reset(); Bukkit.getOnlinePlayers().forEach(player -> { - if (TowerRun.getTowerGenerator() != null) { - player.setGameMode(GameMode.SPECTATOR); - } else { - player.setGameMode(GameMode.SURVIVAL); - } + player.setGameMode(GameMode.SURVIVAL); player.teleport(WorldConfig.SPAWN); }); } diff --git a/src/de/steamwar/towerrun/game/TowerRunPlayer.java b/src/de/steamwar/towerrun/game/TowerRunPlayer.java index b2ac89d..015073b 100644 --- a/src/de/steamwar/towerrun/game/TowerRunPlayer.java +++ b/src/de/steamwar/towerrun/game/TowerRunPlayer.java @@ -45,7 +45,7 @@ public record TowerRunPlayer(Player player) { public void reset() { if (TowerRun.getTowerGenerator() != null) { - player.teleport(WorldConfig.SPAWN.clone().add(0, TowerRun.getTowerGenerator().getHeight(), 0)); + player.teleport(WorldConfig.SPAWN.add(0, TowerRun.getTowerGenerator().getHeight(), 0)); } else { player.teleport(WorldConfig.SPAWN); } diff --git a/src/de/steamwar/towerrun/generator/TowerGenerator.java b/src/de/steamwar/towerrun/generator/TowerGenerator.java index 5df358f..f61a2fe 100644 --- a/src/de/steamwar/towerrun/generator/TowerGenerator.java +++ b/src/de/steamwar/towerrun/generator/TowerGenerator.java @@ -16,7 +16,6 @@ import de.steamwar.towerrun.TowerRun; import de.steamwar.towerrun.config.WorldConfig; import lombok.Getter; import org.bukkit.Bukkit; -import org.bukkit.block.Block; import org.bukkit.scheduler.BukkitRunnable; import java.io.File; @@ -29,7 +28,9 @@ import java.util.Random; public class TowerGenerator { private Random random = new Random(); - private WorldConfig.TowerGeneratorConfig config; + private int x; + private int y; + private int z; private List ALL_SCHEMATICS; private Clipboard roof; @@ -37,6 +38,10 @@ public class TowerGenerator { private int height; public TowerGenerator(WorldConfig.TowerGeneratorConfig config) { + this(config.x, config.y, config.z, config.schematicType); + } + + public TowerGenerator(int x, int y, int z, SchematicType schematicType) { File file = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "Roof.schem"); if (!file.exists()) { Bukkit.shutdown(); @@ -44,8 +49,10 @@ public class TowerGenerator { } roof = loadSchematic(file); - this.config = config; - ALL_SCHEMATICS = SchematicNode.getAllSchematicsOfType(config.schematicType); + this.x = x; + this.y = y; + this.z = z; + ALL_SCHEMATICS = SchematicNode.getAllSchematicsOfType(schematicType); } private Clipboard loadSchematic(File file) { @@ -62,7 +69,7 @@ public class TowerGenerator { public void generate(Runnable finishRunnable) { new BukkitRunnable() { int height = random.nextInt(50) + 200; - int y = TowerGenerator.this.config.y; + int y = TowerGenerator.this.y; { TowerGenerator.this.height = height; @@ -73,45 +80,25 @@ public class TowerGenerator { if (height > 0) { SchematicNode schematicNode = ALL_SCHEMATICS.get(random.nextInt(ALL_SCHEMATICS.size())); SchematicData schematicData = new SchematicData(schematicNode); - int currentY; try { Clipboard clipboard = schematicData.load(); try (EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(new BukkitWorld(Bukkit.getWorlds().get(0)), -1)) { ClipboardHolder ch = new ClipboardHolder(clipboard); - Operations.completeBlindly(ch.createPaste(e).to(BlockVector3.at(config.x, y, config.z)).build()); + Operations.completeBlindly(ch.createPaste(e).to(BlockVector3.at(x, y, z)).build()); } - currentY = y; y += clipboard.getDimensions().getY(); height -= clipboard.getDimensions().getY(); } catch (IOException e) { ALL_SCHEMATICS.remove(schematicNode); - return; - } - - for (WorldConfig.TowerGeneratorFillRegion fillRegion : config.FILL_REGIONS) { - for (int x = fillRegion.getMinX(); x < fillRegion.getMaxX(); x++) { - for (int z = fillRegion.getMinZ(); z < fillRegion.getMaxZ(); z++) { - for (int y = currentY; y < this.y; y++) { - Block block = Bukkit.getWorlds().get(0).getBlockAt(x, y, z); - if (!block.getType().isAir()) { - continue; - } - if (random.nextDouble() < fillRegion.getPercentage()) { - block.setType(fillRegion.getMaterial(), true); - } - } - } - } } } else { - cancel(); try (EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(new BukkitWorld(Bukkit.getWorlds().get(0)), -1)) { ClipboardHolder ch = new ClipboardHolder(roof); - Operations.completeBlindly(ch.createPaste(e).to(BlockVector3.at(config.x, y, config.z)).build()); + Operations.completeBlindly(ch.createPaste(e).to(BlockVector3.at(x, y, z)).build()); } finishRunnable.run(); } } - }.runTaskTimer(TowerRun.getInstance(), 0, 10); + }.runTaskTimer(TowerRun.getInstance(), 0, 1); } } diff --git a/src/de/steamwar/towerrun/listener/IngameListener.java b/src/de/steamwar/towerrun/listener/IngameListener.java index e084d45..7ba25dd 100644 --- a/src/de/steamwar/towerrun/listener/IngameListener.java +++ b/src/de/steamwar/towerrun/listener/IngameListener.java @@ -113,7 +113,7 @@ public class IngameListener extends GameStateBukkitListener { @EventHandler public void onPlayerRespawn(PlayerRespawnEvent event) { if (TowerRun.getTowerGenerator() != null) { - event.setRespawnLocation(WorldConfig.SPAWN.clone().add(0, TowerRun.getTowerGenerator().getHeight(), 0)); + event.setRespawnLocation(WorldConfig.SPAWN.add(0, TowerRun.getTowerGenerator().getHeight(), 0)); } else { event.setRespawnLocation(WorldConfig.SPAWN); } diff --git a/src/de/steamwar/towerrun/listener/LobbyListener.java b/src/de/steamwar/towerrun/listener/LobbyListener.java index d579ab3..b7542c1 100644 --- a/src/de/steamwar/towerrun/listener/LobbyListener.java +++ b/src/de/steamwar/towerrun/listener/LobbyListener.java @@ -23,7 +23,6 @@ import de.steamwar.towerrun.TowerRun; import de.steamwar.towerrun.config.WorldConfig; import de.steamwar.towerrun.state.GameStateBukkitListener; import de.steamwar.towerrun.state.GameStates; -import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; @@ -45,7 +44,7 @@ public class LobbyListener extends GameStateBukkitListener { public void onPlayerJoin(PlayerJoinEvent event) { Player player = event.getPlayer(); if (TowerRun.getTowerGenerator() != null) { - player.teleport(WorldConfig.SPAWN.clone().add(0, TowerRun.getTowerGenerator().getHeight(), 0)); + player.teleport(WorldConfig.SPAWN.add(0, TowerRun.getTowerGenerator().getHeight(), 0)); player.setGameMode(GameMode.SPECTATOR); } else { player.teleport(WorldConfig.SPAWN); @@ -55,9 +54,6 @@ public class LobbyListener extends GameStateBukkitListener { @EventHandler public void onPlayerMove(PlayerMoveEvent event) { - if (TowerRun.getTowerGenerator() != null) { - return; - } if(event.getTo().getY() < WorldConfig.SPAWN.getY() - 10) { event.getPlayer().teleport(WorldConfig.SPAWN); } diff --git a/src/de/steamwar/towerrun/listener/NotLobbyListener.java b/src/de/steamwar/towerrun/listener/NotLobbyListener.java index 4dacaf2..1784e47 100644 --- a/src/de/steamwar/towerrun/listener/NotLobbyListener.java +++ b/src/de/steamwar/towerrun/listener/NotLobbyListener.java @@ -38,7 +38,7 @@ public class NotLobbyListener extends GameStateBukkitListener { public void onPlayerJoin(PlayerJoinEvent event) { event.getPlayer().setGameMode(GameMode.SPECTATOR); if (TowerRun.getTowerGenerator() != null) { - event.getPlayer().teleport(WorldConfig.SPAWN.clone().add(0, TowerRun.getTowerGenerator().getHeight(), 0)); + event.getPlayer().teleport(WorldConfig.SPAWN.add(0, TowerRun.getTowerGenerator().getHeight(), 0)); } else { event.getPlayer().teleport(WorldConfig.SPAWN); } diff --git a/src/de/steamwar/towerrun/winconditions/WinCondition.java b/src/de/steamwar/towerrun/winconditions/WinCondition.java index 355f953..4a736dd 100644 --- a/src/de/steamwar/towerrun/winconditions/WinCondition.java +++ b/src/de/steamwar/towerrun/winconditions/WinCondition.java @@ -40,7 +40,7 @@ public abstract class WinCondition extends GameStateBukkitListener { @Override public void enable() { - if (!active) { + if (active) { super.enable(); } }