From 4aa6a0d51235823ef2d92cd402968fab66c48341 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Fri, 7 Feb 2025 23:55:53 +0100 Subject: [PATCH] Add player respawn handling with custom logic Introduced a new event handler for player respawn to set custom spawn locations and apply game class attributes. This ensures players rejoin the game with the correct state after death. --- .../java/com/alttd/ctf/events/OnPlayerDeath.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/com/alttd/ctf/events/OnPlayerDeath.java b/src/main/java/com/alttd/ctf/events/OnPlayerDeath.java index 1a974cc..15f618f 100644 --- a/src/main/java/com/alttd/ctf/events/OnPlayerDeath.java +++ b/src/main/java/com/alttd/ctf/events/OnPlayerDeath.java @@ -1,10 +1,14 @@ package com.alttd.ctf.events; import com.alttd.ctf.game.GameManager; +import com.alttd.ctf.team.TeamPlayer; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.PlayerRespawnEvent; + +import java.util.Optional; public class OnPlayerDeath implements Listener { @@ -26,4 +30,16 @@ public class OnPlayerDeath implements Listener { player.updateInventory(); } + @EventHandler + public void onPlayerRespawn(PlayerRespawnEvent event) { + Player player = event.getPlayer(); + Optional optionalTeamPlayer = gameManager.getTeamPlayer(player.getUniqueId()); + if (optionalTeamPlayer.isEmpty()) { + return; + } + TeamPlayer teamPlayer = optionalTeamPlayer.get(); + event.setRespawnLocation(teamPlayer.getTeam().getSpawnLocation()); + teamPlayer.getGameClass().apply(teamPlayer); + } + }