diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/PlayerRace.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/PlayerRace.java index 73bc8e7..c789811 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/PlayerRace.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/PlayerRace.java @@ -4,25 +4,26 @@ import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.instance.game.stateless.StatelessGame; import eu.mhsl.minenet.minigames.score.LastWinsScore; import net.minestom.server.coordinate.Pos; -import net.minestom.server.instance.block.Block; +import net.minestom.server.event.player.PlayerMoveEvent; import org.jetbrains.annotations.NotNull; -import java.util.concurrent.CompletableFuture; - public class PlayerRace extends StatelessGame { + private final int height = 64; + public PlayerRace(int obstacleCount) { super(Dimension.THE_END.key, "PlayerRace", new LastWinsScore()); - this.setGenerator(new PlayerRaceChunkgenerator(64, obstacleCount)); - } - - @Override - protected void onLoad(@NotNull CompletableFuture callback) { - this.setBlock(0, 100, 0, Block.AMETHYST_BLOCK); + this.setGenerator(new PlayerRaceChunkgenerator(this.height, obstacleCount)); } @Override public Pos getSpawn() { - return new Pos(0.5, 101.5, 0.5); + return new Pos(8, this.height + 1.5, 8); } + @Override + protected void onPlayerMove(@NotNull PlayerMoveEvent playerMoveEvent) { + var player = playerMoveEvent.getPlayer(); + if(playerMoveEvent.getNewPosition().y() < this.height - 5) + player.teleport(this.getSpawn()); + } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/LadderWall.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/LadderWall.java index 4e2e9ab..5fe3299 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/LadderWall.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/LadderWall.java @@ -9,7 +9,8 @@ import java.util.Random; /** * Alte Festungsmauer quer über die Strecke: Drei Blöcke hoch, zu hoch zum - * Springen — auf beiden Seiten hängen Leitern zum Drüberklettern. + * Springen — nur an manchen Säulen hängen Leitern, den Aufstieg muss man + * erst finden. Auf der Rückseite geht es überall hinunter. */ class LadderWall extends Obstacle { @Override @@ -20,12 +21,15 @@ class LadderWall extends Obstacle { unit.modifier().setBlock(point.withY(start.blockY()), BlockPallet.STONE.rnd())); for(int x = 0; x < 16; x++) { + boolean hasLadder = rnd.nextInt(3) != 0; for(int y = 1; y <= 3; y++) { for(int z = 7; z <= 8; z++) { Block block = rnd.nextInt(3) == 0 ? Block.MOSSY_STONE_BRICKS : Block.STONE_BRICKS; unit.modifier().setBlock(start.add(x, y, z), block); } - unit.modifier().setBlock(start.add(x, y, 6), Block.LADDER.withProperty("facing", "north")); + if(hasLadder) { + unit.modifier().setBlock(start.add(x, y, 6), Block.LADDER.withProperty("facing", "north")); + } unit.modifier().setBlock(start.add(x, y, 9), Block.LADDER.withProperty("facing", "south")); }