/hide takes a player out of the tab list and swaps their name and skin for an anonymous one, in chat as well as in game, so anyone who runs into them sees a stranger. Everyone else sees a normal quit message when they hide and a join message when they come back, so nothing gives it away.
Commands that name a hidden player are blocked, so /msg or /tpa can't be used to find them. Staff can be allowed to see through it, and you can set up disguise presets with their own names, skins and even ranks.
Permissions#
| Permission | Lets a player | Default |
|---|---|---|
gangstahide.use | Use /hide, /show, /unhide, /hidegui and /hidename. | OP |
gangstahide.use.other | Hide and show other players. | OP |
gangstahide.command.bypass | Use commands that name a hidden player. | OP |
gangstahide.staff.bypass | See hidden players, when staff-hide-bypass.enabled is true. | OP |
gangstahide.upsidedown | Choose to appear upside down when hiding, when upside-down.enabled is true. | Everyone |
gangstahide.autohide | Be hidden on join, when auto-hide-on-join.enabled is true. | Nobody |
hider.admin | Use /hider commands. | OP |
A preset can require its own permission, set with its permission key.
Commands#
| Command | What it does | Permission |
|---|---|---|
/hide [player] [name] | Hides you, or another player. name sets the name shown while hidden. | gangstahide.use |
/show [player] | Reveals you, or another player. Alias /unhide. | gangstahide.use |
/hidegui | Opens the disguise menu, when disguise-gui.enabled is true. | gangstahide.use |
/hidename <name> | Sets your own hidden name, when disguise-gui.allow-custom-name is true. | gangstahide.use |
/hider pickup | Stops or allows picking up items while you're hidden. | hider.admin |
/hider reload | Reloads config.yml. | hider.admin |
Configuration#
config.yml holds every setting, including your license key and every message.
The disguise#
hide-name: '&e&k12345678&f'
hide-skin: 'Dima_Damage'
hide-skin-url: ''
hide-skin-file: ''hide-name is the name shown while hidden. The skin comes from hide-skin-url (a skin image link) if set, then hide-skin-file, then the player named in hide-skin.
To use skin files from your own machine, turn on the built-in skin server: set skin-server.enabled: true, public-address to your server's public IP or domain, and put PNG files in plugins/Hider/skins/. The server listens on port (default 25566), so that port must be open.
Hiding behavior#
| Key | Default | What it does |
|---|---|---|
hide-from-tab | true | Remove hidden players from the tab list. |
hide-from-chat | true | Show a hidden player's chat messages and mentions under their hidden name. |
block-from-commands | true | Block commands that contain a hidden player's name. |
hide-command-toggle | false | Make /hide reveal you if you're already hidden. |
broadcast-quit-message | true | Send quit-message when someone hides. |
broadcast-join-message | true | Send join-message when they come back. |
show-prefix-in-quit-join-message | false | Add the player's Vault prefix to those messages. |
staff-hide-bypass.enabled | false | Let staff with the bypass permission see hidden players. |
auto-hide-on-join.enabled | false | Hide players with gangstahide.autohide as they join. |
keep-hide-on-rejoin | false | Keep players hidden through relogs and restarts. Needs a restart to turn on. |
unhide-on-join | false | Always reveal players when they join. Wins over keep-hide-on-rejoin. |
unlimited-name-tags | DISGUISE | With UnlimitedNameTags: show the disguise name (DISGUISE), no name tag (HIDE) or leave it (NONE). |
keep-hide-on-rejoin stores who is hidden in data.yml. With database.type: mysql, it uses MySQL instead, so players stay hidden across a network.
Upside down#
upside-down:
enabled: true
permission: 'gangstahide.upsidedown'When a player with the permission hides, through /hide, the menu toggle or a preset, a menu asks whether they appear Straight or Upside Down. Closing it without picking cancels the hide. Upside down flips their model for everyone else, the same way Minecraft flips players named Dinnerbone, while their skin and hidden name stay as set. Their hidden name floats above them in place of the normal name tag, or UnlimitedNameTags shows it when installed. Players without the permission, auto-hide and keep-hide-on-rejoin always hide straight, and a player who is revealed always comes back straight.
Presets and the menu#
With disguise-gui.enabled: true, /hidegui shows a hide button and a head for each preset under disguises:
disguises:
ninja:
type: PLAYER
display-name: '&aNinja'
skin: 'Notch'
disguise-name: '&8Anonymous'
icon: 'Notch'
permission: 'gangstahide.disguise.ninja'
rank: keepA preset's skin can be skin (a player name), skin-url, skin-file or a raw texture with its signature. Only PLAYER disguises exist.
Ranks while hidden#
With LuckPerms installed, a preset's rank decides the player's rank while hidden:
| Value | Effect |
|---|---|
keep | The player keeps their own rank. The default. |
none | Groups stay, but no prefix shows in tab. |
random | The player is moved into a random group, except those in rank.random-blacklist and default. |
| a group name | The player is moved into that group, such as vip. |
Real groups are put back when the player unhides or leaves. rank.keep-on-hide shows the player's own prefix on their hidden tab name with plain /hide, and rank.show-prefix-in-tab does the same for a preset's rank.
Install#
- Install PacketEvents. Hider doesn't load without it.
- Put the Hider jar in
plugins/and start the server once to createconfig.yml. - Paste your license key into
license-keyinconfig.yml. Your key is under My Licenses on the BlazeZ portal; licenses linked to your Discord account show up there automatically. If yours is missing, open a License Key ticket in the BlazeZ Discord. - Restart the server and grant
gangstahide.useto whoever should hide. - After editing
config.yml, run/hider reload.
Developer API#
Hider fires Bukkit events from me.blazezstudio.minecraft.event.impl.
| Event | Cancellable | Fires when |
|---|---|---|
GangstaPlayerPreHideEvent | Yes | Before a player is hidden, by /hide, the menu, a preset pick or on join. getDisguiseName(), getPresetId(), getDisguiseType(), getCause(). Cancelling leaves the player as they are. |
GangstaPlayerPreShowEvent | Yes | Before a hidden player is shown again, by /show, /unhide, /hide, the menu or on join. getDisguiseName(), getPresetId(), getCause(). Cancelling keeps the player hidden. |
GangstaPlayerHideEvent | No | After the player was hidden. Same getters as the pre event. |
GangstaPlayerShowEvent | No | After the player was shown. |
getCause() returns a HideCause: COMMAND, MENU, AUTO_HIDE_ON_JOIN, KEEP_HIDE_ON_REJOIN or UNHIDE_ON_JOIN.
Add softdepend: [Hider] to your plugin.yml.