diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/spawnpoint/FirstSpawnPlayerListener.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/spawnpoint/FirstSpawnPlayerListener.java
deleted file mode 100644
index a29d5ff..0000000
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/spawnpoint/FirstSpawnPlayerListener.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package eu.mhsl.craftattack.spawn.appliances.spawnpoint;
-
-import eu.mhsl.craftattack.spawn.appliance.ApplianceListener;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.player.PlayerJoinEvent;
-
-public class FirstSpawnPlayerListener extends ApplianceListener<Spawnpoint> {
-    @EventHandler
-    public void onSpawn(PlayerJoinEvent event) {
-        this.getAppliance().handlePlayerLogin(event.getPlayer());
-    }
-}
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/spawnpoint/SpawnAtSpawnpointListener.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/spawnpoint/SpawnAtSpawnpointListener.java
new file mode 100644
index 0000000..9e67b6b
--- /dev/null
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/spawnpoint/SpawnAtSpawnpointListener.java
@@ -0,0 +1,20 @@
+package eu.mhsl.craftattack.spawn.appliances.spawnpoint;
+
+import eu.mhsl.craftattack.spawn.appliance.ApplianceListener;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.player.PlayerJoinEvent;
+import org.bukkit.event.player.PlayerRespawnEvent;
+
+public class SpawnAtSpawnpointListener extends ApplianceListener<Spawnpoint> {
+    @EventHandler
+    public void onJoin(PlayerJoinEvent event) {
+        this.getAppliance().handlePlayerLogin(event.getPlayer());
+    }
+
+    @EventHandler
+    public void onRespawn(PlayerRespawnEvent event) {
+        if(event.isBedSpawn()) return;
+        if(event.isAnchorSpawn()) return;
+        event.setRespawnLocation(this.getAppliance().getSpawnPoint());
+    }
+}
diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/spawnpoint/Spawnpoint.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/spawnpoint/Spawnpoint.java
index 8290415..1586cf0 100644
--- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/spawnpoint/Spawnpoint.java
+++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/spawnpoint/Spawnpoint.java
@@ -38,6 +38,10 @@ public class Spawnpoint extends Appliance {
         dataContainer.set(alreadySpawned, PersistentDataType.BOOLEAN, true);
     }
 
+    public Location getSpawnPoint() {
+        return this.spawnPoint;
+    }
+
     @Override
     protected @NotNull List<ApplianceCommand<?>> commands() {
         return List.of(new SetSpawnpointCommand());
@@ -45,6 +49,6 @@ public class Spawnpoint extends Appliance {
 
     @Override
     protected @NotNull List<Listener> listeners() {
-        return List.of(new FirstSpawnPlayerListener());
+        return List.of(new SpawnAtSpawnpointListener());
     }
 }