added playerrace and updated to version 26.2 #14

Merged
jannis merged 17 commits from develop-jannis into develop 2026-07-31 20:04:16 +00:00
11 changed files with 48 additions and 12 deletions
Showing only changes of commit 2c579f4afe - Show all commits
@@ -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.Dimension;
import eu.mhsl.minenet.minigames.instance.game.stateless.StatelessGame; import eu.mhsl.minenet.minigames.instance.game.stateless.StatelessGame;
import eu.mhsl.minenet.minigames.score.LastWinsScore; 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.coordinate.Pos;
import net.minestom.server.entity.GameMode; import net.minestom.server.entity.GameMode;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.event.player.PlayerMoveEvent; 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 org.jetbrains.annotations.NotNull;
import java.util.concurrent.CompletableFuture;
public class PlayerRace extends StatelessGame { public class PlayerRace extends StatelessGame {
private final int height = 64; private final int height = 64;
private double zLine = 32; private double zLine = 32;
private double zSpawnPoint = 14.5; private double zSpawnPoint = 14.5;
private final int obstacleCount;
public PlayerRace(int obstacleCount) { public PlayerRace(int obstacleCount) {
super(Dimension.THE_END.key, "PlayerRace", new LastWinsScore()); super(Dimension.THE_END.key, "PlayerRace", new LastWinsScore());
this.setGenerator(new PlayerRaceChunkgenerator(this.height, obstacleCount)); this.setGenerator(new PlayerRaceChunkgenerator(this.height, obstacleCount));
this.obstacleCount = obstacleCount;
} }
@Override @Override
@@ -25,8 +33,28 @@ public class PlayerRace extends StatelessGame {
return false; return false;
} }
@Override
protected void onLoad(@NotNull CompletableFuture<Void> 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 @Override
public Pos getSpawn() { 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); 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) { protected void onPlayerMove(@NotNull PlayerMoveEvent playerMoveEvent) {
var player = playerMoveEvent.getPlayer(); var player = playerMoveEvent.getPlayer();
if(playerMoveEvent.getNewPosition().y() < this.height - 5) 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.zLine += 19;
this.zSpawnPoint += 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());
} }
} }
@@ -52,7 +52,7 @@ public class PlayerRaceChunkgenerator extends BaseGenerator {
private static Block groundBlockAt(int z, int finishStart, int finishEnd) { private static Block groundBlockAt(int z, int finishStart, int finishEnd) {
if(z < 0 || z >= finishEnd) return null; 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; if(z >= finishStart) return Block.DIAMOND_BLOCK;
int relative = (z - START_LENGTH) % PERIOD; int relative = (z - START_LENGTH) % PERIOD;
@@ -13,7 +13,7 @@ import java.util.Random;
*/ */
class BasaltPillars extends Obstacle { class BasaltPillars extends Obstacle {
private final JNoise ground = JNoise.newBuilder() private final JNoise ground = JNoise.newBuilder()
.fastSimplex() .perlin()
.setFrequency(0.13) .setFrequency(0.13)
.build(); .build();
@@ -13,7 +13,7 @@ import java.util.Random;
*/ */
class CobwebGrove extends Obstacle { class CobwebGrove extends Obstacle {
private final JNoise soil = JNoise.newBuilder() private final JNoise soil = JNoise.newBuilder()
.fastSimplex() .perlin()
.setFrequency(0.12) .setFrequency(0.12)
.build(); .build();
@@ -13,7 +13,7 @@ import java.util.Random;
*/ */
class HoneyField extends Obstacle { class HoneyField extends Obstacle {
private final JNoise sticky = JNoise.newBuilder() private final JNoise sticky = JNoise.newBuilder()
.fastSimplex() .perlin()
.setFrequency(0.2) .setFrequency(0.2)
.build(); .build();
@@ -13,7 +13,7 @@ import java.util.Random;
*/ */
class IceRink extends Obstacle { class IceRink extends Obstacle {
private final JNoise streaks = JNoise.newBuilder() private final JNoise streaks = JNoise.newBuilder()
.fastSimplex() .perlin()
.setFrequency(0.15) .setFrequency(0.15)
.build(); .build();
@@ -14,7 +14,7 @@ import java.util.Random;
*/ */
class MudPools extends Obstacle { class MudPools extends Obstacle {
private final JNoise pools = JNoise.newBuilder() private final JNoise pools = JNoise.newBuilder()
.fastSimplex() .perlin()
.setFrequency(0.11) .setFrequency(0.11)
.build(); .build();
@@ -7,7 +7,7 @@ import net.minestom.server.instance.generator.GenerationUnit;
class Mudpit extends Obstacle { class Mudpit extends Obstacle {
private final JNoise curves = JNoise.newBuilder() private final JNoise curves = JNoise.newBuilder()
.fastSimplex() .perlin()
.setFrequency(0.1) .setFrequency(0.1)
.build(); .build();
@@ -16,7 +16,7 @@ import java.util.Random;
*/ */
class PowderSnowField extends Obstacle { class PowderSnowField extends Obstacle {
private final JNoise drifts = JNoise.newBuilder() private final JNoise drifts = JNoise.newBuilder()
.fastSimplex() .perlin()
.setFrequency(0.14) .setFrequency(0.14)
.build(); .build();
@@ -13,7 +13,7 @@ import java.util.Random;
*/ */
class SandDunes extends Obstacle { class SandDunes extends Obstacle {
private final JNoise dunes = JNoise.newBuilder() private final JNoise dunes = JNoise.newBuilder()
.fastSimplex() .perlin()
.setFrequency(0.08) .setFrequency(0.08)
.build(); .build();
@@ -13,7 +13,7 @@ import java.util.Random;
*/ */
class SlimePatches extends Obstacle { class SlimePatches extends Obstacle {
private final JNoise blobs = JNoise.newBuilder() private final JNoise blobs = JNoise.newBuilder()
.fastSimplex() .perlin()
.setFrequency(0.18) .setFrequency(0.18)
.build(); .build();