SuperVanish >> Be invisible 6.2.0

Advanced /vanish plugin which makes other players think that you're not on the server

  1. MyzelYam
    Tested Minecraft Versions:
    • 1.7
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    • 1.13
    • 1.14
    • 1.15
    • 1.16
    Source Code:
    https://github.com/LeonMangler/SuperVanish
    Description
    This is an advanced vanish-plugin which makes other players think that you're not on the server.
    Great for catching griefers or testing out new moderators!
    Don't forget to install ProtocolLib first if you want to use the serverlist, action bar or silent chest features.
    1.16: Important - install the latest ProtocolLib dev build as described in ProtocolLib's resource description!

    Need more features or want to support me? Take a look at my other plugin, PremiumVanish!
    Features
    Invisible players are completely invisible
    Hides invisible players in the playerlist [Tab]
    Adjusts the amount of online players in the serverlist (Requires ProtocolLib)
    For players who are allowed to see a vanished player only the vanished player's head is visible and the vanished player's name is italic gray in the tablist (can be turned off)
    Layered permissions which allow you to configure who can see who precisely
    Shows action bars to invisible players (Requires ProtocolLib)
    You can change nearly every message from this plugin in messages.yml
    Invisible players are still invisible after join/quit
    Invisible players are still invisible after a reload/restart
    Invisible players cannot pick up items
    Disables the ''normal'' join/leave messages of hidden players
    Broadcasts a fake join/leave message on vanish and/or reappear
    Disables damage for invisible players
    Hides items in the hand of invisible players
    Hides the armour of invisible players
    You can reload the configuration in-game
    Invisible players can open chests silently (Requires ProtocolLib)
    Invisible players can't trigger pressure plates
    Invisible players can fly even if they are in survival mode
    Invisible players can't block the placement of blocks
    Invisible players can't block arrows (but get teleported two blocks up)
    Invisible players can't be tab-completed by players who can't see them
    Placeholder support for other plugins (see PlaceholderAPI github wiki)
    Support for DiscordMC (Install SuperVanishDiscordMC)
    Commands and Permissions
    [...] = Optional; <...> = Required
    /sv help - Shows a convenient help page with a list of commands
    /sv [on|off] - Hides/shows you - sv.use [.levelX]
    /sv [on|off] <player> - Hides/shows an other player - sv.others
    /sv reload - Reloads the config files - sv.reload
    /sv list - Shows a list of invisible players - sv.list
    /sv login - Broadcasts a login message - sv.login
    /sv logout - Broadcasts a logout message
    - sv.logout
    /sv recreatefiles [confirm|force] - recreates outdated config files - sv.recreatefiles
    /sv tipu - Toggles picking up items per player - sv.toggleitems
    /sv stacktrace - Logs information for reporting an issue
    Other notable permissions:
    sv.see
    [.levelX] - Players with this permission can see invisible players (if it's enabled in the config)
    sv.keepfly - Players without this permission will lose the ability to fly when they reappear and aren't in creative mode
    sv.notoggle - The vanish state of players with this permission cannot be changed by other players
    • A higher or equal level of sv.see overrides a lower or equal level of sv.use; A higher level of sv.use overrides a lower level of sv.see
    • Format: sv.use.level1, sv.use.level12, etc; sv.see.level1, sv.see.level43, etc
    • Example: If player1 has sv.use.level3 and player2 has sv.see.level3 then player2 can see player1 even if player1 is vanished, however if player1 has sv.use.level4 then player2 cant see him if he's vanished unless he has sv.see.level4 or higher
    • For example, you can use this feature to let nobody but the owner see admins but admins can still see mods and mods can see each other
    • "LayeredSeeAndUsePermissions" needs to be turned on in the config for this to work
    • Players need to rejoin for layered permission changes to register! Keep this in mind when demoting players.
    • sv.use and sv.see without any level still work and both are level 1
    • Players with sv.* and/or supervanish.* have access to sv.use.level1 and sv.see.level1 by default
    • Opped players or players with * perm have access to sv.see.level100 and sv.use.level100 and can therefore see any player and can not be seen by any player who hasn't got sv.see.level100
    • Maximum level: 100; Higher levels don't work
    Configuration
    The config is split into config.yml and messages.yml
    Both files are self-explaining
    Code (Text):
    [/LEFT]
    # SuperVanish v6.2.0 - Configuration

    ############# Invisibility Features ##############
    InvisibilityFeatures:
      # Should invisible players get night vision? (client-side; Requires ProtocolLib)
      NightVisionEffect: true
      # Should SV disable damage for invisible players?
      DisableDamage: true
      # Should SV disable hunger for invisible players?
      DisableHunger: true
      # Should SV prevent mobs from targeting invisible players?
      DisableMobTarget: true
      # Should invisible players open chests and shulker boxes without the animation and sound?
      # (This makes them go into spectator mode temporarily; Requires ProtocolLib)
      OpenChestsSilently: true
      # Should invisible players not be able to trigger pressure plates and tripwire?
      # If this feature is enabled invisible players can't trigger pressure plates and tripwire.
      DisablePressurePlates: true
      # Should invisible players not be able to push other players or be able to be pushed?
      # WARNING: Uses the scoreboard and may conflict with other plugins!
      DisablePush: false
      # Should vanished players pick up items by default? This can be changed individually with /sv tipu
      DefaultPickUpItemsOption: false
      # Should SV modify tablist packets to prevent the server from leaking who is online?
      ModifyTablistPackets: true

      Fly:
       # Should invisible players be able to fly even if they aren't in creative/spectator mode?
       Enable: true
       # Should invisible players WITHOUT the permission 'sv.keepfly' lose the ability to fly on reappear?
       DisableOnReappear: true

    ############# Vanish State Features ##############
    VanishStateFeatures:
      # Should players with the permission 'sv.joinvanished' join vanished all the time?
      # Doesn't work if you use GroupManager for permissions
      AutoVanishOnJoin: false
      # Should invisible players reappear automatically when they change their world?
      ReappearOnWorldChange: false
      # Should invisible players reappear automatically when they leave the server?
      ReappearOnQuit: false
      # Should invisible players reappear automatically
      # when they change their world and don't have the permission 'sv.use' anymore?
      CheckPermissionOnWorldChange: false
      # Should invisible players reappear automatically
      # when they leave the server and don't have the permission 'sv.use' anymore?
      CheckPermissionOnQuit: false
      # Should invisible players reappear automatically
      # when they join the server and don't have the permission 'sv.use' anymore?
      # Doesn't work if you use GroupManager for permissions
      CheckPermissionOnLogin: false

    ############## Indication Features ###############
    IndicationFeatures:
      LayeredPermissions:
       # Should players with the permission 'sv.see' be able to see invisible players in the tablist & in-game?
       EnableSeePermission: true
       # Should sv.use and sv.see be layered? => sv.use.levelX, sv.see.levelX
       # Players can see a vanished player if their see level is higher or equal to the other player's use level
       # Note: You have to rejoin for changes to take effect if you changed those permissions while being online
       LayeredSeeAndUsePermissions: false
       # What should be the highest level for both permissions?
       # Lower amounts might improve performance with more players since they reduce the amount of permission checks
       MaxLevel: 100
      # Should vanished players show up dark gray in the tablist and should only their head be visible?
      # Only players who are allowed to see the player will see this effect; this helps other staff with
      # differentiating them from players they should talk to; Requires ProtocolLib
      MarkVanishedPlayersAsSpectators: true

    ################ Message Options #################
    MessageOptions:

      FakeJoinQuitMessages:
       # Should SV broadcast any kind of announcement (fake quit or player vanished) when a player vanishes?
       # You can change the messages in the messages.yml file.
       BroadcastFakeQuitOnVanish: true
       # Should SV broadcast any kind of announcement (fake join or player reappeared) when a player reappears?
       # You can change the messages in the messages.yml file.
       BroadcastFakeJoinOnReappear: true
       # Should players with the permission 'sv.see' get an admin announcement instead of a fake join/quit message?
       # You can change the messages in the messages.yml file.
       AnnounceVanishReappearToAdmins: true
       # Should there only be admin announcements and no fake join/quit messages?
       SendMessageOnlyToAdmins: false
       # Should there only be fake join/quit messages and no admin announcements?
       SendMessageOnlyToUsers: false

      # Should SV hide the real join/leave messages of invisible players?
      HideRealJoinQuitMessages: true
      # Should SV hide leave messages for invisible players if 'VanishStateFeatures->ReappearOnQuit' is turned on?
      # Overrides 'HideRealJoinQuitMessages'
      ReappearOnQuitHideLeaveMsg: true
      # If the setting above is turned on, should players with the permission 'sv.see' get
      # a message when an invisible player joins/quits?
      AnnounceRealJoinQuitToAdmins: true
      # If the setting above is turned on, should players with the permission 'sv.see' get
      # a message when an invisible player dies?
      AnnounceDeathToAdmins: true
      # Should SV remind players who join the server vanished of being invisible (in chat)?
      # You can change the message in the messages.yml file.
      RemindVanishedOnJoin: true
      # Should invisible players have an action bar which tells them that they're invisible?
      # You can change the action bar in the messages.yml file.
      DisplayActionBar: true

    ############## Restrictive Options ###############
    RestrictiveOptions:
      # Should invisible players not be able to break blocks?
      # Bypass permission: sv.breakblocks
      PreventBlockBreaking: false
      # Should invisible players not be able to place blocks?
      # Bypass permission: sv.placeblocks
      PreventBlockPlacing: false
      # Should invisible players not be able to damage players or mobs?
      # Bypass permission: sv.damage
      PreventHittingEntities: false

    ############# External Invisibility ##############
    ExternalInvisibility:

      ServerList:
       # Should this plugin adjust the amount of players in the serverlist? (-1 per invisible player)
       AdjustAmountOfOnlinePlayers: true
       # Should this plugin hide invisible players in the list of logged in players?
       # You can view this list when your mouse hovers over the amount of online players.
       AdjustListOfLoggedInPlayers: true

    ################## Hook Options ##################
    HookOptions:
      # Should SV hide invisible players in /who, /list, /online, /near, etc?
      # Note: Players with the permission essentials.vanish.interact can still see invisible players in these commands
      # Important: You have to reload both SV and Essentials if you change this setting (reload SV first)
      EnableEssentialsHook: true
      # Should SV hide invisible players on your dynamic map and broadcast join/leave messages if you use Dynmap?
      EnableDynmapHook: true
      # Should SV send fake join/leave messages in dynmap's web-chat?
      # You can configure the join/leave messages in the messages.yml file
      DynmapSendJoinLeaveMessages: true
      # Should SV hook into TrailGUI and disable trails while you're vanished?
      EnableTrailGUIHook: true
      # Should SV hook into SuperTrails and disable trails while you're vanished?
      EnableSuperTrailsHook: true
      # Should SV hook into PlaceholderAPI and add new placeholders to SV + register its own ones for other plugins?
      # Own ones: isvanished, vanishedplayers, playercount
      # Format: %supervanish_<placeholder>%
      EnablePlaceholderAPIHook: true
      # Should SV hook into MVdWPlaceholderAPI and add new placeholders to SV + register its own ones for other
      # plugins?
      # Own ones: isvanished, vanishedplayers, playercount
      # Format: {supervanish_<placeholder>}
      EnableMVdWPlaceholderAPIHook: true
      # Should SV stop NPCs from greeting or talking about hidden players?
      EnableCitizensHook: true

    ############# Compatibility Options ##############
    CompatibilityOptions:
      # This section is for advanced users only!
      # The event priority which SuperVanish should use for the specific event.
      # Allowed values are LOWEST, LOW, NORMAL, HIGH, HIGHEST and MONITOR
      # Higher priorities might override other plugins while lower ones might not

      # The priority for removing the join message
      PlayerJoinEventPriority: HIGH # <- keep HIGH if you use Essentials to modify join/quit messages !!
      # The priority for removing the quit message
      PlayerQuitEventPriority: HIGH

    ############# Miscellaneous Options ##############
    MiscellaneousOptions:

      UpdateChecker:
       # Should SV check for updates on spigot regularly? There is no automatic update; this just informs you
       Enable: true
       # Should players with the permission 'sv.notify' get notified if the current version of SV is outdated?
       NotifyAdmins: true

    ################# Do Not Touch ###################
    ConfigVersion: 6.2.0
    [LEFT]
    Code (Text):

    # SuperVanish v6.1.3 - Messages
    #
    # Information:
    # <..> means that .. is required; [..] means that .. is optional and can be left out; | inside [] or <> stands for 'OR'
    # You can use the & character for color codes; Example: '&cThe color of this text would be red!'
    # You can use %p% to get the player's name; Example: '&4&l%p%, you aren't allowed to execute this command!'
    # You can use %other% to get the name of the target or cause
    # You can use %d% to get the player's display name; if you use Essentials then the display name contains the prefix too
    # You can use %tab% to get the player's name in the player list (TAB)
    # You can use %prefix% to get the player's prefix (Requires Vault)
    # You can use %suffix% to get the player's suffix (Requires Vault)
    # You can use %group% to get the player's group (Requires Vault)
    # You can use %nick% to get the player's nickname (Requires Essentials)
    # Some messages allow different, unique variables too
    #
    # NOTE: You can get WAY more placeholders by installing PlaceholderAPI or MVdWPlaceholderAPI
    #
    # Empty messages will not be sent
    # Using \n starts a new line
    #
    # Important:
    # You must double single quotes if you want to use them inside a message.
    # You must NOT use any tab characters inside this file (indent key) otherwise YAML will spam your console with errors!
    # !! If there are errors in the console after editing this file paste it into an online YAML parser to see if
    # there are any YAML syntax errors !!
    Messages:
      NoPermission: '&4Denied access! You are not allowed to do this.'
      InvalidUsage: '&cInvalid usage, you can use &6/sv help&c for a list of commands.'
      VanishMessage: '&e%p% left the game'
      ReappearMessage: '&e%p% joined the game'
      VanishMessageWithPermission: '&a[SV] %p% vanished.'
      ReappearMessageWithPermission: '&a[SV] %p% reappeared.'
      OnVanish: '&aYou are now invisible!'
      OnReappear: '&aYou are no longer invisible!'
      OnVanishCausedByOtherPlayer: '&a%other% hid you, you are now invisible!'
      OnReappearCausedByOtherPlayer: '&a%other% showed you, you are now visible!'
      AlreadyVanishedError: '&cYou are already invisible!'
      NotVanishedError: '&cYou are not invisible!'
      SilentJoinMessageForAdmins: '&a[SV] %p% joined silently.'
      SilentQuitMessageForAdmins: '&a[SV] %p% left silently.'
      RemindingMessage: '&aYou are still invisible!'
      ListMessagePrefix: '&aInvisible Players:&f %l'
      ActionBarMessage: '&aYou are invisible to other players!'
      HideOtherMessage: '&aPlayer &e%other%&a is now invisible!'
      ShowOtherMessage: '&aPlayer &e%other%&a is now visible!'
      CannotHideOtherPlayer: '&cYou''re not allowed to change %other%''s visibility!'
      AlreadyInvisibleMessage: '&cPlayer &e%other%&c is already invisible!'
      AlreadyVisibleMessage: '&cPlayer &e%other%&c is already visible!'
      PluginReloaded: '&aSuccessfully reloaded SuperVanish (%time%ms)!'
      InvalidSender: '&cYou must be a player to execute this command!'
      PlayerNotOnline: '&cThat player is not online!'
      PlayerNonExistent: '&cThat player doesn''t exist!'
      ToggledPickingUpItemsOn: '&ePicking up items is now turned &aON&e.'
      ToggledPickingUpItemsOff: '&ePicking up items is now turned &cOFF&e.'
      UpdateWarning: '&cWarning! Recreating %updates% resets %changes%. Please use &e/sv recreatefiles confirm&c if you''d like to continue.'
      RecreatedConfig: '&aSuccessfully recreated %updates%! Please check %changes%.'
      NoConfigUpdateAvailable: '&eYour SuperVanish-files are up to date!'
      RecreationRequiredMsg: '&c[SV] Your SuperVanish-files are not up to date, you can use &e/sv recreatefiles&c to recreate them
      or use /sv recreatefiles dismiss to dismiss this message.
      Recreating SuperVanish''s files gives you access to newer settings and features of the plugin.'
      DismissedRecreationWarning: '&eYou are no longer receiving notifications about this recreation.'
      UndismissedRecreationWarning: '&eYou are now receiving notifications about this recreation.'
      PrintedStacktrace: '&eSuccessfully created a stacktrace, see console!'
      EntityHitDenied: '&c[SV] You can''t hit players or mobs in vanish!'
      BlockPlaceDenied: '&c[SV] You can''t place blocks in vanish!'
      BlockBreakDenied: '&c[SV] You can''t break blocks in vanish!'
      PluginOutdated: '&c[SV] Your current version of SuperVanish is outdated. New version: ''%new%''; Currently: ''%current%'''
      DynmapFakeJoin: '%d% joined'
      DynmapFakeQuit: '%d% quit'
      HelpHeader: "&a<---------------&e SuperVanish-Help &a--------------->"
      HelpFormat: "&6%usage% &7- &b%description% &c(%permission%)"
    MessagesVersion: 6.1.3
     
    A german translation of the messages.yml file is here.
    API
    Checking if a player is vanished on Bukkit (no dependencies required)
    Code (Text):
    private boolean isVanished(Player player) {
            for (MetadataValue meta : player.getMetadata("vanished")) {
                if (meta.asBoolean()) return true;
            }
            return false;
    }
    This code is supported by SuperVanish, PremiumVanish, VanishNoPacket and a few more vanish plugins.

    Basic Bukkit API for SuperVanish and PremiumVanish
    SuperVanish and PremiumVanish share the exact same API so you can support both of them with the exact same code.
    (Source) (Download)
    Code (Text):

    First of all you add SuperVanish and PremiumVanish as a (soft-)dependency to your plugin.yml file:

    # in the plugin.yml file:
    softdepend: [SuperVanish, PremiumVanish]

    If you declared it as a soft dependency: Check if SuperVanish or PremiumVanish is enabled before using the API:

    if (Bukkit.getPluginManage().isPluginEnabled("SuperVanish") || Bukkit.getPluginManage().isPluginEnabled("PremiumVanish")) {
    // use api
    }

    The next step is to add the SuperVanish.jar file to your java buildpath if you are using an IDE.

    Finally you can use the static methods of the VanishAPI class:

    // Imports
    import de.myzelyam.api.vanish.VanishAPI;
    import de.myzelyam.api.vanish.PlayerHideEvent;

    public void testTheApi(Player player, Player player2) {
        // A list of all ONLINE vanished players
        List<UUID> invisiblePlayers = VanishAPI.getInvisiblePlayers();
        // Returns a list of the uuids of ALL vanished players, online AND offline
        // MAY INVOLVE A MYSQL-QUERY, so don't use it too often or use it on a different thread!
        List<UUID> allInvisiblePlayers = VanishAPI.getAllInvisiblePlayers();
        // Hide a player
        VanishAPI.hidePlayer(player);
        // Show a player
        VanishAPI.showPlayer(player);
        // Returns true if player is allowed to see player2
        boolean canSee = VanishAPI.canSee(player, player2);
        // Returns true if a player is invisible
        boolean isVanished = VanishAPI.isInvisible(player);
    }

    If you want to prevent vanishing/reappearing you can use events.
    There are two events, PlayerHideEvent and PlayerShowEvent.
    PlayerHideEvent triggers when a player vanishs and is online.
    PlayerShowEvent triggers when a player reappears and is online.
    Example:

    @EventHandler
    public void onVanish(PlayerHideEvent e) {
        Player p = e.getPlayer();
        if (p.getName().equalsIgnoreCase("Notch")) {
            e.setCancelled(true);
        }
    }

    IMPORTANT: ALWAYS use MONITOR event priority to get the final outcome of the event but NEVER use MONITOR if you are trying to change the outcome.
     
    Code (Text):

        <repositories>
            <repository>
                <id>jitpack.io</id>
                <url>https://jitpack.io</url>
            </repository>
        </repositories>

        <dependencies>
            <!-- SuperVanish -->
            <dependency>
                <groupId>com.github.MyzelYam</groupId>
                <artifactId>SuperVanish</artifactId>
                <version>6.1.8</version>
                <scope>provided</scope>
            </dependency>
        </dependencies>
     

    Source
    The source of SuperVanish is here.
    Feel free to create Pull Requests if you think that you can improve SuperVanish.

    Support
    How to report a bug:

    First of all, please check if your config is up-to-date with /sv updatecfg. If something still doesn't work, please pm me with the following information:
    • Detailed description of what's happening in what situation and what you're expecting to happen
    • Are there any stacktraces(errors) in the console? If so, please use pastebin.com to include them in your pm!
    • If not, which plugins are you using? What's your version of SV and Bukkit/Spigot?
    • Does it work if you remove all plugins except ProtocolLib(if you're using it) and SV? If so, remove the other plugins one by one to know which one causes the problem and provide its name and version.
    If you need help or found a bug, please pm me!
    If you have a general question, please create a comment!

    SuperVanish is released under this open-source license.
    Please don't use reviews to ask for help/report bugs! Reviews are the last place to go to,
    please contact me first if you experience any issues with SV!
    Chacos5, Lopuljr, Luracasmus and 19 others like this.

Recent Reviews

  1. UserD
    UserD
    5/5,
    Version: 6.2.0
    Really great plugin!
    I can change join&leave messages and everything customizable. Players cannot find me. I can see when they cheating.
  2. Latch93
    Latch93
    5/5,
    Version: 6.2.0
  3. NeoApexYT
    NeoApexYT
    5/5,
    Version: 6.2.0
    Probably the best vanish plugin out there, i only recommend adding a feature where other staff can see that the person is vanished, for example you have a custom prefix when someone is vanished and their name is another color. (Could use the /team feature for this)
  4. Javithor360
    Javithor360
    5/5,
    Version: 6.2.0
    The plugin works fine, but the only issue is when a player is vanished makes the fake leave in-game, but not with DiscordSRV plugin in the discord-minecraft chat. Is there a way to fix it?
  5. Luracasmus
    Luracasmus
    5/5,
    Version: 6.2.0
    Very good plugin, but sometimes causes issues with jdk-15ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
  6. MinecraftKid45
    MinecraftKid45
    5/5,
    Version: 6.2.0
    This is the best vanish plugin ever made. I used to have problems where players could easily figure out when I was online, but this plugin completed hides me - everywhere. I love it.
  7. SkyyDinarusha
    SkyyDinarusha
    4/5,
    Version: 6.2.0
    Hello, what should I do if the /sv command intersects with the /essentials commands ? that is, /vanish /v
  8. Luracasmus
    Luracasmus
    5/5,
    Version: 6.1.8
    Very good plugin. Works perfectly with other plugins too! 5 / 5 rating!
    ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
  9. Endercy
    Endercy
    5/5,
    Version: 6.1.8
    this is the best vanish plguin, works well on my server. it has a ton of features that i need, like having that fake join/leave and disabling the real join/leave. keep it up, dev!
  10. __Vekster007__
    __Vekster007__
    5/5,
    Version: 6.1.8
    Great, but it's better not to teleport to the players in the water in boots on the ice (debacle).