From f04f1b33e3d61d06aae8dbad2742a6822bc9b4f6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Elias=20M=C3=BCller?= <elias@elias-mueller.com>
Date: Mon, 23 Dec 2024 23:55:30 +0100
Subject: [PATCH] added transfer, updated adress

---
 .../privileged/PublishRewardCommand.java      |  2 +-
 .../handler/global/PlayerLoginHandler.java    | 16 ++++++++++----
 .../minigames/instance/transfer/Transfer.java | 22 +++++++++++++++++++
 3 files changed, 35 insertions(+), 5 deletions(-)
 create mode 100644 src/main/java/eu/mhsl/minenet/minigames/instance/transfer/Transfer.java

diff --git a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/PublishRewardCommand.java b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/PublishRewardCommand.java
index b72ea14..3313581 100644
--- a/src/main/java/eu/mhsl/minenet/minigames/command/privileged/PublishRewardCommand.java
+++ b/src/main/java/eu/mhsl/minenet/minigames/command/privileged/PublishRewardCommand.java
@@ -24,7 +24,7 @@ public class PublishRewardCommand extends PrivilegedCommand {
 
                 String rewardRequestJson = new Gson().toJson(room.getTournament().getRewards());
                 HttpRequest giveRewardsRequest = HttpRequest.newBuilder()
-                        .uri(new URI("http://10.20.6.1:8080/api/event/reward"))
+                        .uri(new URI("http://10.20.7.1:8080/api/event/reward"))
                         .POST(HttpRequest.BodyPublishers.ofString(rewardRequestJson))
                         .build();
 
diff --git a/src/main/java/eu/mhsl/minenet/minigames/handler/global/PlayerLoginHandler.java b/src/main/java/eu/mhsl/minenet/minigames/handler/global/PlayerLoginHandler.java
index 5361bb4..1d81fda 100644
--- a/src/main/java/eu/mhsl/minenet/minigames/handler/global/PlayerLoginHandler.java
+++ b/src/main/java/eu/mhsl/minenet/minigames/handler/global/PlayerLoginHandler.java
@@ -3,12 +3,15 @@ package eu.mhsl.minenet.minigames.handler.global;
 import eu.mhsl.minenet.minigames.Main;
 import eu.mhsl.minenet.minigames.api.QueuedPlayerRooms;
 import eu.mhsl.minenet.minigames.instance.room.Room;
+import eu.mhsl.minenet.minigames.instance.transfer.Transfer;
 import eu.mhsl.minenet.minigames.skin.SkinCache;
+import eu.mhsl.minenet.minigames.util.MoveInstance;
 import net.minestom.server.MinecraftServer;
 import net.minestom.server.entity.Player;
 import eu.mhsl.minenet.minigames.instance.hub.Hub;
 import net.minestom.server.event.EventListener;
 import net.minestom.server.event.player.AsyncPlayerConfigurationEvent;
+import net.minestom.server.timer.TaskSchedule;
 import org.jetbrains.annotations.NotNull;
 import org.spongepowered.configurate.serialize.SerializationException;
 
@@ -26,17 +29,22 @@ public class PlayerLoginHandler implements EventListener<AsyncPlayerConfiguratio
     public @NotNull Result run(@NotNull AsyncPlayerConfigurationEvent event) {
         Player p = event.getPlayer();
 
-        event.setSpawningInstance(Hub.INSTANCE);
-        p.setRespawnPoint(Hub.INSTANCE.getSpawn());
+        Transfer transferInstance = new Transfer();
+        p.setRespawnPoint(transferInstance.getSpawn());
+        event.setSpawningInstance(transferInstance);
 
         UUID pushQueue = QueuedPlayerRooms.pullQueue(event.getPlayer().getUuid());
 
-        MinecraftServer.getSchedulerManager().scheduleNextTick(
+        MinecraftServer.getSchedulerManager().scheduleTask(
             () -> {
                 if(pushQueue != null) {
                     Room.setRoom(p, Room.getRoom(pushQueue).orElseThrow());
+                } else {
+                    MoveInstance.move(p, Hub.INSTANCE);
                 }
-            }
+            },
+            TaskSchedule.seconds(5),
+            TaskSchedule.stop()
         );
 
         SkinCache.applySkin(p);
diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/transfer/Transfer.java b/src/main/java/eu/mhsl/minenet/minigames/instance/transfer/Transfer.java
new file mode 100644
index 0000000..1b527c7
--- /dev/null
+++ b/src/main/java/eu/mhsl/minenet/minigames/instance/transfer/Transfer.java
@@ -0,0 +1,22 @@
+package eu.mhsl.minenet.minigames.instance.transfer;
+
+import eu.mhsl.minenet.minigames.instance.Dimension;
+import eu.mhsl.minenet.minigames.instance.MineNetInstance;
+import eu.mhsl.minenet.minigames.instance.Spawnable;
+import eu.mhsl.minenet.minigames.util.CommonEventHandles;
+import net.minestom.server.coordinate.Pos;
+import net.minestom.server.event.player.PlayerMoveEvent;
+import net.minestom.server.instance.block.Block;
+
+public class Transfer extends MineNetInstance implements Spawnable {
+    public Transfer() {
+        super(Dimension.THE_END.key);
+        eventNode().addListener(PlayerMoveEvent.class, CommonEventHandles::cancel);
+        setBlock(0, 0, 0, Block.BARRIER);
+    }
+
+    @Override
+    public Pos getSpawn() {
+        return new Pos(0.5, 1, 0.5);
+    }
+}
\ No newline at end of file