1.1.9.1latestVanish++ 1.1.9.1 (Velocity)3 days ago [1.1.9.1] - 2026-10-23
Added
- `/vanish version`, `/vanish info` and `/vinfo`: show the running version, whether an update is available (with a click-to-download link to the exact Modrinth version) and where to find help./vhelpnow shows the version at the top too. Needsvanishpp.vanish; everyone else gets the usual unknown-command message, so the plugin stays hidden.Fixed
- Update checker now follows redirects: Java'sHttpURLConnectiondoesn't follow307/308redirects, which is how Modrinth answered after the project was renamed - so every version up to 1.1.8 silently stopped finding updates. 1.1.9 already switched to the project ID; the checker now also follows up to 5 HTTPS redirects, so a future rename or move on Modrinth's side can't break it the same way. - Velocity update checker never worked: it looked up the project underupdate-checker.modrinth-id, whose default (vanishpp) never existed on Modrinth, so proxies were never told about updates. It now uses the project ID like the Paper side, and the misleadingmodrinth-idsetting is gone from both default configs. - Update checks fall back to GitHub: if Modrinth can't be reached or answers with an error, both checkers compare against the latest GitHub release instead (the download link still goes to Modrinth), so one side breaking can't silently stop update notifications again. A daily GitHub Action also checks the exact URL the plugins use and fails as soon as Modrinth stops answering it directly or a GitHub release is missing from Modrinth. - Update download link could open the Velocity build: the link pointed at the version number, which the Paper and Velocity uploads share. It now uses the exact Modrinth version ID.1.1.9Vanish++ 1.1.9 (Velocity)3 days ago [1.1.9] - 2026-10-23
Added
- Statusbot integration (#35): [Statusbot](https://modrinth.com/plugin/discord-statusbot) readsgetOnlinePlayers()directly and has no vanish support, so vanished players showed up in its Discord bot status, embeds ($amount-of-players$/$player-list$) and join/leave messages. Statusbot has no API, so the newStatusbotHookhooks its internals via reflection: Statusbot's own join/quit handlers are swapped for vanish-aware ones, the two embed variables are overridden with visible-only versions, the bot status is refreshed on every vanish change, and vanishing/unvanishing sends a fake leave/join (followingbroadcast-fake-quit/broadcast-fake-join). Tested against Statusbot 24.0 - if a different version doesn't match, the hook logs a warning and leaves Statusbot untouched, and a failure at runtime disables the hook and restores Statusbot's defaults. Covered byStatusbotHookTestagainst stand-ins mirroring Statusbot's classes, and verified on a real Paper 26.3 server with Statusbot 24.0 and a live Discord bot: vanishing/unvanishing posts the fake leave/join, and joining or leaving while vanished posts nothing. - Multi-language support (#29): Every message, GUI text, action button, rule name, TAB prefix, bossbar title and scoreboard label now lives in per-language files (languages/messages_<lang>.yml,languages/scoreboards_<lang>.yml), picked with thelanguageoption inconfig.yml. Ships with English (en-us) and Simplified Chinese (zh-cn); missing keys in a translation fall back to English per key. (Thanks @kanseijo, PR #29)Fixed
- Update checker never found new versions: the Modrinth project slug was renamed, so the old slug in the API URL now only gets a308redirect (logged as[UpdateChecker] Modrinth returned HTTP 308), which Java'sHttpURLConnectiondoesn't follow. The checker now uses the project ID, which never changes. - Periodic update check ran its HTTP request on the main thread: a slow or unreachable Modrinth could freeze the server long enough to trip the Watchdog. It now runs async, like the startup check. (Thanks @kanseijo, PR #30) - "Could not save scoreboards.yml" warning on every startup: the defaultscoreboards.ymlis now only extracted when it doesn't exist yet.[1.1.9] - 2026-08-23
Added
- `vanishpp:vanished` LuckPerms context now works on the Velocity proxy, not just Paper: Paper has had this context (usable in LuckPerms permission conditions) since earlier work, but the proxy side had no equivalent — a permission conditioned on it would only ever evaluate correctly at the backend, never at the proxy. Added a mirroredLuckPermsHookonvanishpp-velocity, sourced from the proxy's own cross-server vanish state (ProxyStateManager, already kept in sync via the existing plugin-messaging protocol) rather than a Paper plugin instance, which doesn't exist on that side. Registration is optional (only if LuckPerms is present on the proxy) and mirrors Paper's exact context key so one permission condition behaves consistently whether it's checked at the proxy or a backend server. Verified end-to-end on a real Velocity proxy + Paper backend + LuckPerms-Velocity: vanishing/unvanishing on the backend flips the proxy-side context value live (false → true → false), no reconnect needed.Fixed
- `/vspec` action bar flickered between "you are vanished" and the spectate overlay:/vspecshares its target-tracking with/vfollow, whose periodic task drives the spectate-info action bar — but that raced, uncoordinated, against a completely separate general "you are vanished" heartbeat that had no idea spectate/follow mode existed, so the two kept overwriting each other's action bar text. The generic heartbeat now skips any player currently in an active/vspec//vfollowsession. - `/vspec stop` could leave the player stuck in SPECTATOR gamemode: unlike/vfollow,/vspecsaved the player's gamemode unconditionally on every invocation — so switching/vspectargets twice, using/vfollowthen/vspec, or double-shift-toggling into spectator before/vspec, would each re-save the already-currentSPECTATORgamemode over the real original, permanently losing it. The codebase actually had four independent, uncoordinated places tracking "gamemode to restore" (the shared/vspec+/vfollowmap, plus two separate player-metadata keys for the double-shift toggle and the vanish/unvanish toggle) — consolidated into a single guarded store (Vanishpp.saveGamemodeForRestore()/restoreSavedGamemode(), save-if-absent semantics) used by all four. As part of this, unvanishing while still mid-/vspec//vfollownow also cleanly drops the active follow/spectate session instead of leaving stale tracking state behind (which previously could cause the follower to keep getting silently re-teleported to the target after they'd already unvanished). Verified on a real server:/vfollow→/vspec→/vspec stop, two sequential/vspeccalls, and unvanish-mid-spectate on a non-bypass account all correctly restore the real original gamemode. - Vanished player's nametag could leak through a third-party team plugin (e.g. BetterTeams) to a non-seer, as floating text with no player model: a prior fix attempt (already shipped) scrubbedSCOREBOARD_TEAMpackets but failed open on any exception — if a packet didn't match the expected shape (plausible for a different plugin's team packets), the original, unscrubbed packet was forwarded rather than dropped, which is the worst failure direction for a leak-class bug. That scrub (both the plugin's own team and the generic any-other-team path) now fails closed: cancel the packet rather than forward it if it can't be verified safe. Separately,PLAYER_INFO/PLAYER_INFO_UPDATEpackets were never intercepted at all —hidePlayer()only sends a one-shot removal at the moment visibility changes, so a later tab-list re-sync from another plugin could still re-include a vanished player for a non-seer. Added a backstop listener (VanishPlayerInfoPolicy, unit-tested the same way as the existingVanishTeamPacketPolicy) that strips vanished-player entries from every such packet regardless of what caused it. Known residual risk, not closed by this fix: a client that already cached a third-party team/tab association for a player before they vanished won't have it retroactively retracted — both fixes only filter packets going forward from the moment of vanish. Closing that fully would require Vanish++ to proactively manage third-party team membership on vanish, which is separate, larger scope. Verified on a real server with raw packet capture: a vanished player joining a fresh vanilla team (standing in for a third-party team plugin, same underlying API) never leaks their name to a non-seer observer.[1.1.9] - 2026-08-21
Fixed
- Client crash "Player is not on any team" still reachable after the previous fix, when an observer was granted `vanishpp.see` live mid-vanish: Thea5436a6fix (thanks again to @quiquelhappy, PR #19, for the original diagnosis and fix this builds on) scrubbed ADD/REMOVEVanishpp_Vanishedteam packets based on the observer's current permission at send time, but a client's actual scoreboard knowledge depends on what it was sent in the past. An observer promoted to staff (e.g. a live LuckPerms grant, no relog) after missing the original ADD would still receive an unfiltered REMOVE once the vanished player unvanished — the client crashed exactly as before, just from the opposite direction of a permission change.ProtocolLibManagernow tracks, per observer, which team member names that specific client has actually been sent (VanishTeamPacketPolicy), and only forwards a REMOVE for names the client is known to have learned about — regardless of the observer's permission at that moment. As a side effect this also fixes a pre-existing (non-crashing) bug in1.1.8Vanish++ 1.1.8 VelocityApr 21, 2026 Added
- `/vspec` Quick-Spectate Command: Instantly enter spectator mode on a specific player with/vspec <player>. Use/vspec stopto return to your previous location and gamemode. Requiresvanishpp.spec. - `/vfollow` Player Tracking HUD: Lock your camera to follow any player silently with/vfollow <player>. A HUD indicator shows active follow target. Stops automatically if the target disconnects. Requiresvanishpp.follow. - `/vhistory` Audit Log: Full vanish/unvanish history with timestamps, executor, and reason. Stored in DB. Requiresvanishpp.history. - `/vautovanish` Per-Player Auto-Join Preference: Players can opt into automatic vanish on join. Persisted per UUID — survives restarts and server switches. Requiresvanishpp.autovanish. - `/vstats` Vanish Time Statistics: Shows total vanish time, session count, and longest session per player. Requiresvanishpp.stats. - `/vadmin` Dashboard GUI: In-game GUI overview of all vanished players, active rules, and quick actions. Requiresvanishpp.admin. - `/vwand` Toggle Item: Grants a Blaze Rod vanish wand. Right-clicking toggles vanish state. Configurable inconfig.yml. Requiresvanishpp.wand. - `/vzone` No-Vanish Zones: Define radius-based zones where vanishing/unvanishing is blocked or forced. Managed with/vzone create|delete|list|reload. Requiresvanishpp.zone. - `/vincognito` Fake Name Mode: Replace your display name and tab entry with a custom fake name while vanished. Requiresvanishpp.incognito. - LuckPerms Context Integration: Registers avanishedcontext node in LuckPerms so permissions can be conditionally granted while a player is vanished. - WorldGuard Force/Deny Vanish Flags: Two new WorldGuard region flags:vanishpp-force-vanish(auto-vanishes players entering) andvanishpp-deny-vanish(blocks toggling vanish in the region). - Webhook Support: Configurable HTTP webhook fired on vanish/unvanish events for external integrations (Discord bots, dashboards, audit systems). - Vanish Reason Tracking:/vanish <player> [reason]records and displays a reason shown to staff via hover or/vhistory. - Bulk Vanish:/vanish alland/vanish world <world>vanish all eligible online players or all players in a specific world at once. - Rule Presets: Save, load, list, and delete named rule configurations with/vrules preset <save|load|list|delete> <name>. Requiresvanishpp.rules. - Bossbar Vanish Status Indicator: Optional persistent bossbar shown to vanished players as a stealth reminder. Configurable colour, style, and text. Toggle inconfig.yml. - Public VanishAPI: Developer API (VanishAPI) exposing vanish state queries, vanish/unvanish calls, event hooks, and rule reads for third-party plugin integration. - Vanish History in Database: Vanish events (time, executor, reason, duration) are now persisted in the SQL backend for audit and statistics use. - Shift-Right-Click Invsee: Shift-right-clicking a player while vanished opens their inventory via OpenInv or InvSee++ if installed, falling back to built-in view. Permissions are granted for the duration of the open inventory and removed on close. - `/msg`/`/tell`/`/r`/`/me` Detection Prevention: Non-seers can no longer/msg,/tell, or use any private-message command to reach a vanished player — they receive a vanilla-style fake error./rreply is blocked when the last target was a vanished sender./mefrom a vanished player is restricted to staff-only audience. Covers vanilla and EssentialsX aliases. Fake error text is configurable undercommands.msg-player-not-foundinmessages.yml. - `messages.yml` Auto-Migration: Missing message keys from the default file are automatically written back to the user'smessages.ymlon load, so upgrading never leaves a key undefined.Added
- `%vanishpp_visible_player_list%` PAPI Placeholder: New PlaceholderAPI placeholder that returns a comma-separated list of all online non-vanished (visible) players. Complements the existing%vanishpp_vanished_list%for HUDs and scoreboards that need to display who is online.Fixed
- Mob AI Targeting Vanished Players:SafeLookAtPlayerGoal(a custom PaperMobGoalsinjection) was causingLookAtPlayerGoalto leak into the LOOK goal slot on servers where the custom goal claimed the slot only conditionally. Removed entirely; mob targeting prevention now relies solely onEntityTargetEventcancellation, which is reliable and cross-version. - Folia Scheduler Illegal Delay Crash:FoliaSchedulerBridge.runLaterGlobal()passed caller-supplied tick values directly to Folia'srunDelayed, which throwsIllegalArgumentExceptionfor<= 0. Bridge now falls back to immediaterunGlobalexecution. (PR #11, reported by XChen446) - Mass Disconnect on Unvanish:refreshVisibilityWithGlow()iterated the liveBukkit.getOnlinePlayers()collection while sending packets and forced a hide+show cycle on every observer — including non-seers. Under load this caused a packet burst that disconnected players. Fixed by snapshotting the player list before iteration and limiting the hide+show respawn cycle to seers only (who need it to flush glow metadata). - ProtocolLib `CUSTOM_SOUND_EFFECT` Boot Warning: Registering a packet listener forCUSTOM_SOUND_EFFECTon Minecraft versions where that packet type is absent produced a[ProtocolLib] Plugin Vanishpp tried to register listener for unknown packet CUSTOM_SOUND_EFFECT (unregistered)WARN on every server start. The silent-chest sound suppression listener now checksPacketType.Play.Server.CUSTOM_SOUND_EFFECT.isSupported()before registering and skips it on unsupported versions. Reported by a community member.1.1.7Vanish++ 1.1.7 VelocityApr 11, 2026 Added
- Cross-Server Vanish State Reconciliation: When a player joins a server that shares a MySQL/PostgreSQL database with other servers, their vanish state from any other server is immediately applied — no manual/vanishneeded after switching. Works on BungeeCord/Velocity networks with a shared database. Stale in-memory entries for offline players are also periodically purged so no server accumulates phantom vanished UUIDs. - Instant Proxy-Ready Vanish State on Join: Vanish state is now pre-fetched from the database duringAsyncPlayerPreLoginEvent(before the player fully connects), so it is applied on the very first tick ofPlayerJoinEventwith zero additional delay. On a proxy network, players switching servers appear vanished or visible to staff immediately, with no visible flicker or catch-up period. - Native Velocity Proxy Plugin: A companion Velocity plugin (vanishpp-velocity) provides a dedicatedvanishpp:proxyplugin messaging channel for real-time cross-server state sync, config push, and network-wide/vanishreload. The proxy maintains an authoritative vanished-player list and broadcasts state changes to all connected Paper servers instantly. Automatically detected on startup — servers fall back to standalone mode if no Velocity proxy is found. - Scoreboard Timezone Offset (`timezone-offset-hours`): The scoreboard's%time%and%date%placeholders now support a configurable hour offset applied on top of the base timezone. Settimezone-offset-hours: 2inscoreboards.ymlto shift the displayed time forward by two hours from the base zone (supports decimals like5.5for IST).timezone: "default"already uses the server's system clock; the offset is applied on top of whichever zone is configured. - ProtocolLib Missing Warning — Disabled Features List: The startup warning shown to staff when ProtocolLib is not installed now includes a[Disabled Features ▶]hover button listing all 7 features that require ProtocolLib (tab-complete scrubbing, entity packet filtering, ghost-proof spawning, scoreboard team scrubbing, server list count adjustment, silent chest animations/sounds, staff glow).Fixed
- Mobs Looking at Vanished Players (Passive Head Tracking): Re-introducedMobAiManagerwith a correct implementation. The root cause of the 1.1.5 regression was thatSafeLookAtPlayerGoalreturnedfalsefromshouldActivate()when only vanished players were nearby — this freed theLOOKgoal slot, allowing the vanillaLookAtPlayerGoalto fill it (vanilla has no vanish awareness).SafeLookAtPlayerGoalnow claims theLOOKslot whenever any player is in range (returningtruewith a null target when all nearby players are vanished), so the vanilla goal can never activate for vanished players. A periodic 20-tick sweep also force-clears any combat targets pointing at vanished players as a safety net. - Cross-Server Timed Rule Expiry Message Not Delivered: When a timed rule (e.g./vrules <player> mob_targeting time 30) expired on server A while the player was already connected to server B, the notification was never shown. The fix is three-layered: (1) aPLAYER_MESSAGEpacket type routes the message through the Velocity proxy to wherever the player currently is; (2) if no carrier player is available to send the packet, a__notify_expired__<rule>flag is written to the shared database; (3) a 5-second async poll on every server checks online players for pending DB flags and delivers + clears them immediately — no reconnect required. The rule revert itself always completes successfully; only the notification delivery was affected. - ProtocolLib Async Entity Lookup Spam:getEntityFromID()was being called from ProtocolLib packet listeners on async threads (e.g. triggered by Orebfuscator), causing console spam and unsafe cross-thread world access. Entity ID to UUID resolution is now handled via a localConcurrentHashMapcache populated at join and cleared at quit, keeping all lookups off the world thread entirely. (Thanks SimplyRan, PR #5) - Folia Crash: Night Vision Applied from Global Scheduler: When cross-server vanish sync (Redis) applied vanish effects from the global region scheduler, callingplayer.addPotionEffect()andplayer.removePotionEffect()directly caused anUnsupportedOperationExceptionon Folia because the global scheduler does not own any player entity's region. Night vision potion calls inapplyVanishEffects,removeVanishEffects, andresyncVanishEffectsare now dispatched throughvanishScheduler.runEntity(), which routes to the entity's own region scheduler on Folia and to the main thread on all other platforms. (Thanks SimplyRan, PR #1) - Silent Container Item Duplication: Opening containers while vanished could cause items to duplicate or appear as wrong state. The root cause was a snapshot-copy approach — changes were written to a copy of the inventory and synced back on close, but the sync-back could overwrite concurrent item movements (hoppers, other players) and double-count items. Containers are now opened directly against the real inventory, matching vanilla behaviour exactly. - Storage Backend Not Applied After `/vanishreload`: Changingstorage.typeinconfig.yml(e.g. fromYAMLtoPOSTGRESQL) had no effect until the server was fully restarted./vanishreloadnow shuts down the active storage provider and reinitializes it from the current config, making storage type changes take effect immediately. - `/vanishscoreboard` Visible in Tab-Complete for All Players: The command appeared in tab-complete for players who lackedvanishpp.scoreboard, revealing the feature's existence. The command entry inplugin.ymlnow declarespermission: vanishpp.scoreboard, causing Bukkit to hide it from players without that node. - MobAiManager Crash on Spigot/Bukkit:MobAiManagercalledBukkit.getMobGoals()— a Paper-only API — unconditionally on startup, causingNoSuchMethodErrorcrashes on Spigot and Bukkit when the listener was registered. The manager is now only registered when the Paper API surface is confirmed present (Paper, Purpur, Folia). Mob AI goal injection and the 20-tick sweep remain fully operational on all Paper-family servers; on Spigot/Bukkit mob targeting prevention continues to work viaEntityTargetEvent.1.1.6Vanish++ 1.1.6Apr 7, 2026 Added
- Vanish Scoreboard: A configurable sidebar scoreboard shown automatically to vanished players (vanishpp.scoreboard). Displays world, TPS, online count, coordinates, direction, biome, ping, health, food, armor, time, date, vanish level, and more. Updates coordinates in real-time on movement via ProtocolLib packet listener (with configurable cooldown). Toggle manually with/vscoreboard. Auto-shows on vanish, hides on unvanish. Configured inscoreboards.yml. Reloads with/vreload. - `/vscoreboard` Command: Toggle the vanish scoreboard on/off. Requiresvanishpp.scoreboard. - Scoreboard Placeholders: Full set of built-in placeholders:%world%,%tps%,%tps_raw%,%online%,%max_players%,%vanished_count%,%x%,%y%,%z%,%direction%,%biome%,%ping%,%gamemode%,%health%,%max_health%,%food%,%armor%,%level%/%vanish_level%,%player%,%displayname%,%memory_used%,%memory_max%,%entities%,%chunks%,%time%,%date%. PlaceholderAPI supported. - `/vlist` Interactive Player Names: Each player name in/vlistoutput is now clickable. Hovering shows the player's vanish level and world; clicking runs/vanish <player>to unvanish them instantly. - Periodic Update Checker: The update checker now re-runs every hour in the background — not just once on startup. Staff withvanishpp.updateare notified without needing a server restart. - SQL Schema Versioning: MySQL/PostgreSQL storage now tracks a schema version invpp_schema_versionand runs structured migrations on startup, allowing for future schema changes. Schema v2 addscreated_at/updated_atcolumns for future audit trail features. - Real-Time Database Sync: Vanish state changes (vanish/unvanish) are now persisted to the database asynchronously, so storage I/O never blocks the main thread on join or leave. Rules and vanish state are kept in a per-player in-memory cache — pre-populated async on join and cleared on quit — eliminating database round-trips on hot event paths (block breaks, entity damage, etc.). - Database Connection Error Notifications: When database connectivity fails, staff withvanishpp.adminor OP status are notified in-game (throttled every 5 minutes to prevent spam). Helps identify infrastructure issues without requiring log file access. - Proxy Plugin Integration Documentation: Complete guide for proxy plugins (BungeeCord/Velocity) to read vanish state directly from the database. Includes example adapters and security best practices.Changed
- Spectator Quick-Switch Restores Exact Gamemode: Double-shifting out of Spectator now returns the player to the gamemode they were in before entering Spectator (Creative, Adventure, Survival), not always Survival. - DiscordSRV Fake Join/Leave Use Embed Format: Fake join and leave messages sent to Discord on vanish/unvanish now use DiscordSRV's ownsendJoinMessage()/sendLeaveMessage()methods, honouring the embed, colour, avatar, and webhook settings configured in DiscordSRV'smessages.yml. Previously they were always plain bold text regardless of configuration. - Scoreboard Column Auto-Alignment: Lines containing a|separator are automatically padded so the separator lands at the same column on every line. Label widths are measured after stripping color codes. Works for any custom label length — no manual padding needed. - Scoreboard Hides Score Numbers: Score numbers on the right side of the sidebar are hidden using Paper'sNumberFormat.blank()API for a cleaner look. - Config Defaults Hardened: All config reads now use explicit fallback defaults. Previously, deleted or missing keys would silently producefalse/0— now the intended default is always applied even on a stripped config file. - Database Transaction Safety:removePlayerData()now uses transactions to ensure all-or-nothing deletion. Connection errors during cleanup are logged but don't partially corrupt data. - Network Sync Idempotency: Cross-server vanish sync (Redis) now ignores duplicate messages to prevent visibility state divergence if network flakiness causes message replays.Fixed
- Folia Crash on Startup: Folia 1.21.11 renamed the internal detection class used by the scheduler bridge, causing the plugin to loadBukkitSchedulerBridgeinstead ofFoliaSchedulerBridge. AddedBukkit.getName()as a fallback detection method. Additionally, Folia forbidsScoreboardManager.registerNewTeam()on the startup thread — team setup is now deferred to the global region scheduler, andvanishTeamusages are null-guarded for the brief window before it completes. - Action Bar Warning Overwritten: Warning messages (e.g., "Action Blocked") shown in the action bar were immediately erased by the vanish status bar on the next scheduler tick. Warnings now display for their full intended duration before the status bar resumes. - `prevent-potion-effects` Wrong Default: This setting defaulted totruein code, silently blocking all potion effects (including healing potions thrown by staff) on servers where the key was missing fromconfig.yml. Corrected tofalse. - SQL Acknowledgements Not Persisted: Thevpp_acknowledgementstable was missing from the MySQL/PostgreSQL schema. Persistent acknowledgements (ProtocolLib missing warning, config migration reports) were silently ignored for SQL storage users — they are now stored and respected correctly. - SQL `removePlayerData` Left Stale Acknowledgements: Removing a player's data via SQL did not delete their acknowledgement rows. Stale entries could suppress future notifications for that UUID. Now cleared along with rules and level data in a single transaction. - SQL `getRules` Returned Strings Instead of Booleans:getRules()returned raw SQL text values ("true","false") instead ofBooleanobjects, breaking any code comparing rule values by type. Values are now parsed toBooleanbefore being returned. - PostgreSQL `addAcknowledgement()` Syntax Error: PostgreSQLON CONFLICTclause was incomplete, missing the constraint columns. Now correctly usesON CONFLICT (uuid, notification_id) DO NOTHING. - Redis Subscriber Thread Leak: The Redis subscriber thread was never gracefully shut down on plugin reload, causing lingering connections and resource exhaustion. Now properly interrupts the thread with timeout and closes Jedis resources. - Folia Visibility Sync Thread Safety: Visibility sync task could causeConcurrentModificationExceptionin Folia's multi-region environment. Now uses immutable snapshots for safe iteration. - SQL Schema Migration Idempotency: Callinginit()multiple times (e.g., on reload) would fail with primary key violations. Now idempotent and safe to call repeatedly. - Database Error Visibility: Silent database failures provided no feedback to admins. Connection errors are now logged to console and notified to staff in-game. - DiscordSRV Advancement Leak: Vanished players completing advancements no longer trigger Discord announcements. Suppressed viaAchievementMessagePreProcessEventas a safety net in addition to DiscordSRV's native vanish check. - DiscordSRV Death Leak: Vanished players dying no longer trigger Discord death announcements. Suppressed viaDeathMessagePreProcessEventas a safety net.1.1.6.1Vanish++ v1.1.6.1 BETAApr 4, 2026 Added
- Vanish Scoreboard: A configurable sidebar scoreboard shown automatically to vanished players (vanishpp.scoreboard). Displays world, TPS, online count, coordinates, direction, biome, ping, health, food, armor, time, date, vanish level, and more. Updates coordinates in real-time on movement via ProtocolLib packet listener (with configurable cooldown). Toggle manually with/vscoreboard. Auto-shows on vanish, hides on unvanish. Configured inscoreboards.yml. Reloads with/vreload. - `/vscoreboard` Command: Toggle the vanish scoreboard on/off. Requiresvanishpp.scoreboard. - Scoreboard Placeholders: Full set of built-in placeholders:%world%,%tps%,%tps_raw%,%online%,%max_players%,%vanished_count%,%x%,%y%,%z%,%direction%,%biome%,%ping%,%gamemode%,%health%,%max_health%,%food%,%armor%,%level%/%vanish_level%,%player%,%displayname%,%memory_used%,%memory_max%,%entities%,%chunks%,%time%,%date%. PlaceholderAPI supported. - `/vlist` Interactive Player Names: Each player name in/vlistoutput is now clickable. Hovering shows the player's vanish level and world; clicking runs/vanish <player>to unvanish them instantly. - Periodic Update Checker: The update checker now re-runs every hour in the background — not just once on startup. Staff withvanishpp.updateare notified without needing a server restart. - SQL Schema Versioning: MySQL/PostgreSQL storage now tracks a schema version invpp_schema_versionand runs structured migrations on startup, allowing for future schema changes. Schema v2 addscreated_at/updated_atcolumns for future audit trail features. - Real-Time Database Sync: Vanish state changes (vanish/unvanish) are now persisted to the database asynchronously, so storage I/O never blocks the main thread on join or leave. Rules and vanish state are kept in a per-player in-memory cache — pre-populated async on join and cleared on quit — eliminating database round-trips on hot event paths (block breaks, entity damage, etc.). - Database Connection Error Notifications: When database connectivity fails, staff withvanishpp.adminor OP status are notified in-game (throttled every 5 minutes to prevent spam). Helps identify infrastructure issues without requiring log file access. - Proxy Plugin Integration Documentation: Complete guide for proxy plugins (BungeeCord/Velocity) to read vanish state directly from the database. Includes example adapters and security best practices.Changed
- Spectator Quick-Switch Restores Exact Gamemode: Double-shifting out of Spectator now returns the player to the gamemode they were in before entering Spectator (Creative, Adventure, Survival), not always Survival. - DiscordSRV Fake Join/Leave Use Embed Format: Fake join and leave messages sent to Discord on vanish/unvanish now use DiscordSRV's ownsendJoinMessage()/sendLeaveMessage()methods, honouring the embed, colour, avatar, and webhook settings configured in DiscordSRV'smessages.yml. Previously they were always plain bold text regardless of configuration. - Scoreboard Column Auto-Alignment: Lines containing a|separator are automatically padded so the separator lands at the same column on every line. Label widths are measured after stripping color codes. Works for any custom label length — no manual padding needed. - Scoreboard Hides Score Numbers: Score numbers on the right side of the sidebar are hidden using Paper'sNumberFormat.blank()API for a cleaner look. - Config Defaults Hardened: All config reads now use explicit fallback defaults. Previously, deleted or missing keys would silently producefalse/0— now the intended default is always applied even on a stripped config file. - Database Transaction Safety:removePlayerData()now uses transactions to ensure all-or-nothing deletion. Connection errors during cleanup are logged but don't partially corrupt data. - Network Sync Idempotency: Cross-server vanish sync (Redis) now ignores duplicate messages to prevent visibility state divergence if network flakiness causes message replays.Fixed
- Folia Crash on Startup: Folia 1.21.11 renamed the internal detection class used by the scheduler bridge, causing the plugin to loadBukkitSchedulerBridgeinstead ofFoliaSchedulerBridge. AddedBukkit.getName()as a fallback detection method. Additionally, Folia forbidsScoreboardManager.registerNewTeam()on the startup thread — team setup is now deferred to the global region scheduler, andvanishTeamusages are null-guarded for the brief window before it completes. - Action Bar Warning Overwritten: Warning messages (e.g., "Action Blocked") shown in the action bar were immediately erased by the vanish status bar on the next scheduler tick. Warnings now display for their full intended duration before the status bar resumes. - `prevent-potion-effects` Wrong Default: This setting defaulted totruein code, silently blocking all potion effects (including healing potions thrown by staff) on servers where the key was missing fromconfig.yml. Corrected tofalse. - SQL Acknowledgements Not Persisted: Thevpp_acknowledgementstable was missing from the MySQL/PostgreSQL schema. Persistent acknowledgements (ProtocolLib missing warning, config migration reports) were silently ignored for SQL storage users — they are now stored and respected correctly. - SQL `removePlayerData` Left Stale Acknowledgements: Removing a player's data via SQL did not delete their acknowledgement rows. Stale entries could suppress future notifications for that UUID. Now cleared along with rules and level data in a single transaction. - SQL `getRules` Returned Strings Instead of Booleans:getRules()returned raw SQL text values ("true","false") instead ofBooleanobjects, breaking any code comparing rule values by type. Values are now parsed toBooleanbefore being returned. - PostgreSQL `addAcknowledgement()` Syntax Error: PostgreSQLON CONFLICTclause was incomplete, missing the constraint columns. Now correctly usesON CONFLICT (uuid, notification_id) DO NOTHING. - Redis Subscriber Thread Leak: The Redis subscriber thread was never gracefully shut down on plugin reload, causing lingering connections and resource exhaustion. Now properly interrupts the thread with timeout and closes Jedis resources. - Folia Visibility Sync Thread Safety: Visibility sync task could causeConcurrentModificationExceptionin Folia's multi-region environment. Now uses immutable snapshots for safe iteration. - SQL Schema Migration Idempotency: Callinginit()multiple times (e.g., on reload) would fail with primary key violations. Now idempotent and safe to call repeatedly. - Database Error Visibility: Silent database failures provided no feedback to admins. Connection errors are now logged to console and notified to staff in-game. - DiscordSRV Advancement Leak: Vanished players completing advancements no longer trigger Discord announcements. Suppressed viaAchievementMessagePreProcessEventas a safety net in addition to DiscordSRV's native vanish check. - DiscordSRV Death Leak: Vanished players dying no longer trigger Discord death announcements. Suppressed viaDeathMessagePreProcessEventas a safety net.1.1.5Vanish++ 1.1.5Mar 28, 2026 Added
- Spectator Quick-Switch: Vanished players withvanishpp.spectatorcan double-tap Shift to toggle Spectator mode instantly. Double-tap again to return to the previous gamemode. Unvanishing while in Spectator forces the player back automatically (bypassed byvanishpp.spectator.bypass). - `spectator_gamemode` VRule: New per-player rule to enable or disable the Spectator quick-switch. Default:true. Configurable globally undervanish-gamemodes.enabled.Changed
- Spectator Mode Feedback: The action bar notification shown when entering or exiting Spectator mode is now displayed for 3 seconds and is no longer immediately overwritten by the vanish status indicator. - Unknown Command on Permission Denied: Players without permission to use any Vanish++ command now receive a vanilla-style "Unknown command" response instead of a permission-denied message, preventing server staff plugin discovery.Fixed
- Mob Despawning Near Vanished Players: Mobs no longer despawn when chunks are reloaded near a vanished player. The previoussetAffectsSpawning(false)call incorrectly caused the server to ignore vanished players for mob lifecycle calculations. Pressure plate suppression is now handled exclusively by theCAN_TRIGGER_PHYSICALrule, which was already in place. - Mobs Not Attacking Non-Vanished Players: RemovedMobAiManager, which replaced the vanillaLookAtPlayerGoalfor all mobs globally. The PaperMobGoalsAPI used to inject the custom goal was causing mob attack AI to break for all players. Attack prevention for vanished players is now handled entirely throughEntityTargetEvent. - `can_throw` Rule Had No Effect: Throwing projectiles (snowballs, eggs, ender pearls, potions, bows, crossbows) whilecan_throwwas enabled was still blocked becausePlayerInteractEventcancelled the right-click beforeProjectileLaunchEventcould fire. The interact handler now permits throwable items through whencan_throwis enabled, even ifcan_interactis disabled. - Spawn Eggs Always Blocked: Spawn eggs were blocked unconditionally regardless of thecan_throwrule state. They now respect the rule correctly. - Periodic Mob Pathfinding Interruption: The background sync task was callingstopPathfinding()on all nearby mobs every 0.5 seconds. This caused mobs to appear passive and disrupted vanilla mob behaviour for all players. Mob targeting is now handled reactively viaEntityTargetEventonly.1.1.4Vanish++ 1.1.4Mar 18, 2026 Added
- `can_throw` VRule: New personal rule controlling whether vanished players can throw items (eggs, snowballs, ender pearls, potions, bows, crossbows). Default:false. Fully integrated with interactive chat buttons ([Allow 1m],[Allow permanently],[Hide notifications]). - Staff Glow Indicator: Vanished players now render with a glowing outline for staff withvanishpp.see. Uses packet-level metadata injection — non-staff never see it. Enabled by default (vanish-appearance.staff-glow: true). - Vanish State Resync Engine: NewresyncVanishEffects()system that reapplies all vanish state (team, prefix, metadata, fly, night vision, collision, mob targeting, visibility, glow) without touching storage. Triggered automatically on respawn, world change, and gamemode change. - Respawn Handler: Vanish state (fly, invisibility, glow, collision) is now fully restored after death and respawn. - World Change Handler: Nether/End portal transitions no longer break vanish state. - Gamemode Change Handler: Changing gamemode (e.g.,/gamemode survival) while vanished no longer disables flight. - [Unvanish] Button: All blocked-action messages now include a convenient[Unvanish]button alongside[Allow 1m],[Allow permanently], and[Hide notifications]. - Fast Sync Loop: Heartbeat task now runs every 10 ticks with visibility fix, team/prefix reapply, glow metadata resend, and mob targeting — ensuring all vanish features stay in sync continuously. - Explicit Glow Metadata Packets: Staff glow is now sent via direct ProtocolLibENTITY_METADATApackets rather than relying on entity respawn metadata, ensuring the glow appears instantly. - Multi-Stage Join Prefix: Tab prefix is now reapplied at 2, 20, and 60 ticks after join — catches TAB plugin async overrides at different pipeline stages. - Snapshot Silent Chests: Barrels and containers are now opened as inventory snapshots (copy of the real inventory). Changes sync back on close. This eliminatesContainer.startOpen()entirely, preventing animation and sound at the source. - Reload Resync:/vreloadnow refreshes team prefix and resyncs all online vanished players' effects. - Setup Advisor (Config Sanity Checker): On startup, Vanish++ now scans the active configuration and warns if: -hooks.simple-voice-chat.enabledistruebut SimpleVoiceChat is not installed. -hooks.essentials.simulate-join-leaveistruebut EssentialsX is not installed. - Any message string contains a PlaceholderAPI placeholder (%token%) but PlaceholderAPI is not installed. - Warnings are printed to the console and shown in-chat to all players withvanishpp.seeon their next login, making it easy to spot setup issues without reading logs. - Comprehensive Automated Test Suite: 143 unit tests across 6 test classes covering every feature — commands, event listeners, storage, permissions, rules, and integration scenarios. All tests pass on clean build. - Full Localization (i18n): Complete multi-language support. - All messages and system reports moved tolang/en.yml. - Automatic fallback system for missing keys. - Simplifiedconfig.ymlwith a newlanguagetoggle. - Rich Text Support: Integrated MiniMessage for modern, easy-to-read chat formatting using tags (e.g.,<red>,<bold>,<click>). - PlaceholderAPI Integration: Full support for dynamic placeholders in all plugin messages and the Action Bar. - Folia Support: Rewritten scheduler and event handling to support Folia's multi-threaded region architecture. - Config Reload: Added/vreloadcommand to apply configuration and language changes instantly without server restarts. - Interactive Reports: Professional clickable components in all command outputs. - Titan Stealth Engine: Absolute packet-level invisibility for vanished administrators. The server now acts as if the vanished player does not exist in the network data. - Tab List & Info Filtering: BlockedPLAYER_INFOandPLAYER_INFO_UPDATEpackets to prevent any tab list flicker or presence detection. - Ghost-Proof Spawning: InterceptedSPAWN_ENTITYandNAMED_ENTITY_SPAWNto ensure vanished players are never spawned on unauthorized clients. - Absolute Metadata & Update Blocking: High-priority interceptors forENTITY_METADATA,ENTITY_EQUIPMENT,ANIMATION,ENTITY_EFFECT,ENTITY_STATUS, andENTITY_SOUND_EFFECTto ensure zero data leakage. - Movement & Velocity Filtering: BlockedENTITY_VELOCITY,REL_ENTITY_MOVE,ENTITY_LOOK,ENTITY_TELEPORT, andENTITY_HEAD_ROTATIONto eliminate coordinate-level leaks. - Action Scrubber: InterceptedCOLLECT(item pickups) andSET_PASSENGERS(mounting) to scrub vanished names even when they are not the primary entity. - Team Scrubbing: InterceptedSCOREBOARD_TEAMto remove vanished names from any raw team packets sent to non-staff. - Plugin Hiding: "Vanishpp" is now hidden from/plugins(or/pl) for non-OPs. Administrators see a filtered list with a delayed interactive notification to temporarily unhide or acknowledge the feature. - Strict Command Permissions: All commands now enforce strict permissions inplugin.yml. Unauthorized players cannot see commands in Tab-Complete. - Config Logic:vanishMessage,unvanishMessage,fakeJoinMessage, andfakeQuitMessagelogic updated. Setting these to"false","none", or leaving them empty inconfig.ymlnow properly disables the message. - Persistence: Acknowledging the plugin hiding warning now saves the preference todata.ymlspecifically for the current version.Changed
- Silent Chest Architecture: Replaced the spectator-mode workaround with a snapshot inventory system. Vanished players now open a copy of the container, and edits sync back on close — no animation, no sound, full item interaction. - Throwable Blocking: Throwables (eggs, bows, ender pearls, etc.) are now governed by thecan_throwVRule instead of being unconditionally blocked. Players can toggle this rule like any other. - Spawn Egg Messages: Spawn eggs now use the standardsendRuleDenysystem withcan_throw, providing interactive buttons instead of a static message. - Sound Suppression: Silent chest sound listener now covers bothNAMED_SOUND_EFFECTandCUSTOM_SOUND_EFFECTpackets with robust multi-offset coordinate detection. - Config Structure: Significant cleanup ofconfig.yml. Legacy message blocks removed in favor oflang/*.yml. - Performance: Optimized visibility checks and metadata handling for better server performance.Fixed
- DiscordSRV Join/Quit Suppression: DiscordSRV now fully suppresses join and quit announcements on Discord for players who rejoin with persisted vanish state. Previously, only chat suppression worked — Discord join messages leaked through. - Barrel/Shulker Silent Opening: Opening barrels and shulker boxes while vanished no longer leaks the open/close animation or sound to nearby players. Previously, theContainer.startOpen()call triggered both. - Join Prefix Delay: The vanish tab prefix ([V]) now appears within ~100ms of joining instead of taking 3+ seconds. Multi-stage reapplication handles TAB plugin async overrides. - Throwable Items Leaked Position: Throwing eggs, snowballs, ender pearls, and shooting bows while vanished created visible projectile entities that revealed the player's position. Now blocked by default via thecan_throwrule. - Spawn Egg Rule Bypass: TheCAN_INTERACTrule had no effect on spawn eggs due to incorrect check ordering. Spawn eggs are now properly governed bycan_throw. - Vanish State Lost on Respawn: Dying and respawning while vanished caused loss of fly, invisibility, glow, collision settings, and night vision. - Vanish State Lost on World Change: Entering nether/end portals br1.1.3Vanish++ 1.1.3Feb 2, 2026 Added
- No-Delay Notifications: Completely removed the 60-second cooldown for rule notification alerts. Players now receive immediate feedback every time an action is blocked while vanished. - Enhanced Splash Protection: Vanished players are now strictly immune to Splash Potions and Lingering Potion Clouds. They are automatically removed from the list of affected entities. - Titan God Mode: Vanished players are now strictly invincible. They take no damage and are immune to all external potion effects (splash potions, mob effects). - Interactive Help System: Added/vhelpand/vhelp <command>. A professional, clickable chat menu that explains every command, usage, aliases, and permissions. - Smart-Merge Migration (v2): Completely overhauled the configuration update system. Future config changes now recursively copy all user-customized values (messages, rules, prefixes) into new versions without loss. NOTE: Critical fix applied to prevent data loss on update failure. - Join Notification Delay: All join notifications (warnings, updates, migrations) now wait 250ms to ensure they appear at the bottom of the chat, visible above other plugin spam. - Acknowledgement System: Migration reports now stay visible on join until specifically hidden via the new [HIDE] button.Changed
- Unified Rules:/vpickupand other individual toggles now strictly sync with the RuleManager engine. - Config Cleanup: Removed redundantdatasection fromconfig.ymldefault template to prevent user confusion (usesdata.ymlexclusively). - Downgraded Requirement: Reverted target Minecraft version to 1.21.11 (Paper) and ProtocolLib 5.4.0 for broader compatibility.Fixed
- Critical Migration Bug: Fixed a logic error where the migration manager would overwrite the configuration file with a default template before saving the merged data, leading to reset settings if the save failed. - Prefix Leakage: Strictly decoupled Tab prefixes from Nametag prefixes. Prefix text will no longer "leak" into Scoreboards or the Social Interaction menu. - Persistence Fix: Fixed an issue where manual config edits were overwritten by the plugin's automatic data saving.1.1.2Vanish++ 1.1.2Jan 22, 2026 Fixed
- Config Bug: The config now affects if the fake join and leave messages display when vanishing.1.1.1Vanish++ 1.1.1Jan 19, 2026 Fixes and Update Checker implemented
Added
- Smart Mob AI (True Sight Engine): - Vanish++ now injects custom AI goals into server mobs. Mobs will physically ignore vanished players—they will not look at you, track you, or turn their heads, even if you stand directly in front of them. - This replaces the old "Invisibility Potion" workaround, allowing Staff to see each other's armor/skins clearly while remaining invisible to mobs. - Modrinth Update Checker: - Added an asynchronous update checker. OPs (or those withvanishpp.update) will receive a notification on join if a newer version is available on Modrinth. - Settings added toconfig.ymlto toggle this feature or restrict it to a specific list of players. - Data Separation (Config Fix): - Createddata.yml. Dynamic data (vanished players, ignored warnings, custom rules) is now stored here. - Fix: This preventsconfig.ymlfrom being overwritten on server restart, allowing you to edit settings safely while the server is running. - Temporary Rules: - The/vrulescommand now accepts a duration. - Example:/vrules can_break_blocks true 60will allow breaking blocks for 60 seconds, then automatically disable it. - Visual Feedback: - Added Action Bar alerts ("Action Blocked") when a player attempts a prohibited action, providing immediate feedback without spamming chat. - Added an [ENABLE 1m] button to chat warnings for quick temporary overrides.
Fixed
- ProtocolLib Crashes: Fixed criticalNullPointerExceptionandFieldAccessExceptioncrashes on 1.21+ servers caused by malformed packets from other plugins. - TAB Plugin Compatibility: Fixed a crash with the TAB plugin hook by switching to the correct API method for prefix management.1.1.0Vanish++ 1.1.0Jan 3, 2026 Massive feature update and fixes :D
[1.1.0] - 2026-01-03
Added
- Java 21 / MC 1.21 Support: Full compatibility with the latest Minecraft versions. - Legacy Plugin Compatibility: Vanished players now automatically have the standard Bukkit"vanished"metadata set. - Dependency Warning System: Added a chat/title/sound warning for OP players on join if ProtocolLib is missing. - Ignore Warning Command: Added/vanishignoreto permanently silence the ProtocolLib warning. - Universal Command Targets:/vrules,/vpickup, and/vignorenow accept an optional target player. - Heartbeat Synchronization: Force-refreshes visibility every second to handle permission changes instantly. - ProtocolLib Tab Scrubbing: Vanished players are removed from Tab-Complete packets. - Dropping Rule: Addedcan_drop_itemsrule (Default: false). - TAB Plugin Hook: Native integration with NEZNAMY's TAB plugin to set prefixes without placeholders.Changed
- Visibility Logic: Removed the Vanilla Invisibility Potion effect. This ensures that Staff with permission can see the vanished player's armor and skin, while normal players still see nothing (handled via packet hiding). - Mob AI: Mobs are prevented from targeting vanished players via event cancellation, though head tracking may occur visually due to the removal of the invisibility potion.Fixed
- Mob Gazing: Fixed mobs looking at vanished players. - Join Visibility Flash: Moved join event priority toLOWEST. - Server List Hover: Fixed a bug where vanished players appeared in the sample list. - Chat Confirmation Loop: Fixed logic so confirmed messages don't re-trigger the blocker.[1.0.4] - 2025-12-25
Added
- ProtocolLib Integration: - Ghost View: Staff members see vanished players in the TabList as Spectators (gray/italic). - True Invisibility: Packet-level hiding from Server List counts. - Plugin Hooks: EssentialsX, Dynmap, PlaceholderAPI. - Per-Player Rules: Added/vrulesconfiguration. - Chat Confirmation: Added/vanishchat.Fixed
- Projectile Physics: Switched to Paper'sProjectileCollideEvent. Arrows physically pass through vanished players. - Entity Collision: Disabled collision via Scoreboard Teams.[1.0.3] - 2025-12-25
Added
- ProtocolLib Integration: - Ghost View: Staff members with permission (vanishpp.see) now see vanished players in the TabList as Spectators (gray and italicized), distinguishing them from normal players. - True Invisibility: Packet-level handling ensures vanished players are completely hidden from the Server List player count. - Plugin Hooks: - EssentialsX: Vanished players are now hidden from/who,/list, and/online. - Dynmap: Vanished players are automatically hidden from the web map. - PlaceholderAPI: Added%vanishpp_is_vanished%and%vanishpp_vanished_count%placeholders. - Per-Player Rules System: Added/vanishrules(alias/vrules) to configure personal restrictions (breaking blocks, hitting entities, etc.). - Chat Confirmation: Added/vanishchat. If strict chat rules are enabled, players must confirm messages before sending them to prevent accidental leaks.Fixed
- Projectile Physics (Native Pass-Through): - Switched to Paper'sProjectileCollideEventfor absolute stability. - Arrows, tridents, and snowballs now natively pass through vanished players without any "teleporting" hacks or visual glitches. It is now physically impossible to hit a vanished player with a projectile. - Entity Collision: Vanished players can no longer push or be pushed by other entities (players, mobs, boats) via Scoreboard Team collision rules. - Data Persistence: Player rules and settings now save correctly toconfig.yml(underdata).Changed
- Dependencies: AddedProtocolLib,PlaceholderAPI,Dynmap, andEssentialsXas soft dependencies. All notable changes to this project will be documented in this file.[1.0.2] - 2025-012-25
Added
- Per-Player Rules System: Introduced the/vanishrules(alias/vrules) command. Vanished players can now granulary configure what they can and cannot do while vanished. - Usage:/vrules <rule> [true|false]- Available Rules: -can_break_blocks(Default: true): Allow/disallow breaking blocks. -can_place_blocks(Default: true): Allow/disallow placing blocks. -can_hit_entities(Default: false): Prevents hitting players or mobs to ensure absolute stealth. -can_pickup_items(Default: false): Toggles item pickup (Replaces the old toggle command). -can_trigger_physical(Default: false): Prevents triggering pressure plates, tripwires, farmland, and turtle eggs. -can_interact(Default: true): Allow/disallow opening chests, using buttons, levers, etc. -can_chat(Default: false): If disabled, chat messages require manual confirmation. -mob_targeting(Default: false): If enabled, mobs will attack you even while vanished. - Accidental Chat Prevention: If thecan_chatrule is disabled, attempting to chat will now block the message and prompt you to run/vanishchat confirmto send it. - Command Feedback: Added clear, color-coded chat feedback for all command interactions.Fixed
- Projectile Phasing (The "Matrix" Fix): Completely overhauled how arrows and projectiles interact with vanished players. - Previously, arrows would bounce off or drop at the player's feet, revealing their location. - Now: Projectiles detect the vanished player, are momentarily removed, and instantly re-spawned on the other side of the player with the exact same velocity and shooter data. To outside observers, arrows now fly perfectly straight through vanished players as if they were truly ghosts. - Entity Collision: Fixed an issue where vanished players could push or be pushed by other entities (players, boats, mobs). Collision is now strictly disabled via Scoreboard Teams logic. - Data Persistence: Player rules and settings are now saved reliably in thedatasection of the configuration, ensuring settings persist across server restarts.[1.0.1] - 2025-06-10
Added
- Silent Chests: Opening Chests, Shulker Boxes, and Barrels while vanished is now silent (no animation/sound) and lets you view the inventory without alerting others. - Night Vision: Vanished players automatically get Night Vision. - Flight Mode: Vanished players can now fly automatically, even in Survival. - Mob Stealth: Mobs will no longer target vanished players. - No Hunger: Vanished players no longer lose hunger. - Configuration: Addedinvisibility-featuressection toconfig.ymlto toggle these new features.Fixed
- Arrow Phasing: Arrows and projectiles now pass through/ignore vanished players, preventing the "floating arrow" glitch and ensuring stealth. - Silent Chest Animation: Utilized a temporary spectator-mode switch to ensure chest lid animations do not trigger for other players.1.0.0Vanish++ 1.0.0Jun 8, 2025 The first stable and fully working release of Vanish++!
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta