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
3 changed files with 82 additions and 12 deletions
Showing only changes of commit b7e292fe0e - Show all commits
@@ -4,26 +4,25 @@ 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 net.minestom.server.coordinate.Pos; import net.minestom.server.coordinate.Pos;
import net.minestom.server.instance.batch.AbsoluteBlockBatch; import net.minestom.server.event.player.PlayerMoveEvent;
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;
public PlayerRace() { public PlayerRace() {
super(Dimension.THE_END.key, "PlayerRace", new LastWinsScore()); super(Dimension.THE_END.key, "PlayerRace", new LastWinsScore());
this.setGenerator(new PlayerRaceChunkgenerator(64)); this.setGenerator(new PlayerRaceChunkgenerator(this.height));
}
@Override
protected void onLoad(@NotNull CompletableFuture<Void> callback) {
this.setBlock(0, 100, 0, Block.AMETHYST_BLOCK);
} }
@Override @Override
public Pos getSpawn() { 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());
}
} }
@@ -0,0 +1,71 @@
package eu.mhsl.minenet.minigames.instance.game.stateless.types.playerRace.obstacles;
import net.minestom.server.coordinate.Point;
import net.minestom.server.instance.block.Block;
import net.minestom.server.instance.generator.GenerationUnit;
import java.util.Random;
public class LadderWall extends Obstacle{
@Override
public void generate(GenerationUnit unit, Point start) {
int y = start.blockY() + 64;
int width = 16;
int depth = 16;
for(int x = 0; x < width; x++) {
for(int z = 0; z < depth; z++) {
unit.modifier().setRelative(x, y, z, Block.LIGHT_BLUE_CONCRETE);
}
}
this.buildWall(unit, y, 4, 4, false);
this.buildWall(unit, y,10, 8, true);
}
private void buildWall(GenerationUnit unit, int y, int z, int height, boolean lastRow) {
Random random = new Random();
y += 1;
for(int x = 0; x < 16; x++) {
for(int wy = 0; wy <= height; wy++) {
unit.modifier().setRelative(x, y + wy, z, Block.LIGHT_BLUE_CONCRETE);
}
}
if(lastRow) {
for(int wy = 2; wy <= height; wy++) {
int[] noLadder = new int[5];
for(int i = 0; i < 5; i++) {
noLadder[i] = random.nextInt(16);
}
for(int x = 0; x < 16; x++) {
if(!this.isInArray(x, noLadder))
unit.modifier().setRelative(x, y + wy, z - 1, Block.LADDER);
}
}
}else {
for(int wy = 0; wy <= height; wy++) {
int[] noLadder = new int[5];
for(int i = 0; i < 5; i++) {
noLadder[i] = random.nextInt(16);
}
for(int x = 0; x < 16; x++) {
if(!this.isInArray(x, noLadder))
unit.modifier().setRelative(x, y + wy, z - 1, Block.LADDER);
}
for(int x = 7; x < 9; x++) {
unit.modifier().setRelative(x, y + wy, z + 1, Block.LADDER.withProperty("facing", "south"));
}
}
}
}
private boolean isInArray(int number, int[] array) {
for(int value : array) if(value == number) return true;
return false;
}
}
@@ -8,7 +8,7 @@ import java.util.concurrent.ThreadLocalRandom;
public abstract class Obstacle { public abstract class Obstacle {
@SuppressWarnings("StaticInitializerReferencesSubClass") @SuppressWarnings("StaticInitializerReferencesSubClass")
private static final List<Obstacle> obstacles = List.of(new Mudpit()); private static final List<Obstacle> obstacles = List.of(new Mudpit(), new LadderWall());
public abstract void generate(GenerationUnit unit, Point start); public abstract void generate(GenerationUnit unit, Point start);