8 releases, newest first.
vanish.visibility-resync key are removed (a leftover key is ignored).disableBukkitVanishAPI is true in universespigot.yml; that option switches off the visibility API every vanish plugin relies on and must be false.vanish.visibility-resync (default true). A moment after you vanish, the hide is re-sent to every nearby player; a moment after you unvanish, every nearby player who may see you is re-paired. Fixes servers with an asynchronous entity tracker (UniverseSpigot, Leaf...) where older clients through ViaBackwards kept seeing a vanished staff member as a body without a TAB entry, or stopped seeing them after the unvanish.guis/pin-keypad.yml: delete it to get the new heads.snstaff.staffmode (the /staff permission) or snstaff.notify.see, even though entering staff mode vanishes the actor.snstaff.notify.hidden counts only as an explicit grant: an owner holding * is no longer left out of every notice.guis/pin-keypad.yml). The title shows the digits typed so far and the 4th digit submits.snstaff.notify.see are told, network-wide, when someone enters or leaves staff mode and who froze or unfroze whom (notify.staff-mode, notify.freeze). A vanished actor or target is named only to snstaff.vanish.see holders.staff-mode.protections.block-pvp) and every placement (blocks, item frames, paintings, armor stands, boats, minecarts). Entering is refused while frozen, or when the cursor or crafting grid items have no room (they would drop).snstaff:staff-backup). At join it is given back at once. A database backup without it is only marked consumed, so a crash can neither duplicate items nor overwrite items gathered after leaving staff mode./vanish and /invsee are always SnStaff's (snstaff.vanish / snstaff.invsee). vanish.aliases now defaults to [], so /v stays with EssentialsX./follow [player] (snstaff.follow, child of snstaff.admin): spectate a player. Outside staff mode you return to your gamemode and location when it ends, even after a crash. A bare /follow stops./freeze toggles, and /unfreeze is removed. Each freeze has a chat room. The freezer starts in talk mode, and a bare /fc toggles it. /fc <player> joins a room, /fc <player> <msg> joins and sends once, and only members talk. The # and @ staff chat prefixes still work in talk mode.freeze.allowed-commands: [r, reply, m, msg]. allow-minimessage: true in staff-chat.style and admin-chat.style./staff admin pin reset <player>, because the keypad has only the digits 1-9.vanish.aliases: [] (was [v])freeze.allowed-commands: [r, reply, m, msg]allow-minimessage: true under both staff-chat.style and admin-chat.style/unfreeze, freeze.unfreeze-aliases, the integrations: block and webhooks.events.essentials are gone. Leftover keys are ignored.guis/pin.yml can be deleted.PlayerUnfreezeEvent still fires when /freeze or the tool unfreezes.snstaff.vanish.see do not see them there either./staff ends a /follow started outside staff mode, even if staff mode then refuses to enable.plugins/.Sn-License/license.yml, the same file every Sn bundle plugin on the server uses.plugins/SnStaff/license.yml; an old copy from v1.0.0/v1.1.0 can be deleted.com.sn.staff.api package of this jar.
SnStaffProvider.get() -> SnStaffAPI (read-only): staff mode, vanish, freeze and its owner, staff check, staff rank, PIN unlock, server name, network mode, staff statistics (async).StaffModeEnterEvent, StaffVanishToggleEvent, PlayerFreezeEvent, PlayerUnfreezeEvent, StaffChatSendEvent, StaffRankChangeEvent.api-events.enabled (default true) switches every API event off.messages.ranks.cancelled.Unchanged from v1.0.0 (see the v1.0.0 release notes): staff-mode inventory overwrite on exit with the documented opt-outs, unique data/server-id.yml per backend, shared MySQL for the ranks module with remove-unregistered, grant snstaff.pin.required to every staff group.
First stable release of SnStaff (Paper 1.20.x and 1.21.x, SnLib consumer, licensed standalone).
Final audit gate: PASSED. 6 criticals verified fixed (CB2 and CB5 contained), 0 accepted, 1 upstream (license template), close pass run. WL15, WL37, WL39, WL40 and the last docs edits are fixed but not blind-verified.
staff-mode.protections.block-item-pickup: false (items and XP picked up are lost on exit) and silent-containers: false (real containers open, items cross the overwrite). Another plugin can still force-open an inventory or hand items to a staff member; the seal cannot see that.snstaff.pin.required can join PIN-unlocked when the rank preload fails during a DB outage (WL9). Grant snstaff.pin.required to every staff group.data/server-id.yml to a second backend sharing the MySQL database; give every backend a unique network.server-id (WL5).ranks.remove-unregistered: true on a shared LuckPerms strips staff groups on backends lacking the local row (WL44): use a shared MySQL database for ranks on a network.