From 33a84d6a66c15eb1171360276e885ee6716bd8cd Mon Sep 17 00:00:00 2001 From: Lixfel Date: Fri, 26 Jan 2024 09:06:54 +0100 Subject: [PATCH] Fix team leave Signed-off-by: Lixfel --- .../src/de/steamwar/fightsystem/listener/Border.java | 5 ++++- .../src/de/steamwar/fightsystem/listener/TeamArea.java | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/Border.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/Border.java index 6ae3384..6f8bddd 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/Border.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/Border.java @@ -58,7 +58,10 @@ public class Border { } public void addPlayer(Player player) { - ghostBarriers.computeIfAbsent(player, uuid -> new HashSet<>()); + if(ghostBarriers.containsKey(player)) + return; + + ghostBarriers.put(player, new HashSet<>()); lastLocation.put(player, player.getLocation()); } diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java b/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java index 53c484f..cf241bd 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/listener/TeamArea.java @@ -24,6 +24,7 @@ import de.steamwar.fightsystem.Config; import de.steamwar.fightsystem.FightSystem; import de.steamwar.fightsystem.events.BoardingEvent; import de.steamwar.fightsystem.events.TeamDeathEvent; +import de.steamwar.fightsystem.events.TeamLeaveEvent; import de.steamwar.fightsystem.events.TeamSpawnEvent; import de.steamwar.fightsystem.fight.Fight; import de.steamwar.fightsystem.fight.FightPlayer; @@ -77,6 +78,14 @@ public class TeamArea implements Listener { } } + @EventHandler + public void teamLeave(TeamLeaveEvent e) { + FightPlayer fightPlayer = e.getFightPlayer(); + fightPlayer.ifPlayer(spectatorBorder::addPlayer); + if(fightPlayer.getTeam() == team) + fightPlayer.ifPlayer(bordingBorder::removePlayer); + } + @EventHandler public void boarding(BoardingEvent e) { FightPlayer fightPlayer = e.getFightPlayer();