From cc371a9c12c15213115d203e227dae32c12c25db Mon Sep 17 00:00:00 2001
From: Hannes Frommann <hannes.frommann09@gmail.com>
Date: Sat, 2 Nov 2024 21:53:17 +0100
Subject: [PATCH] Test game

---
 build.gradle                                  |  2 +-
 .../minigames/instance/game/GameList.java     |  5 +-
 .../stateless/types/deathcube/Deathcube.java  |  1 +
 .../game/stateless/types/test/Test.java       | 47 +++++++++++++++++++
 .../stateless/types/test/TestFactory.java     | 22 +++++++++
 5 files changed, 75 insertions(+), 2 deletions(-)
 create mode 100644 src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/test/Test.java
 create mode 100644 src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/test/TestFactory.java

diff --git a/build.gradle b/build.gradle
index 6607b2c..3272b6a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -59,7 +59,7 @@ dependencies {
 
 
     //PvP
-    implementation 'com.github.TogAr2:MinestomPvP:0a5f94bcd7'
+    implementation 'com.github.TogAr2:MinestomPvP:04180ddf9a'
 
     // Hephaestus engine
     implementation("team.unnamed:hephaestus-api:0.2.1-SNAPSHOT")
diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/GameList.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/GameList.java
index f8bbc35..5c0cc63 100644
--- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/GameList.java
+++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/GameList.java
@@ -11,6 +11,8 @@ import eu.mhsl.minenet.minigames.instance.game.stateless.types.deathcube.Deathcu
 import eu.mhsl.minenet.minigames.instance.game.stateless.types.minerun.MinerunFactory;
 import eu.mhsl.minenet.minigames.instance.game.stateless.types.spleef.SpleefFactory;
 import eu.mhsl.minenet.minigames.instance.game.stateless.types.stickfight.StickFightFactory;
+import eu.mhsl.minenet.minigames.instance.game.stateless.types.test.Test;
+import eu.mhsl.minenet.minigames.instance.game.stateless.types.test.TestFactory;
 import eu.mhsl.minenet.minigames.instance.game.stateless.types.tntrun.TntRunFactory;
 import eu.mhsl.minenet.minigames.instance.game.stateless.types.towerdefense.TowerdefenseFactory;
 import eu.mhsl.minenet.minigames.instance.game.stateless.types.trafficlightrace.TrafficLightRaceFactory;
@@ -28,7 +30,8 @@ public enum GameList {
     ANVILRUN(new AnvilRunFactory(), GameType.PVE),
     ELYTRARACE(new ElytraRaceFactory(), GameType.PVP),
     SPLEEF(new SpleefFactory(), GameType.PVP),
-    BOWSPLEEF(new BowSpleefFactory(), GameType.PVP);
+    BOWSPLEEF(new BowSpleefFactory(), GameType.PVP),
+    Test(new TestFactory(), GameType.OTHER);
 
     private final GameFactory factory;
     private final GameType type;
diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/deathcube/Deathcube.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/deathcube/Deathcube.java
index fc79e93..73bcd03 100644
--- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/deathcube/Deathcube.java
+++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/deathcube/Deathcube.java
@@ -7,6 +7,7 @@ import eu.mhsl.minenet.minigames.instance.Dimension;
 import eu.mhsl.minenet.minigames.world.BlockPallet;
 import eu.mhsl.minenet.minigames.world.generator.terrain.CircularPlateTerrainGenerator;
 import net.minestom.server.coordinate.Pos;
+import net.minestom.server.entity.Player;
 import net.minestom.server.event.player.PlayerMoveEvent;
 import net.minestom.server.instance.batch.AbsoluteBlockBatch;
 import org.jetbrains.annotations.NotNull;
diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/test/Test.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/test/Test.java
new file mode 100644
index 0000000..ecf8b94
--- /dev/null
+++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/test/Test.java
@@ -0,0 +1,47 @@
+package eu.mhsl.minenet.minigames.instance.game.stateless.types.test;
+
+import eu.mhsl.minenet.minigames.instance.Dimension;
+import eu.mhsl.minenet.minigames.instance.game.stateless.StatelessGame;
+import eu.mhsl.minenet.minigames.score.FirstWinsScore;
+import net.minestom.server.coordinate.Pos;
+import net.minestom.server.event.player.PlayerBlockInteractEvent;
+import net.minestom.server.instance.block.Block;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.concurrent.CompletableFuture;
+
+public class Test extends StatelessGame {
+
+    int zähler = 0;
+
+    public Test() {
+        super(Dimension.THE_END.key, "test", new FirstWinsScore());
+        eventNode().addListener(PlayerBlockInteractEvent.class, event -> {
+            if (!isBeforeBeginning) {
+                zähler++;
+            }
+            if (zähler >= 10) {
+                getScore().insertResult(event.getPlayer());
+                System.out.println("Sieg");
+            }
+        });
+
+    }
+
+    @Override
+    protected void onLoad(@NotNull CompletableFuture<Void> callback) {
+        for(int x = 0; x <= 10; x++) {
+            for(int z = 0; z <= 10; z++) {
+                setBlock(x, 0, z, Block.BEDROCK);
+            }
+        }
+        setBlock(3,1,6, Block.BIRCH_BUTTON.withProperty("face", "floor"));
+    }
+
+
+
+    @Override
+    public Pos getSpawn() {
+        return  new Pos(5, 3, 5);
+    }
+}
diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/test/TestFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/test/TestFactory.java
new file mode 100644
index 0000000..95da72c
--- /dev/null
+++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/test/TestFactory.java
@@ -0,0 +1,22 @@
+package eu.mhsl.minenet.minigames.instance.game.stateless.types.test;
+
+import eu.mhsl.minenet.minigames.instance.game.Game;
+import eu.mhsl.minenet.minigames.instance.game.stateless.config.GameFactory;
+import eu.mhsl.minenet.minigames.instance.game.stateless.config.Option;
+import eu.mhsl.minenet.minigames.instance.room.Room;
+import eu.mhsl.minenet.minigames.message.component.TranslatedComponent;
+import net.kyori.adventure.text.Component;
+
+import java.util.Map;
+
+public class TestFactory implements GameFactory {
+    @Override
+    public TranslatedComponent name() {
+        return TranslatedComponent.byId("test");
+    }
+
+    @Override
+    public Game manufacture(Room parent, Map<String, Option<?>> configuration) throws Exception {
+        return new Test().setParent(parent);
+    }
+}