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()); } }