diff --git a/src/main/java/com/alttd/ctf/commands/subcommands/SelectClass.java b/src/main/java/com/alttd/ctf/commands/subcommands/SelectClass.java index aa59999..80bdf98 100644 --- a/src/main/java/com/alttd/ctf/commands/subcommands/SelectClass.java +++ b/src/main/java/com/alttd/ctf/commands/subcommands/SelectClass.java @@ -46,7 +46,9 @@ public class SelectClass extends SubCommand { return 0; } TeamPlayer teamPlayer = optionalTeamPlayer.get(); - if (!gamePhase.equals(GamePhase.CLASS_SELECTION) && teamPlayer.getTeam().getSpawnLocation().distance(player.getLocation()) > 5) { + if (!teamPlayer.isDead() + && !gamePhase.equals(GamePhase.CLASS_SELECTION) + && teamPlayer.getTeam().getSpawnLocation().distance(player.getLocation()) > 5) { commandSender.sendRichMessage("You have to be near your spawn to change classes."); return 0; } diff --git a/src/main/java/com/alttd/ctf/events/OnPlayerDeath.java b/src/main/java/com/alttd/ctf/events/OnPlayerDeath.java index 8bc8693..b92c9ab 100644 --- a/src/main/java/com/alttd/ctf/events/OnPlayerDeath.java +++ b/src/main/java/com/alttd/ctf/events/OnPlayerDeath.java @@ -44,6 +44,8 @@ public class OnPlayerDeath implements Listener { Player player = event.getPlayer(); player.getInventory().clear(); player.updateInventory(); + gameManager.getTeamPlayer(player) + .ifPresent(TeamPlayer::setDead); flag.handleCarrierDeathOrDisconnect(player); } diff --git a/src/main/java/com/alttd/ctf/team/TeamPlayer.java b/src/main/java/com/alttd/ctf/team/TeamPlayer.java index af47a6e..a019f4b 100644 --- a/src/main/java/com/alttd/ctf/team/TeamPlayer.java +++ b/src/main/java/com/alttd/ctf/team/TeamPlayer.java @@ -25,6 +25,7 @@ public class TeamPlayer { private final Team team; @Setter private GameClass gameClass; + private boolean isDead = false; protected TeamPlayer(UUID uuid, Team team) { this.uuid = uuid; @@ -48,6 +49,11 @@ public class TeamPlayer { } player.teleportAsync(spawnLocation).thenAcceptAsync(unused -> resetWorldBorder(player, worldBorderApi, gamePhase, worldBorderCenter)); + isDead = false; + } + + public void setDead() { + isDead = true; } public void resetWorldBorder(@NotNull Player player, WorldBorderApi worldBorderApi, GamePhase gamePhase, Location worldBorderCenter) {