Skip to content

messages.yml

Edit, disable and translate every message OptimalTeams sends, plus optional titles and action bars.

Every message lives in messages.yml. Each supports legacy & codes, &#hex, MiniMessage and (with PlaceholderAPI) %...%. After editing, run /teamadmin reload.

Messages:
TEAM-LEFT:
Message:
Enabled: true
Value:
- '&5[&d&lTeams&5] &7You left &f{team}&7.'
  • Enabled: false silences a message entirely.
  • Value is a list; every line is sent. A line containing only '' sends an empty line.
  • Keep the {tokens} intact; don’t rename the message keys.

Missing keys are re-added with their defaults the next time the file loads, so you can delete a block to reset it.

Any message can also show a title on screen. Add a Title: block next to Message::

Messages:
TEAM-JOINED:
Message:
Enabled: true
Value:
- '&5[&d&lTeams&5] &7You joined &f{team}&7.'
Title:
Enabled: true
Title: '&2&m━━━&r &a&lJoined &f&l{team} &2&m━━━&r'
Sub-Title: '&7Talk to your team with &f/tc&7!'
  • Title is the large line, Sub-Title the smaller one. Either can be ''.
  • Optional Fade-In, Stay and Fade-Out set the timings in ticks (defaults 10, 60, 10).
  • The tokens of the message resolve in the title too.
  • Enabled: false hides only the title.

An Action-Bar: block with Enabled and Value works the same way and shows one line above the hotbar.

TEAM-CREATED and TEAM-JOINED ship with a title enabled.

Errors: PLAYER-ONLY, NO-PERMISSION, INVALID-PLAYER, INVALID-NUMBER, INVALID-TEAM, NOT-IN-TEAM, ALREADY-IN-TEAM, TARGET-IN-TEAM, TARGET-NOT-MEMBER, CANNOT-TARGET-SELF, NAME-TAKEN, NAME-LENGTH, NAME-INVALID, NAME-BLACKLISTED, ROLE-DENIED, RANK-DENIED, NOT-LEADER, CANNOT-PROMOTE, CANNOT-DEMOTE, LEADER-CANNOT-LEAVE, TEAM-FULL, ALREADY-INVITED, NO-INVITE, NO-HOME, HOME-WORLD-MISSING, HOME-COOLDOWN, HOME-PENDING.

Team lifecycle: TEAM-CREATED, TEAM-CREATED-BROADCAST, TEAM-DISBANDED, TEAM-DISBANDED-NOTICE, TEAM-DISBANDED-BROADCAST, TEAM-JOINED, MEMBER-JOINED, TEAM-LEFT, MEMBER-LEFT, MEMBER-KICKED, KICKED-NOTICE.

Invites: INVITE-SENT, INVITE-SENT-NOTICE, INVITE-RECEIVED, INVITE-DECLINED, INVITE-DECLINED-NOTICE.

Roles and settings: MEMBER-PROMOTED, MEMBER-DEMOTED, LEADER-TRANSFERRED, TEAM-RENAMED, FRIENDLY-FIRE-TOGGLED, OPEN-TOGGLED.

Home: HOME-SET, HOME-DELETED, HOME-WARMUP, HOME-CANCELLED, HOME-TELEPORTED.

Chat: CHAT-ENABLED, CHAT-DISABLED, TEAM-CHAT.

Info and prompts: TEAM-INFO, NAME-PROMPT, RENAME-PROMPT, INVITE-PROMPT, PROMPT-CANCELLED, TEAM-HELP.

Points: POINTS-UPDATED, KOTH-POINTS, KILL-POINTS.

Admin: ADMIN-DISBANDED, ADMIN-DISBANDED-NOTICE, ADMIN-RENAMED, RELOAD, TEAM-ADMIN-HELP.

Message Sent to
TEAM-CREATED, TEAM-JOINED, TEAM-LEFT, TEAM-DISBANDED, INVITE-SENT, INVITE-DECLINED The player who did it
MEMBER-JOINED, INVITE-SENT-NOTICE, TEAM-DISBANDED-NOTICE The rest of the online team
MEMBER-LEFT, MEMBER-KICKED, MEMBER-PROMOTED, MEMBER-DEMOTED, LEADER-TRANSFERRED, TEAM-RENAMED, FRIENDLY-FIRE-TOGGLED, OPEN-TOGGLED, HOME-SET, HOME-DELETED, INVITE-DECLINED-NOTICE, TEAM-CHAT, KOTH-POINTS, KILL-POINTS, ADMIN-DISBANDED-NOTICE Every online member of the team
INVITE-RECEIVED The invited player
KICKED-NOTICE The kicked player, if online
TEAM-CREATED-BROADCAST, TEAM-DISBANDED-BROADCAST Everyone online and console (only with Broadcast-Creation / Broadcast-Disband)

Messages marked + team also get every team token: {team}, {leader}, {members}, {max-members}, {online}, {points}, {points-raw}, {rank}, {friendly-fire}, {open}, {home}, {created}.

Message Tokens
INVALID-PLAYER, TARGET-IN-TEAM, TARGET-NOT-MEMBER, ALREADY-INVITED, CANNOT-PROMOTE, CANNOT-DEMOTE {player}
INVALID-NUMBER {input}
INVALID-TEAM, NAME-TAKEN {team}
NAME-LENGTH, NAME-PROMPT {min}, {max}
RENAME-PROMPT {min}, {max}, {team}
TEAM-FULL, NO-INVITE + team
HOME-WORLD-MISSING {world}
HOME-COOLDOWN, HOME-WARMUP {time}
TEAM-CREATED, TEAM-CREATED-BROADCAST, TEAM-DISBANDED, TEAM-DISBANDED-NOTICE, TEAM-DISBANDED-BROADCAST, TEAM-JOINED, MEMBER-JOINED, TEAM-LEFT, MEMBER-LEFT, INVITE-DECLINED, INVITE-DECLINED-NOTICE {player} + team
INVITE-SENT, INVITE-SENT-NOTICE, INVITE-RECEIVED {player} (invited), {inviter}, {time} (expiry) + team
MEMBER-KICKED, KICKED-NOTICE, LEADER-TRANSFERRED {player} (target), {actor} + team
MEMBER-PROMOTED, MEMBER-DEMOTED {player}, {actor}, {role} (the new role) + team
TEAM-RENAMED, HOME-SET, HOME-DELETED {actor} + team
FRIENDLY-FIRE-TOGGLED, OPEN-TOGGLED {actor}, {state} + team
TEAM-CHAT {player}, {role}, {message} + team
TEAM-INFO {roster} + team
POINTS-UPDATED + team
KOTH-POINTS {player}, {earned} + team
KILL-POINTS {player}, {victim}, {earned} + team
ADMIN-DISBANDED, ADMIN-DISBANDED-NOTICE {player} (the admin) + team
ADMIN-RENAMED {old-team}, {actor} + team ({team} is the new name)
RELOAD {ms} (reload time in milliseconds)

A token only resolves in the messages that provide it; anywhere else it is left as literal text.

  • {roster} in TEAM-INFO should be on a line of its own. That line is repeated once per member, formatted by Team-Format.Member-Entry in config.yml, highest role first.
  • {message} in TEAM-CHAT is the player’s text exactly as typed. Color codes and MiniMessage tags in it are shown, not applied.
  • Prompts: NAME-PROMPT, RENAME-PROMPT and INVITE-PROMPT are sent when a prompt starts, in every Prompt-Mode. In chat mode, typing cancel sends PROMPT-CANCELLED.
  • NAME-INVALID describes the default Name-Pattern. Update it if you change the pattern.
  • TEAM-HELP is shown for /team help and any unknown subcommand, TEAM-ADMIN-HELP for /teamadmin without (or with wrong) arguments. Both are plain lists you can rewrite freely.