made tetris spectators invisible, added barrier walls to elytra race

This commit is contained in:
Lars Neuhaus 2024-11-04 21:53:54 +01:00
parent 55be88b7da
commit e663f3f105
4 changed files with 19 additions and 11 deletions

View File

@ -11,6 +11,7 @@ import eu.mhsl.minenet.minigames.instance.Spawnable;
import eu.mhsl.minenet.minigames.instance.room.Room; import eu.mhsl.minenet.minigames.instance.room.Room;
import net.minestom.server.MinecraftServer; import net.minestom.server.MinecraftServer;
import net.minestom.server.coordinate.Pos; import net.minestom.server.coordinate.Pos;
import net.minestom.server.entity.GameMode;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.event.item.ItemDropEvent; import net.minestom.server.event.item.ItemDropEvent;
import net.minestom.server.event.player.PlayerBlockBreakEvent; import net.minestom.server.event.player.PlayerBlockBreakEvent;
@ -98,7 +99,11 @@ public abstract class Game extends MineNetInstance implements Spawnable {
public void unload() { public void unload() {
this.onUnload(); this.onUnload();
getPlayers().forEach(Room::setOwnRoom); getPlayers().forEach(player -> {
Room.setOwnRoom(player);
player.setGameMode(GameMode.SURVIVAL);
player.setInvisible(false);
});
scheduler().scheduleTask(() -> { scheduler().scheduleTask(() -> {

View File

@ -39,6 +39,7 @@ public class ElytraRace extends StatelessGame {
private final ValeGenerator vale = new ValeGenerator(); private final ValeGenerator vale = new ValeGenerator();
private final int gameHeight = 0; private final int gameHeight = 0;
private final int seaLevel = -55;
private final int ringSpacing = 100; private final int ringSpacing = 100;
private final int ringCount; private final int ringCount;
@ -61,7 +62,7 @@ public class ElytraRace extends StatelessGame {
this.ringCount = ringCount; this.ringCount = ringCount;
setGenerator(vale); setGenerator(vale);
vale.setCalculateSeaLevel(point -> -55); vale.setCalculateSeaLevel(point -> seaLevel);
vale.setXShiftMultiplier(integer -> NumberUtil.map(integer, 50, 500, 0, 1)); vale.setXShiftMultiplier(integer -> NumberUtil.map(integer, 50, 500, 0, 1));
vale.addMixIn(new PlaneTerrainGenerator(gameHeight, Block.BARRIER)); vale.addMixIn(new PlaneTerrainGenerator(gameHeight, Block.BARRIER));
@ -105,9 +106,7 @@ public class ElytraRace extends StatelessGame {
@Override @Override
protected void onLoad(@NotNull CompletableFuture<Void> callback) { protected void onLoad(@NotNull CompletableFuture<Void> callback) {
Point spawnpoint = new Pos(vale.getXShiftAtZ(0), -46, 0); Point spawnpoint = new Pos(vale.getXShiftAtZ(0), -46, 0);
GeneratorUtils.iterateArea(spawnpoint.sub(5, 0, 5), spawnpoint.add(5, 0, 5), point -> { GeneratorUtils.iterateArea(spawnpoint.sub(5, 0, 5), spawnpoint.add(5, 0, 5), point -> setBlock(point, BlockPallet.STREET.rnd()));
setBlock(point, BlockPallet.STREET.rnd());
});
generateRing(ringSpacing); generateRing(ringSpacing);
generateRing(ringSpacing * 2); generateRing(ringSpacing * 2);
@ -194,8 +193,8 @@ public class ElytraRace extends StatelessGame {
Point ringPos = getRingPositionAtZ(zPos); Point ringPos = getRingPositionAtZ(zPos);
GeneratorUtils.iterateArea( GeneratorUtils.iterateArea(
ringPos.sub(100, 0, 0).withY(0), // TODO 0 was before update getDimensionType().getMinY, might not work correctly ringPos.sub(100, 0, 0).withY(0),
ringPos.add(100, 0, 0).withY(gameHeight), ringPos.add(100, 0, 0).withY(seaLevel),
point -> batch.setBlock(point, Block.BARRIER) point -> batch.setBlock(point, Block.BARRIER)
); );
GeneratorUtils.iterateArea( GeneratorUtils.iterateArea(

View File

@ -61,9 +61,11 @@ class Tetris extends StatelessGame {
@Override @Override
protected void onStop() { protected void onStop() {
this.tetrisGames.forEach((player, tetrisGame) -> tetrisGame.loose()); this.tetrisGames.forEach((player, tetrisGame) -> {
this.tetrisGames.forEach((player, tetrisGame) -> getScore().insertResult(player, tetrisGame.getScore())); tetrisGame.loose();
this.tetrisGames.forEach((player, tetrisGame) -> tetrisGame.sidebar.removeViewer(player)); getScore().insertResult(player, tetrisGame.getScore());
tetrisGame.sidebar.removeViewer(player);
});
} }
@Override @Override
@ -136,6 +138,7 @@ class Tetris extends StatelessGame {
private void letPlayerLoose(Player player) { private void letPlayerLoose(Player player) {
TetrisGame tetrisGame = this.tetrisGames.get(player); TetrisGame tetrisGame = this.tetrisGames.get(player);
player.setGameMode(GameMode.SPECTATOR); player.setGameMode(GameMode.SPECTATOR);
player.setInvisible(true);
getScore().insertResult(player, tetrisGame.getScore()); getScore().insertResult(player, tetrisGame.getScore());
boolean allGamesLost = this.tetrisGames.values().stream() boolean allGamesLost = this.tetrisGames.values().stream()

View File

@ -18,3 +18,4 @@ api:
admins: admins:
- minetec - minetec
- 28Pupsi28