Список изменений
PackettDisguise
Standalone player-disguise plugin. Changes a player's shown name and skin
(tab list, nameplate, chat, entity) by rewriting outgoing PLAYER_INFO packets with ProtocolLib and
applying the disguise name to the player's own GameProfile so the above-head nameplate updates too. The
UUID is kept, so the entity stays mapped and the disguise survives tab refreshes.
Commands
| Command | Permission | What it does |
|---|---|---|
/disguise | packett.incognito | Disguise under a random unused name (rolled fresh each time). |
/disguise <name> [default|vip] | packett.incognito + packett.disguise.name | Disguise under a chosen name. |
/undisguise | packett.incognito | Remove the disguise. |
If a player has packett.incognito but not packett.disguise.name, any name they type is ignored and a
random one is rolled instead.
Random names
Auto-generated names are two words + two digits, e.g. FilthyPenelope92, drawn from the two word pools
in config.yml. Every generated name is checked against Mojang and re-rolled until it belongs to no
real account, so a random disguise never impersonates someone who exists. Names are kept within
Minecraft's 16-character limit.
Permissions
packett.incognito- use/disguiseand/undisguise(default: op)packett.disguise.name- allowed to choose your own disguise name (default: op)packett.disguise- staff: disguise as ANY name including real accounts (pulls their real skin) and bypass the non-existence check (default: op)packett.disguise.vip- allowed to appear with thevipdisplay rank (default: op)
Dependencies
| Plugin | Required? | Why |
|---|---|---|
| ProtocolLib | Yes (hard depend) | Performs the packet rewrite. Plugin disables itself without it. |
| LuckPerms | Recommended | Supplies the prefix/suffix for the disguise display rank. Without it, disguises still work but show no rank. |
| PlaceholderAPI | Optional | Exposes %packettdisguise_name%, %packettdisguise_realname%, %packettdisguise_disguised%. |
| TAB | Optional | If present, the disguise is pushed through TAB's name/prefix/suffix so it doesn't fight your tab layout. |
config.yml
network-sync: false # false = standalone (re-applies from disguises.yml on relog)
# true = a proxy on the "packett:disguise" channel is the source of truth
random-name:
first-words: [ ... ] # first word of a random name (adjectives)
second-words: [ ... ] # second word of a random name (nouns/names)
disguise-groups:
default: default # LuckPerms group whose prefix/suffix shows for the "default" display rank
vip: vip # ... for the "vip" display rank (gated by packett.disguise.vip)
Per-player state persists to disguises.yml.
PlaceholderAPI tokens
%packettdisguise_name%- disguise name when disguised, else real username%packettdisguise_realname%- always the real username (use this in logs/audit formats)%packettdisguise_disguised%-true/false
Build
mvn package
Produces target/PackettDisguise-1.0.jar.