Fix class change restriction and track player death state
Ensure players can change classes when they are dead or near spawn if alive. Added logic to track and update player death state, improving clarity and game mechanics around death handling.
This commit is contained in:
parent
409a1aa596
commit
e5656f23ce
|
|
@ -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("<red>You have to be near your spawn to change classes.</red>");
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user