From cf4ac95c2f4d55c3caf47babea81ce695581a3fe Mon Sep 17 00:00:00 2001 From: Lixfel Date: Wed, 9 Apr 2025 21:04:28 +0200 Subject: [PATCH] Bugfix after testing --- .../fightsystem/listener/Spectator.java | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/listener/Spectator.java b/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/listener/Spectator.java index 405f2b0d..399970ca 100644 --- a/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/listener/Spectator.java +++ b/FightSystem/FightSystem_Core/src/de/steamwar/fightsystem/listener/Spectator.java @@ -26,8 +26,10 @@ import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerGameModeChangeEvent; +import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import com.comphenix.tinyprotocol.TinyProtocol; @@ -52,20 +54,30 @@ public class Spectator implements Listener { new StateDependentTask(ArenaMode.AntiTest, FightState.All, this::pseudoSpectatorCheck, 1, 1); } - @EventHandler - @SuppressWarnings("deprecation") - public void onGameModeChange(PlayerGameModeChangeEvent e) { + @EventHandler(priority = EventPriority.MONITOR) + public void handlePlayerJoin(PlayerJoinEvent e) { Player player = e.getPlayer(); - if (e.getNewGameMode() == GameMode.SPECTATOR) { - for(Player currentPlayer : Bukkit.getServer().getOnlinePlayers()) { - if(currentPlayer.getUniqueId() != player.getUniqueId()) - currentPlayer.hidePlayer(player); + if(player.getGameMode() == GameMode.SPECTATOR) + gameModeChange(player, GameMode.SPECTATOR); + } + + @EventHandler + public void onGameModeChange(PlayerGameModeChangeEvent e) { + gameModeChange(e.getPlayer(), e.getNewGameMode()); + } + + @SuppressWarnings("deprecation") + private void gameModeChange(Player player, GameMode gameMode) { + if (gameMode == GameMode.SPECTATOR) { + for(Player p : Bukkit.getServer().getOnlinePlayers()) { + if(p.getUniqueId() != player.getUniqueId()) + p.hidePlayer(player); } } else { - for(Player currentPlayer : Bukkit.getServer().getOnlinePlayers()) { - if(currentPlayer.getUniqueId() != player.getUniqueId()) - currentPlayer.showPlayer(player); + for(Player p : Bukkit.getServer().getOnlinePlayers()) { + if(p.getUniqueId() != player.getUniqueId()) + p.showPlayer(player); } } }