added playerrace and updated to version 26.2 #14
+38
-2
@@ -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<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
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ import java.util.Random;
|
||||
*/
|
||||
class BasaltPillars extends Obstacle {
|
||||
private final JNoise ground = JNoise.newBuilder()
|
||||
.fastSimplex()
|
||||
.perlin()
|
||||
.setFrequency(0.13)
|
||||
.build();
|
||||
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ import java.util.Random;
|
||||
*/
|
||||
class CobwebGrove extends Obstacle {
|
||||
private final JNoise soil = JNoise.newBuilder()
|
||||
.fastSimplex()
|
||||
.perlin()
|
||||
.setFrequency(0.12)
|
||||
.build();
|
||||
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ import java.util.Random;
|
||||
*/
|
||||
class HoneyField extends Obstacle {
|
||||
private final JNoise sticky = JNoise.newBuilder()
|
||||
.fastSimplex()
|
||||
.perlin()
|
||||
.setFrequency(0.2)
|
||||
.build();
|
||||
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ import java.util.Random;
|
||||
*/
|
||||
class IceRink extends Obstacle {
|
||||
private final JNoise streaks = JNoise.newBuilder()
|
||||
.fastSimplex()
|
||||
.perlin()
|
||||
.setFrequency(0.15)
|
||||
.build();
|
||||
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ import java.util.Random;
|
||||
*/
|
||||
class MudPools extends Obstacle {
|
||||
private final JNoise pools = JNoise.newBuilder()
|
||||
.fastSimplex()
|
||||
.perlin()
|
||||
.setFrequency(0.11)
|
||||
.build();
|
||||
|
||||
|
||||
+1
-1
@@ -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();
|
||||
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ import java.util.Random;
|
||||
*/
|
||||
class PowderSnowField extends Obstacle {
|
||||
private final JNoise drifts = JNoise.newBuilder()
|
||||
.fastSimplex()
|
||||
.perlin()
|
||||
.setFrequency(0.14)
|
||||
.build();
|
||||
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ import java.util.Random;
|
||||
*/
|
||||
class SandDunes extends Obstacle {
|
||||
private final JNoise dunes = JNoise.newBuilder()
|
||||
.fastSimplex()
|
||||
.perlin()
|
||||
.setFrequency(0.08)
|
||||
.build();
|
||||
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ import java.util.Random;
|
||||
*/
|
||||
class SlimePatches extends Obstacle {
|
||||
private final JNoise blobs = JNoise.newBuilder()
|
||||
.fastSimplex()
|
||||
.perlin()
|
||||
.setFrequency(0.18)
|
||||
.build();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user