BlazeBans/Investigating
History and lookup
Reading the record. Most of these commands share one permission, because a moderator who can punish should be able to see what they are punishing.
One player's full record
/history <player>
/lookup <player>Both print every stored record for that player, newest first: ID, type, status, who issued it, when, which server, the reason, and the duration. Revoked records show a second line with who lifted it, when, and why.
/history needs blazebans.command.history. /lookup needs blazebans.command.lookup, so you can grant read access to trial staff without giving them anything else.
Records from every server appear, regardless of scope. Enforcement is scoped; visibility is not. A moderator deciding on a punishment should see that the player was banned elsewhere last week.
A readable summary
/timeline <player>The same events as a dated narrative rather than a table: what happened, when, for what reason, with the ID. Needs blazebans.command.timeline.
Use it when you want the shape of someone's behaviour over time. Use /history when you need the details of a specific record.
Checking one type
/checkban <player>
/checkmute <player>
/checkwarn <player>
/warnings <player>Filtered views of the same history. /checkban covers bans and IP bans, /checkmute covers mutes and IP mutes, and /checkwarn and /warnings both cover warnings.
All four need blazebans.command.history. They answer "is this person muted and why" without scrolling past six months of unrelated records.
Everything currently active
/banlist
/mutelist
/warnlist
/punishlist
/kicklistAll need blazebans.command.history.
/kicklist is the odd one. Kicks are historical events rather than active punishments, so there is nothing to filter by "active" and it shows recent kicks instead.
Run by a player, these open a paginated menu with filtering. Run from console, they print as text. The menu is styled in menus.yml under banlist, mutelist, warnlist, kicklist, and punishlist.
Name changes
/namehistory <player>Every username BlazeBans has seen for that account, with the UUID and when each was last seen. Needs blazebans.command.history.
Worth checking before you conclude someone has a clean record. An account that changed names last month has its history under the account, not the name, and this is how you confirm you are looking at the right person.
Linked accounts
/alts <player>Accounts sharing a stored IP with this one, each showing whether it is online, banned, or muted. Needs blazebans.command.alts, and it needs IP storage to be enabled. See Alts and IP tools.
Staff activity
/staffhistory <staff>Everything one staff member has issued, newest first. Needs blazebans.command.staffhistory.
Looking one record up
Every history entry shows an ID like #ABC123. Use it with /editpunishment, and pass it to the API with or without the #.
/blazebans profile <player>
/blazebans staffprofile <staff>The same data as a menu, with the active punishments, linked accounts, proof, and totals laid out rather than scrolled. See Profiles.
While a query runs
Lookups hit the database. While one is in flight the sender sees an animated action-bar indicator, configured under async-progress in settings.yml:
async-progress:
enabled: true
interval-ticks: 4
width: 12
pulse-width: 3
symbol: "■"Set enabled: false if you would rather have silence.
Formatting the output
Every line above is a message key in messages/en_us.yml: history-header, history-entry, history-revoke-entry, timeline-entry, namehistory-entry, alts-entry, and their neighbours. All of them use MiniMessage and the punishment placeholders. See Messages and theming.

