/bwsfix cleanupSpectators can finally see their fellow ghosts – no more lonely invisibility.
PlayerTeleportEvent and instantly removes stuck infinite invisibility and hidden states if the player is no longer in any arena.performIndividualCleanup(Player) for fast, targeted cleanup on teleport.No new configuration options – works automatically.
No more invisible players in the lobby – guaranteed.
Automatic cleanup watchdog – runs every 30 seconds (configurable via cleanup-interval) to scan all players, remove stuck infinite invisibility from non‑spectators, and force visibility restoration.
No more rare “invisible player” glitches.
Tab list fix – the cleanup task now forces showPlayer() between all online players, fixing cases where spectators (or other players) disappeared from the tab list or became permanently invisible.
Cleanup announcements – after each automatic (or manual) cleanup, the console receives a detailed log message, and all online OPs are notified in chat.
Example:
[BedWarsSpectatorFix] Cleanup: removed 2 stuck invis, fixed 3 visibility entries, reapplied fixes to 1 spectators.
New /bwsfix reload command – reloads config.yml and restarts the cleanup watchdog with the new interval. No server restart needed.
Added cleanup-interval (default: 30 seconds) to config.yml.
# How often (in seconds) to run full cleanup scan
cleanup-interval: 30
isTrueSpectator() and applySpectatorFixes() publicly – used by the watchdog to safely re‑apply fixes./bwsfix cleanup (permission bwsfix.cleanup) – same behaviour as the automatic task.Version 1.3 is the most reliable release yet – no more invisible ghosts, no tab list oddities, just silent and collision‑free spectators.
Completely eliminated false positives – normal players (including those using invisibility potions) will never become invisible or collision‑free.
The plugin now requires both arena.isSpectator(player) == true and !arena.getPlayers().contains(player) before applying any fix.
Fixed “stuck invisibility” after uninstalling – when the plugin is disabled or removed, spectators no longer stay permanently invisible.
Added a cleanup command /bwsfix cleanup that removes all infinite‑duration invisibility effects and restores visibility for everyone.
Emergency cleanup command – /bwsfix cleanup (permission: bwsfix.cleanup) instantly removes all effects added by this plugin.
Useful for manually recovering from any leftover invisibility.
Auto‑cleanup on disable – when the plugin shuts down, it automatically removes all its effects (configurable via auto-cleanup-on-disable).
Smart invisibility removal – the cleanup only removes invisibility effects that last longer than 1,000,000 ticks (i.e., the infinite ones added by this plugin).
Normal shop‑bought invisibility potions (duration ~1 minute) are not affected.
Added new options to config.yml:
# Automatically cleanup effects when plugin disables (recommended: true)
auto-cleanup-on-disable: true
Existing options (mute-effects, debug-mode, collision-refresh-interval) remain unchanged.
If you are upgrading from v1.1:
/bwsfix cleanup once to clean any leftover effects from the old version.Version 1.2 is the most stable release – no false positives, no residual invisibility, just a clean spectator experience.
setCollidable(false) every 10 seconds, solving the issue without any performance impact.IArena.isSpectator(player) API, completely removing GameMode checks that caused false positives (regular players becoming invisible in tab list and in the world).Added new option collision-refresh-interval (default: 10 seconds) to control how often the collision fix is reapplied.
Upgrade to 1.1 for a seamless, glitch‑free spectator experience!

Fixes Bedwars1058 spectator collision box, invisibility particles, and held item visibility while preserving spectator items (compass, etc.). Supports spectating players by clicking on them and properly resets when sneaking.