From b5f6ac467b02c764641d0d1a14e1e96192c5a281 Mon Sep 17 00:00:00 2001
From: Martin <Martin.Olischlaeger@icloud.com>
Date: Fri, 28 Apr 2023 20:46:58 +0200
Subject: [PATCH] add spawn-tp-item

---
 .../eu/mhsl/craftattack/worldmuseum/Main.java   |  2 ++
 .../worldmuseum/items/BedManager.java           | 11 +++++++++++
 .../worldmuseum/listener/ItemUseListener.java   | 17 ++++++++++++++---
 3 files changed, 27 insertions(+), 3 deletions(-)
 create mode 100644 src/main/java/eu/mhsl/craftattack/worldmuseum/items/BedManager.java

diff --git a/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java b/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java
index 4d84caf..7ab26b7 100755
--- a/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java
+++ b/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java
@@ -1,6 +1,7 @@
 package eu.mhsl.craftattack.worldmuseum;
 
 import eu.mhsl.craftattack.worldmuseum.commands.GamemodeCommand;
+import eu.mhsl.craftattack.worldmuseum.items.BedManager;
 import eu.mhsl.craftattack.worldmuseum.temp.GcCommand;
 import eu.mhsl.craftattack.worldmuseum.commands.SpawnCommand;
 import eu.mhsl.craftattack.worldmuseum.commands.TeleportCommand;
@@ -77,6 +78,7 @@ public class Main {
             player.setRespawnPoint(startworld.getSpawn());
             player.setGameMode(GameMode.CREATIVE);
             player.getInventory().setItemStack(0, compassManager.getCompass());
+            player.getInventory().setItemStack(8, BedManager.getBedItem());
         });
 
 
diff --git a/src/main/java/eu/mhsl/craftattack/worldmuseum/items/BedManager.java b/src/main/java/eu/mhsl/craftattack/worldmuseum/items/BedManager.java
new file mode 100644
index 0000000..474be5b
--- /dev/null
+++ b/src/main/java/eu/mhsl/craftattack/worldmuseum/items/BedManager.java
@@ -0,0 +1,11 @@
+package eu.mhsl.craftattack.worldmuseum.items;
+
+import net.kyori.adventure.text.Component;
+import net.minestom.server.item.ItemStack;
+import net.minestom.server.item.Material;
+
+public class BedManager {
+    public static ItemStack getBedItem() {
+        return ItemStack.builder(Material.RED_BED).displayName(Component.text("Spawn-Teleporter")).build();
+    }
+}
diff --git a/src/main/java/eu/mhsl/craftattack/worldmuseum/listener/ItemUseListener.java b/src/main/java/eu/mhsl/craftattack/worldmuseum/listener/ItemUseListener.java
index a4531bc..19966e3 100755
--- a/src/main/java/eu/mhsl/craftattack/worldmuseum/listener/ItemUseListener.java
+++ b/src/main/java/eu/mhsl/craftattack/worldmuseum/listener/ItemUseListener.java
@@ -1,7 +1,9 @@
 package eu.mhsl.craftattack.worldmuseum.listener;
 
+import eu.mhsl.craftattack.worldmuseum.items.BedManager;
 import eu.mhsl.craftattack.worldmuseum.util.NewPlayer;
 import eu.mhsl.craftattack.worldmuseum.items.CompassManager;
+import eu.mhsl.craftattack.worldmuseum.worlds.World;
 import net.kyori.adventure.text.Component;
 import net.minestom.server.event.player.PlayerUseItemEvent;
 import net.minestom.server.item.ItemStack;
@@ -15,15 +17,24 @@ public class ItemUseListener implements Consumer<PlayerUseItemEvent> {
         ItemStack usedItem = playerUseItemEvent.getItemStack();
         CompassManager compassManager = CompassManager.getInstance();
 
-        if (!usedItem.equals(compassManager.getCompass())) return;
+        if (usedItem.equals(compassManager.getCompass())) compassUse(p);
+        else if (usedItem.equals(BedManager.getBedItem())) bedUse(p);
+
+        playerUseItemEvent.setCancelled(true);
+    }
+    private void compassUse(NewPlayer p) {
+        CompassManager compassManager = CompassManager.getInstance();
         if (!p.isAllowCompassUsage()) {
             long lastUsed = (System.currentTimeMillis() - p.getLastCompassUsage()) / 1000;
             p.sendActionBar(Component.text("Du kannst den Kompass erst in " + (10 - lastUsed) + " Sekunden wieder benutzen."));
-
             return;
         }
         p.update_lastCompassUsage();
         p.openInventory(compassManager.getInventory());
-        playerUseItemEvent.setCancelled(true);
+    }
+    private void bedUse(NewPlayer player) {
+        World world = (World) player.getInstance();
+        assert world != null;
+        player.teleport(world.getSpawn());
     }
 }