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

minecraft
/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

minecraft
/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

minecraft
/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

minecraft
/banlist
/mutelist
/warnlist
/punishlist
/kicklist
CommandShows
/banlistActive bans and IP bans
/mutelistActive mutes and IP mutes
/warnlistActive warnings
/punishlistAll of the above together
/kicklistKick history, newest first

All 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

minecraft
/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

minecraft
/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

minecraft
/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 #.

minecraft
/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:

yaml
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.