BlazeBans/Configuration

Messages and theming

Every string a player or staff member sees lives in `messages/en_us.yml`. Nothing is hard-coded, including the colours.

Changing the colours

The fastest way to make BlazeBans look like your server. Ten values at the top of the message file:

yaml
meta:
  color-scheme:
    positive: "#ff4d00"
    negative: "#d6242d"
    success: "#ff4d00"
    error: "#d6242d"
    info: "#ff4d00"
    warn: "#d6242d"
    accent: "#ffb38a"
    detail: "#ffd1bd"
    text: "#b8b8b8"
    subtle: "#5f5f5f"
    highlight: "#ffffff"

Every message references these as {color_positive}, {color_negative}, and so on, so changing one value here changes it everywhere. A blue-themed server:

yaml
meta:
  color-scheme:
    positive: "#3b9dff"
    negative: "#d6242d"
    success: "#3b9dff"
    info: "#3b9dff"
    accent: "#a8d5ff"
    detail: "#d0e8ff"
ValueUsed for
positiveSuccessful actions, the main brand colour
negativeBans, errors, refusals
success, error, info, warnSemantic aliases, usually pointing at positive or negative
accentPlayer names, IDs, values worth picking out
detailReasons and free text
textOrdinary body text
subtleSeparators and metadata
highlightEmphasis, usually white

Changing the prefix

yaml
meta:
  plugin:
    name: "BlazeBans"
    prefix:
      long: "{meta_prefix_long_no_separator} <color:{color_text}>|</color> "
      long-no-separator: "<sprite:\"minecraft:items\":\"item/blaze_powder\"> <color:{color_positive}>Blaze</color><color:{color_subtle}>Bans</color>"
      short: "{meta_prefix_short_no_separator} <color:{color_text}>|</color> "
      short-no-separator: "<sprite:\"minecraft:items\":\"item/blaze_powder\">"
      negative: "{meta_prefix_negative_no_separator} <color:{color_text}>|</color> "
      negative-no-separator: "<sprite:\"minecraft:gui\":\"icon/unseen_notification\">"
      console: "[{meta_plugin_name}] "

The default uses a blaze powder sprite and the BlazeBans wordmark. Replace it with your server's name:

yaml
meta:
  plugin:
    name: "MyServer"
    prefix:
      long-no-separator: "<color:{color_positive}>MyServer</color> <color:{color_subtle}>Staff</color>"
      short-no-separator: "<color:{color_positive}>MS</color>"

The -no-separator variants are the prefix without the trailing |, for places where a separator would look wrong.

Rewriting the ban screen

Three keys control what a removed player sees: ban-screen-permanent, ban-screen-temporary, and kick-screen.

yaml
messages:
  ban-screen-permanent:
    kick-screen:
      lines:
        - "{meta_prefix_long_no_separator}"
        - " "
        - "<color:{color_negative}>You are permanently banned from this server.</color>"
        - "<color:{color_subtle}>Reason:</color> <color:{color_detail}>{punishment_reason}</color>"
        - "<color:{color_subtle}>Punishment ID:</color> <color:{color_accent}>{punishment_id}</color>"
        - "<color:{color_subtle}>Issued by:</color> <color:{color_accent}>{staff_name}</color>"
        - "<color:{color_subtle}>Server:</color> <color:{color_accent}>{server}</color>"
        - "<color:{color_subtle}>Appeal:</color> <color:{color_accent}>{appeal_url}</color>"
    chat:
      lines:
        - "<color:{color_negative}>You are permanently banned from this server.</color>"
        - "<color:{color_subtle}>Reason:</color> <color:{color_detail}>{punishment_reason}</color>"
    console: ""

Each key has up to three renderings:

  • kick-screen is the disconnect screen the client shows.
  • chat is used where the message goes to chat instead.
  • console is the plain-text form logged to console. Leave it blank to log nothing.

lines is a list, and each entry is its own line. The disconnect screen centres every line, which is worth remembering when you lay one out.

Available on ban and kick screens: {punishment_id}, {victim_name}, {staff_name}, {punishment_reason}, {punishment_duration}, {expires}, {server}, {appeal_url}.

ban-screen-temporary adds {expires}, which is the only difference between the two in the defaults.

Punishment placeholders

Available in punishment-related messages, broadcasts, and template broadcasts:

PlaceholderValue
{punishment_id}The record ID, including its #
{type}BAN, MUTE, WARN, KICK, IP_BAN, IP_MUTE, VOICE_MUTE
{victim_name}The punished player
{victim_uuid}Their UUID, or blank
{staff_name}Who issued it
{punishment_reason}The stored reason
{punishment_duration}Remaining time, or Permanent
{punishment_duration_suffix}The same in brackets, or blank for kicks
{created_at}Relative creation time
{expires}Expiry, or blank for kicks
{proof_url}Attached proof, or None
{server}Where it was issued
{server_scope}global or server
{appeal_url}From punishments.appeal-url
{status}active or inactive

Revocation messages add {revoke_action}, {revoked_by}, {revoke_reason}, and {revoked_at}.

Theme values are available everywhere: {color_positive} and friends, plus {meta_prefix_long}, {meta_prefix_short}, {meta_prefix_negative}, {meta_console_prefix}, their _no_separator variants, and {meta_plugin_name}.

MiniMessage

Every message is MiniMessage, so you get colours, gradients, hover text, click actions, and sprites.

yaml
messages:
  punishment-broadcast:
    chat: "{meta_prefix_long}<color:{color_positive}>{broadcast_action}</color> <color:{color_accent}>{victim_name}</color>"

Useful tags:

TagEffect
<color:#ff650d>A hex colour
<gradient:#ff650d:#ffb38a>A gradient across the text
<bold>, <italic>, <underlined>Formatting
<hover:show_text:'...'>Hover text
<click:open_url:'...'>A clickable link
<newline>A line break
<sprite:"minecraft:gui":"icon/search">An inline vanilla sprite

If you are writing anything longer than one line, build it in the MiniMessage editor and paste the result. It renders exactly what the client will show.

Changing language

yaml
meta:
  lang: "de_de.yml"

Shipped: en_us.yml, de_de.yml, es_es.yml, fr_fr.yml, ja_jp.yml, ru_ru.yml.

Missing keys fall back to English per key, so a translation that is behind on one string shows that string in English rather than nothing.

For your own language, copy en_us.yml to messages/my_lang.yml, translate it, and point meta.lang at the filename.

Applying changes

minecraft
/blazebans reload messages:en_us.yml

Note the colon. Message files use messages:filename.yml, not a slash. Tab completion gives you the right form.

If the file has a YAML error, the reload is refused and the previous messages stay active. Fix and reload again.