From 2c579f4afe81a20fc2e70251e8da9b5d355ee12c Mon Sep 17 00:00:00 2001 From: jannis Date: Sun, 19 Jul 2026 01:11:56 +0200 Subject: [PATCH] fixen generating problem and finished logic of playerrace --- .../types/playerRace/PlayerRace.java | 40 ++++++++++++++++++- .../playerRace/PlayerRaceChunkgenerator.java | 2 +- .../playerRace/obstacles/BasaltPillars.java | 2 +- .../playerRace/obstacles/CobwebGrove.java | 2 +- .../playerRace/obstacles/HoneyField.java | 2 +- .../types/playerRace/obstacles/IceRink.java | 2 +- .../types/playerRace/obstacles/MudPools.java | 2 +- .../types/playerRace/obstacles/Mudpit.java | 2 +- .../playerRace/obstacles/PowderSnowField.java | 2 +- .../types/playerRace/obstacles/SandDunes.java | 2 +- .../playerRace/obstacles/SlimePatches.java | 2 +- 11 files changed, 48 insertions(+), 12 deletions(-) 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 d991d3f..aaab347 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 @@ -3,20 +3,28 @@ package eu.mhsl.minenet.minigames.instance.game.stateless.types.playerRace; import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.instance.game.stateless.StatelessGame; import eu.mhsl.minenet.minigames.score.LastWinsScore; +import eu.mhsl.minenet.minigames.util.BatchUtil; +import eu.mhsl.minenet.minigames.util.CommonProperties; import net.minestom.server.coordinate.Pos; import net.minestom.server.entity.GameMode; import net.minestom.server.entity.Player; import net.minestom.server.event.player.PlayerMoveEvent; +import net.minestom.server.instance.batch.AbsoluteBlockBatch; +import net.minestom.server.instance.block.Block; import org.jetbrains.annotations.NotNull; +import java.util.concurrent.CompletableFuture; + public class PlayerRace extends StatelessGame { private final int height = 64; private double zLine = 32; private double zSpawnPoint = 14.5; + private final int obstacleCount; public PlayerRace(int obstacleCount) { super(Dimension.THE_END.key, "PlayerRace", new LastWinsScore()); this.setGenerator(new PlayerRaceChunkgenerator(this.height, obstacleCount)); + this.obstacleCount = obstacleCount; } @Override @@ -25,8 +33,28 @@ public class PlayerRace extends StatelessGame { return false; } + @Override + protected void onLoad(@NotNull CompletableFuture callback) { + AbsoluteBlockBatch batch = new AbsoluteBlockBatch(); + for(int x = 0; x < 16; x++) { + batch.setBlock(x,this.height + 1, 15, Block.OAK_FENCE.withProperties(CommonProperties.fenceEastWest)); + }BatchUtil.loadAndApplyBatch(batch, this, () -> callback.complete(null)); + } + + @Override + protected void onStart() { + AbsoluteBlockBatch batch = new AbsoluteBlockBatch(); + for(int x = 0; x < 16; x++) { + batch.setBlock(x,this.height + 1, 15, Block.AIR); + }BatchUtil.loadAndApplyBatch(batch, this, () -> {}); + } + @Override public Pos getSpawn() { + return new Pos(8, this.height + 1.5, 8); + } + + public Pos getNewSpawn() { return new Pos(8, this.height + 1.5, this.zSpawnPoint); } @@ -34,11 +62,19 @@ public class PlayerRace extends StatelessGame { protected void onPlayerMove(@NotNull PlayerMoveEvent playerMoveEvent) { var player = playerMoveEvent.getPlayer(); if(playerMoveEvent.getNewPosition().y() < this.height - 5) - player.teleport(this.getSpawn()); + player.teleport(this.isBeforeBeginning ? this.getSpawn() : this.getNewSpawn()); - if(playerMoveEvent.getNewPosition().z() >= this.zLine) { + if(playerMoveEvent.getNewPosition().z() >= this.zLine && this.isRunning) { this.zLine += 19; this.zSpawnPoint += 19; } + + if(playerMoveEvent.getNewPosition().z() >= 16 + this.obstacleCount * 19 && this.isRunning) { + this.getScore().insertResult(player); + player.setGameMode(GameMode.SPECTATOR); + } + + if(playerMoveEvent.getNewPosition().z() >= 16 && this.isBeforeBeginning) + player.teleport(this.getSpawn()); } } diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/PlayerRaceChunkgenerator.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/PlayerRaceChunkgenerator.java index d8b5704..16342cb 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/PlayerRaceChunkgenerator.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/PlayerRaceChunkgenerator.java @@ -52,7 +52,7 @@ public class PlayerRaceChunkgenerator extends BaseGenerator { private static Block groundBlockAt(int z, int finishStart, int finishEnd) { if(z < 0 || z >= finishEnd) return null; - if(z < START_LENGTH) return Block.AMETHYST_BLOCK; + if(z < START_LENGTH) return BlockPallet.GROUND.rnd(); if(z >= finishStart) return Block.DIAMOND_BLOCK; int relative = (z - START_LENGTH) % PERIOD; diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/BasaltPillars.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/BasaltPillars.java index fdf6208..54743b3 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/BasaltPillars.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/BasaltPillars.java @@ -13,7 +13,7 @@ import java.util.Random; */ class BasaltPillars extends Obstacle { private final JNoise ground = JNoise.newBuilder() - .fastSimplex() + .perlin() .setFrequency(0.13) .build(); diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/CobwebGrove.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/CobwebGrove.java index 39f77e9..10651ea 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/CobwebGrove.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/CobwebGrove.java @@ -13,7 +13,7 @@ import java.util.Random; */ class CobwebGrove extends Obstacle { private final JNoise soil = JNoise.newBuilder() - .fastSimplex() + .perlin() .setFrequency(0.12) .build(); diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/HoneyField.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/HoneyField.java index 2833dbb..da1b1be 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/HoneyField.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/HoneyField.java @@ -13,7 +13,7 @@ import java.util.Random; */ class HoneyField extends Obstacle { private final JNoise sticky = JNoise.newBuilder() - .fastSimplex() + .perlin() .setFrequency(0.2) .build(); diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/IceRink.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/IceRink.java index 719bf13..5ed28c8 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/IceRink.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/IceRink.java @@ -13,7 +13,7 @@ import java.util.Random; */ class IceRink extends Obstacle { private final JNoise streaks = JNoise.newBuilder() - .fastSimplex() + .perlin() .setFrequency(0.15) .build(); diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/MudPools.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/MudPools.java index e7c1abd..38877e5 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/MudPools.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/MudPools.java @@ -14,7 +14,7 @@ import java.util.Random; */ class MudPools extends Obstacle { private final JNoise pools = JNoise.newBuilder() - .fastSimplex() + .perlin() .setFrequency(0.11) .build(); diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/Mudpit.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/Mudpit.java index 5492106..6979019 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/Mudpit.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/Mudpit.java @@ -7,7 +7,7 @@ import net.minestom.server.instance.generator.GenerationUnit; class Mudpit extends Obstacle { private final JNoise curves = JNoise.newBuilder() - .fastSimplex() + .perlin() .setFrequency(0.1) .build(); diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/PowderSnowField.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/PowderSnowField.java index d566f35..bfa9f21 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/PowderSnowField.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/PowderSnowField.java @@ -16,7 +16,7 @@ import java.util.Random; */ class PowderSnowField extends Obstacle { private final JNoise drifts = JNoise.newBuilder() - .fastSimplex() + .perlin() .setFrequency(0.14) .build(); diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/SandDunes.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/SandDunes.java index 7e87c93..aa7ee72 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/SandDunes.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/SandDunes.java @@ -13,7 +13,7 @@ import java.util.Random; */ class SandDunes extends Obstacle { private final JNoise dunes = JNoise.newBuilder() - .fastSimplex() + .perlin() .setFrequency(0.08) .build(); diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/SlimePatches.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/SlimePatches.java index fe253a9..2de92ce 100644 --- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/SlimePatches.java +++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/playerRace/obstacles/SlimePatches.java @@ -13,7 +13,7 @@ import java.util.Random; */ class SlimePatches extends Obstacle { private final JNoise blobs = JNoise.newBuilder() - .fastSimplex() + .perlin() .setFrequency(0.18) .build();