BlazeBans/Punishing players
Revoking and editing
Undoing a punishment, correcting one, and undoing everything a staff member did.
Revoking
/unban <player> [reason]
/pardon <player> [reason]
/unmute <player> [reason]
/unwarn <player> [reason]/pardon and /unban are the same command under two names.
Each one revokes the newest active punishment of its kind for that player. /unban covers both BAN and IP_BAN; /unmute covers MUTE and IP_MUTE; /unwarn covers warnings.
/unban Steve Appeal accepted
/unmute Steve
/unban Steve --silentWith no reason given, punishments.default-revoke-reason is stored, which ships as Revoked.
Tab completion only suggests players who actually have an active punishment of that type, which catches the wrong-name mistake before it happens.
Revocation templates
The unban, unmute, and unwarn groups in templates.yml give you consistent reasons:
/unban Steve Appeal-AcceptedThose templates can carry their own public broadcast, which is how you announce an unban without typing the message each time. See Templates and ladders.
Silent revocations
--silent or -s suppresses the staff broadcast and the template broadcast. It needs blazebans.silent, and without the node the command is refused rather than run loudly.
Scope
Revoking a global punishment needs blazebans.scope.global or blazebans.admin. Without either, only punishments scoped to the current server can be revoked. That keeps a server moderator from lifting a network ban.
What revoking means
The record is marked revoked with who did it, when, and why. It is not deleted.
/history still shows it, with its revocation details. That is deliberate. A player's second ban reads differently when you can see the first one was overturned on appeal, and staff behaviour is only reviewable if reversals are on the record too.
Expiry works the same way: an expired punishment is stored, inactive, and visible.
Editing a punishment
/editpunishment <id> <details>Changes the duration, the reason, or both, on an existing record. Needs blazebans.command.editpunishment.
/editpunishment ABC123 7d Griefing spawn
/editpunishment ABC123 Griefing spawn
/editpunishment ABC123 permanentThe first word is read as a duration if it parses as one, and the rest becomes the reason. If it does not parse, the whole argument is the reason and the duration is left alone. That is why the second line changes only the reason.
IDs work with or without the #: ABC123 and #ABC123 both resolve. Get them from /history, /lookup, or the profile menu.
Editing a global punishment needs blazebans.scope.global or blazebans.admin.
Use this to fix a typo or correct a duration that was wrong. Do not use it to quietly change what someone was punished for after an argument. The edit replaces the stored values rather than appending a note.
Rolling back a staff member
/staffrollback <staff> <duration>Revokes every punishment that staff member issued within the given window. Needs blazebans.command.staffrollback.
/staffrollback BadMod 2h
/staffrollback CompromisedAccount 1dIt reports how many records it changed.
This exists for two situations: an account was compromised and mass-banned people, or a staff member was removed and their recent decisions need reversing while you review them. In both cases doing it one command at a time is too slow.
The duration is required and must be a valid, positive duration. There is no rollback-everything form, on purpose.
Rolling back global punishments needs blazebans.scope.global or blazebans.admin.
Reviewing before you act
/staffhistory <staff>Everything a staff member has issued, newest first. Needs blazebans.command.staffhistory.
/blazebans staffprofile <staff>The same data as a menu, with totals per punishment type and how many of their punishments were later revoked. Needs blazebans.command.staffprofile.
A high revocation rate is worth a conversation. See Profiles.

