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.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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -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;
|
||||||
|
|||||||
+1
-1
@@ -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();
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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();
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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();
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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();
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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();
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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();
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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();
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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();
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -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();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user