Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details
VanishSystem
Vanishes a staff member and hides more than just the model of the player.
Vanish staff will no longer show up in the server list, tab completion, tab list or mob interaction. No player can step into them. With the addition of PacketEvents footstep sounds, scoreboard insertions and particles will also stop. Console and server log will still see them.
Overview
- Vanish self, another player or an offline player and have them log in as invisible. Timed vanish will automatically reappear.
- Job based profiles: observation, builder, strict-ghost and 6 others. These determine what the player may interact with and who may view the player.
- Lock chat during a vanish. Public chat is hidden during a vanish and can be unlocked with a click. This allows for personal messages to not be seen in public chat.
- Watch commands: follow, return, silent teleport and target. These all display the health, food, location, ping and coordinates of the target. There is also an option to view the target silently.
- An audit log exists for vanishes, forced un-vanishes, silent opening of chests and teleportations.
What can players see
| Without PacketEvents | With PacketEvents | |
|---|---|---|
| Player model, name completion, tab entry, hiding | hidden | hidden |
| Number of server list entries | adjusted (Paper) | filtered |
| Commands | visible | visible |
| "Player not found" | same | same |
| Footsteps, hurt, eating sounds | still sent | filtered |
| Sprint particles, crit particles | still sent | filtered |
| Scoreboard team entries | still sent | filtered |
| Mob targeting, arrows, pressure plates, collisions | prevented | prevented |
| Console, server output | visible | visible |
"Still sent" entries will only be visible from a client designed to detect them. The packet layer handles this.
Features
- Ghost mode: No collisions, arrows pass through, pressure plates and sculk sensors are silent, mobs stop targeting you and you no longer contribute to the sleep percentage
- Safety: protection from fire, freezing, hunger, air loss and damage. Rescue from the void and a check before being teleported to an unsafe location
- Per-profile restrictions: breaking, placing, containers, pickup, redstone, mounting, trading, etc. with individual permissions. All off by default
- Fake join/leave events, configurable per viewer. Leaves appear as normal leaving
- Silent chests: no sound or lid movement to anyone other than authorized users. Requires PacketEvents
- Multi-tiered visibility: Optional. If a helper has a low see level they cannot see if an admin has vanished. Use
/vanish whycanseeto see the reasons for a visibility change - Indicators: Default is action bar. Title, chat and boss bar indicators are also available. Staff can enable/disable these themselves
- Storage: Default is a plain file. MySQL, MariaDB and SQLite are also available
- PlaceholderAPI placeholders that only display information that the viewer is permitted to view
Extra Information
- If no PacketEvents are installed, ping updates, scoreboard team packets, particles, sounds will still leave the server. A modified client will see these, but a normal client will not.
/who,/listor other plugins output is not altered. If you specify commands in the config, these will return not found instead.- Viewer glow, silent chests and remaining in the tab list all require PacketEvents. Folia also disables glow.
- Server list hover on Spigot is filtered, but the amount may or may not be reduced. Paper implements this properly.
- On Sponge, invisibility is all or nothing. A hidden player cannot be seen even by other operators.
- Inventory viewing is not supported. Use a separate invsee plugin for this.
Details
Commands
The main command handles /v, /vs and /vanishsystem. It can be renamed in the config.
| Command | What it does |
|---|---|
/vanish |
Toggles your own vanish |
/vanish on|off [player] [flags] |
Explicitly sets visibility for yourself or another player |
/vanish timed <duration> [profile] |
Vanishes for a specified duration |
/vanish extend <duration> |
Extends a timed vanish |
/vanish offline <player> <on|off> |
Determines how an offline player will reconnect |
/vanish network <on|off> |
Determines if vanish operates locally or across the network |
/vanish profile <name> |
Switches profiles with no visible delay |
/vanish level <number> |
Changes their use level |
/vanish list [offline|network] |
Hidden players you are allowed to see |
/vanish status [player] |
Provides information on the visibility status of a player |
/vanish whycansee <viewer> <target> |
Provides information on a visibility decision |
/vanish revealto|hideto <player> [duration] |
Allows for one specific viewer |
/vanish pickup|xppickup <on|off> |
Allows for item/XP pickup while hidden |
/vanish fly <on|off|speed> |
Allows for flying while hidden |
/vanish nightvision|noclip <on|off> |
Allows for private mobility effects |
/vanish visibleintab <on|off> |
Allows for visibility in the tab list |
/vanish publicchat <lock|unlock|once> |
Locks public chat |
/vanish interact <lock|unlock> [duration] |
Locks interaction |
/vanish target <player|nearest|next|previous|clear> |
Selects a target to watch |
/vanish follow <player|off> |
Follows the target |
/vanish tp <player> |
Silently teleports to a player |
/vanish return |
Returns to a previously saved location |
/vanish fakejoin|fakequit [player] |
Sends a fake join or quit event |
/vanish audit [player] [limit] |
Provides access to audit logs you can view |
/vanish menu |
Opens the staff menu |
/vanish doctor |
Provides health checks |
/vanish debug confirm |
Creates a redacted support file and places it in debug-reports/ |
/vanish sync |
Sends network sync |
/vanish reload |
Reloads. A corrupt config will be rejected and the previous config will remain active |
Toggle flags: -s Silent, -t Stay in tab, -n Network scope, -p <profile>, -l <level>, -d <duration>, -r "<reason>", -c <case id>, --confirm, --dry-run, --no-return, --no-fake-message. Invalid or contradictory flags cause an error, not silent failure.
Permissions
All attributes except for four vanish attribute nodes (vanish.protected, vanish.exempttarget, vanish.notoggle, and vanish.joinvanished) are given to operators. These four vanish attribute nodes are intentionally not given to operators and are instead given to specific ranks.
| Node | Covers |
|---|---|
vanish.use |
Vanish yourself. Recommended for staff in addition to vanish.see |
vanish.see |
See vanished players |
vanish.use.others, .offline, .network, .timed |
Vanish another player, an offline player, network wide or a timed vanish |
vanish.silent, vanish.showintab |
Silent and show in tab flags |
vanish.revealto, vanish.hideto |
Per viewer reveal flags |
vanish.chat.bypass, vanish.chat.unlock |
Allow public chat while vanished |
vanish.interact.bypass, vanish.interact.unlock |
Bypass interact restrictions |
vanish.place, vanish.break, vanish.pickup, vanish.container and others |
One node per restriction |
vanish.fly, vanish.noclip, vanish.nightvision, vanish.spectator |
Flight and movement options |
vanish.follow, vanish.target, vanish.return, vanish.teleport |
Observation options |
vanish.audit, .audit.location, .audit.ip, .audit.reason |
View the log with private fields broken out |
vanish.protected |
Can not be forced reveal or toggle by lower ranked staff |
vanish.use.level.<n>, vanish.see.level.<n>, vanish.use.profile.<name> |
Profile and layered visibility from config |
vanish.admin |
Contains all staff tools nodes |
Configuration
Configurations are separated by feature, which allows each file to remain relatively small. All plugins have a main config in config.yml within each module. Configuration files are created on first use and are never overwritten during plugin updates.
plugins/VanishSystem/
├── config.yml Main config, storage, modules and PacketEvents
├── messages.yml All messages
├── indicators/config.yml Title, scoreboard, boss bar, sounds, action bar
├── visibility/config.yml Protected accounts, levels and who can see whom
├── announcements/config.yml Staff messages and fake join/quit
├── profiles/config.yml Bundles of settings with names
├── restrictions/config.yml Actions allowed for vanished players
├── ghost/config.yml Sensors, projectiles and collisions
├── safety/config.yml Safe reappear, hunger and damage
├── movement/config.yml Noclip, spectator and flight
├── containers/config.yml Silent chests
├── chat/config.yml Confirmation and chat locking
├── discovery/config.yml Server list, target lookups and tab completion
├── target/config.yml Follow, teleport and target
├── gui/config.yml GUI for /vanish menu
├── audit/config.yml Auditing
├── network/config.yml Cross server vanish
└── language/en.yml Language files
PlaceholderAPI
%vanish_is_vanished% %vanish_state% %vanish_profile%
%vanish_duration% %vanish_use_level% %vanish_see_level%
%vanish_target% %vanish_packet_layer% %vanish_sync_status%
%vanish_online_visible% %vanish_online_public% %vanish_hidden_total%
%vanish_public_chat_locked% %vanish_prefix% %vanish_suffix%
The %vanish_online_visible% placeholder provides the actual amount to moderators and the public amount to non-mods all from the same placeholder. This allows one scoreboard to work for both mod and non-mod players. The %vanish_prefix% placeholder is empty if the player is visible.
Developer API
if (VanishAPI.isVanished(player)) {
return; // don't announce this player
}
if (!VanishAPI.canSee(viewer, target)) {
continue; // leave them out of your list
}
All functions are null safe and will gracefully deal with a missing VanishSystem. The isVanished function will also check the common vanished key set by EssentialsX, PremiumVanish and SuperVanish. Events: PlayerVanishEvent, PlayerReappearEvent (both are cancelable), the Post versions of each, target, level, profile and visibility events.










