From 3db8666951dafb585c78df1002b209bbdb30fb51 Mon Sep 17 00:00:00 2001 From: NEZNAMY Date: Sat, 13 Jan 2024 12:58:00 +0100 Subject: [PATCH] Hide spectator effect for players who unvanished (#1209) --- .../neznamy/tab/shared/features/SpectatorFix.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/shared/src/main/java/me/neznamy/tab/shared/features/SpectatorFix.java b/shared/src/main/java/me/neznamy/tab/shared/features/SpectatorFix.java index f05811083..dc486764f 100644 --- a/shared/src/main/java/me/neznamy/tab/shared/features/SpectatorFix.java +++ b/shared/src/main/java/me/neznamy/tab/shared/features/SpectatorFix.java @@ -14,7 +14,7 @@ */ @Getter public class SpectatorFix extends TabFeature implements JoinListener, GameModeListener, Loadable, UnLoadable, - ServerSwitchListener, WorldSwitchListener { + ServerSwitchListener, WorldSwitchListener, VanishListener { private final String featureName = "Spectator fix"; @@ -85,9 +85,19 @@ public void onServerChange(@NotNull TabPlayer changed, @NotNull String from, @No @Override public void onWorldChange(@NotNull TabPlayer changed, @NotNull String from, @NotNull String to) { // Some server versions may resend gamemode on world switch, resend false value again + if (changed.getGamemode() != 3) return; for (TabPlayer viewer : TAB.getInstance().getOnlinePlayers()) { - if (viewer == changed || changed.getGamemode() != 3 || viewer.hasPermission(TabConstants.Permission.SPECTATOR_BYPASS)) continue; + if (viewer == changed || viewer.hasPermission(TabConstants.Permission.SPECTATOR_BYPASS)) continue; viewer.getTabList().updateGameMode(changed.getTablistId(), 0); } } + + @Override + public void onVanishStatusChange(@NotNull TabPlayer player) { + if (player.isVanished() || player.getGamemode() != 3) return; + for (TabPlayer viewer : TAB.getInstance().getOnlinePlayers()) { + if (viewer == player || viewer.hasPermission(TabConstants.Permission.SPECTATOR_BYPASS)) continue; + viewer.getTabList().updateGameMode(player.getTablistId(), 0); + } + } } \ No newline at end of file