From 38559a1a4d0e670e65d83eacdf03349b5e6aaf93 Mon Sep 17 00:00:00 2001 From: MiddleXen Date: Sun, 21 Jun 2026 17:26:35 +0400 Subject: [PATCH 1/3] Extract resetVanishFlight() and disable flying on reappear --- .../visibility/VisibilityChanger.java | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/main/java/de/myzelyam/supervanish/visibility/VisibilityChanger.java b/src/main/java/de/myzelyam/supervanish/visibility/VisibilityChanger.java index 171d6e9..193e843 100644 --- a/src/main/java/de/myzelyam/supervanish/visibility/VisibilityChanger.java +++ b/src/main/java/de/myzelyam/supervanish/visibility/VisibilityChanger.java @@ -140,14 +140,7 @@ public void showPlayer(final Player player, final String showerName, boolean sil else plugin.sendMessage(player, "OnReappearCausedByOtherPlayer", player, showerName); // fly - // remove fly if not spectator or creative and no perm - if (config.getBoolean("InvisibilityFeatures.Fly.DisableOnReappear") - && !player.hasPermission("sv.keepfly") - && (player.getGameMode() == GameMode.SURVIVAL - || player.getGameMode() == GameMode.ADVENTURE) - && config.getBoolean("InvisibilityFeatures.Fly.Enable")) { - player.setAllowFlight(false); - } + resetVanishFlight(player); // call post event PostPlayerShowEvent e2 = new PostPlayerShowEvent(player, silent); plugin.getServer().getPluginManager().callEvent(e2); @@ -156,7 +149,21 @@ public void showPlayer(final Player player, final String showerName, boolean sil } } + /** + * Removes vanish-granted flight from a player who is no longer invisible. + */ + public void resetVanishFlight(Player player) { + if (config.getBoolean("InvisibilityFeatures.Fly.DisableOnReappear") + && !player.hasPermission("sv.keepfly") + && (player.getGameMode() == GameMode.SURVIVAL + || player.getGameMode() == GameMode.ADVENTURE) + && config.getBoolean("InvisibilityFeatures.Fly.Enable")) { + player.setAllowFlight(false); + player.setFlying(false); + } + } + public PlayerHider getHider() { return hider; } -} \ No newline at end of file +} From 62134facbabeb045f362ec916b5817946a8588ff Mon Sep 17 00:00:00 2001 From: MiddleXen Date: Sun, 21 Jun 2026 17:27:07 +0400 Subject: [PATCH 2/3] Reset vanish flight on join for non-vanished players Reset vanish flight for player on join to prevent persistence. --- .../java/de/myzelyam/supervanish/listeners/JoinListener.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/myzelyam/supervanish/listeners/JoinListener.java b/src/main/java/de/myzelyam/supervanish/listeners/JoinListener.java index bf36edb..4de7651 100644 --- a/src/main/java/de/myzelyam/supervanish/listeners/JoinListener.java +++ b/src/main/java/de/myzelyam/supervanish/listeners/JoinListener.java @@ -71,6 +71,8 @@ public void execute(Listener l, Event event) { // not vanished: // metadata p.removeMetadata("vanished", plugin); + // clear vanish-granted flight that may persist in player data after relog + plugin.getVisibilityChanger().resetVanishFlight(p); } // not necessarily vanished: // recreate files msg @@ -94,4 +96,4 @@ public void run() { plugin.logException(er); } } -} \ No newline at end of file +} From d2ffa6edb37a2b9898a9f241b1a6b2b30903ad62 Mon Sep 17 00:00:00 2001 From: MiddleXen Date: Sun, 21 Jun 2026 17:27:33 +0400 Subject: [PATCH 3/3] Reset vanish flight on auto-reappear quit --- .../java/de/myzelyam/supervanish/listeners/QuitListener.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/myzelyam/supervanish/listeners/QuitListener.java b/src/main/java/de/myzelyam/supervanish/listeners/QuitListener.java index 8076f04..6b11829 100644 --- a/src/main/java/de/myzelyam/supervanish/listeners/QuitListener.java +++ b/src/main/java/de/myzelyam/supervanish/listeners/QuitListener.java @@ -47,6 +47,7 @@ public void execute(Listener l, Event event) { || plugin.getSettings().getBoolean("VanishStateFeatures.CheckPermissionOnQuit") && !CommandAction.VANISH_SELF.checkPermission(p, plugin)) { plugin.getVanishStateMgr().setVanishedState(p.getUniqueId(), p.getName(), false, null); + plugin.getVisibilityChanger().resetVanishFlight(p); // check if it should handle the quit msg if (!config.getBoolean("MessageOptions.ReappearOnQuitHideLeaveMsg")) noMsg = true; @@ -64,4 +65,4 @@ public void execute(Listener l, Event event) { plugin.logException(er); } } -} \ No newline at end of file +}