# Messages

> Every message in the Plex messages.yml file, with its default text and placeholders.

Source: https://plex.us.org/config/messages/

You can change almost every message in Plex. Plex keeps the messages in `/plugins/Plex/messages.yml`. Below is every message in the default file, grouped as the file groups them. Each message shows its default text and the placeholders that Plex fills in for it.

## Default messages

### General messages

#### `banMessage`

Default: `"<red>You have been banned! You may appeal at <gold><appeal_url>.\n<red>Reason: <gold><reason>\n<red>Expires in <gold><expires_in>\n<red>Banned by: <gold><punisher>"`

Placeholders:

- `<appeal_url>` Appeal URL
- `<reason>` Reason
- `<expires_in>` Expiry
- `<punisher>` Punisher

#### `banStatus`

Default: `"<red>Banned <dark_gray>• <gold><reason> <dark_gray>• <yellow>Expires in <expires_in>"`

Placeholders:

- `<reason>` Reason
- `<expires_in>` Expiry

#### `banCapacityMessage`

Default: `"<red>You are banned and all spectator slots are occupied. You may appeal at <gold><appeal_url>.\n<red>Reason: <gold><reason>\n<red>Expires in <gold><expires_in>\n<red>Banned by: <gold><punisher>"`

Placeholders:

- `<appeal_url>` Appeal URL
- `<reason>` Reason
- `<expires_in>` Expiry
- `<punisher>` Punisher

#### `bannedPriorityKick`

Default: `"<red>A regular player needed your spectator slot. Reconnect when space is available."`

#### `bannedPlayerJoined`

Default: `"<gray>Banned player <yellow><player><gray> joined"`

Placeholders:

- `<player>` Player name

#### `bannedPlayerLeft`

Default: `"<gray>Banned player <yellow><player><gray> left"`

Placeholders:

- `<player>` Player name

#### `bannedTabMarker`

Default: `"<dark_red>[BANNED]"`

#### `playerLimitBypassKick`

Default: `"<red>A player with priority needed your slot. Reconnect when space is available."`

#### `kickMessage`

Default: `"<red>You have been kicked! \n<red>Reason: <gold><reason>\n<red>Kicked by: <gold><punisher>"`

Placeholders:

- `<reason>` Reason
- `<punisher>` Punisher

#### `indefBanMessage`

Default: `"<red>Your <type> is indefinitely banned! You may appeal at <gold><appeal_url>."`

Placeholders:

- `<type>` The type of indefinite ban
- `<appeal_url>` Appeal URL

#### `indefBanMessageReason`

Default: `"<red>Your <type> is indefinitely banned! You may appeal at <gold><appeal_url>.\n<red>Reason: <gold><reason>"`

Placeholders:

- `<type>` The type of indefinite ban
- `<appeal_url>` Appeal URL
- `<reason>` The reason

#### `playerNotFound`

Default: `"<red>Player not found!"`

#### `playerAmbiguous`

Default: `"<red>More than one player matches: <players>. Enter a full name."`

#### `specifyPlayer`

Default: `"<red>You must specify a player!"`

#### `worldNotFound`

Default: `"<red>World not found!"`

#### `correctUsagePrefix`

Default: `"<yellow>Correct Usage: "`

#### `noReasonProvided`

Default: `"No reason provided."`

If an admin does not give a reason for a punishment, Plex uses this message. MiniMessage tags are not processed here.

#### `playerWorldTeleport`

Default: `"<aqua>You have been teleported to <world>."`

Placeholders:

- `<world>` The world you have been teleported to

#### `frozePlayer`

Default: `"<red><sender> - Froze <player>"`

Placeholders:

- `<sender>` The person who is freezing
- `<player>` The person who has been frozen

#### `unfrozePlayer`

Default: `"<aqua><sender> - Unfroze <player>"`

Placeholders:

- `<sender>` The person who is unfreezing
- `<player>` The person who has been unfrozen

#### `mutedPlayer`

Default: `"<red><sender> - Muted <player>"`

Placeholders:

- `<sender>` The command sender
- `<player>` The person who has been muted

#### `unmutedPlayer`

Default: `"<aqua><sender> - Unmuted <player>"`

Placeholders:

- `<sender>` The command sender
- `<player>` The person who has been unmuted

#### `invalidTimeFormat`

Default: `"<red>Invalid time format. Use s, m, h, d, w, mo, or y (e.g., 1h30m)."`

#### `timeMustBeFuture`

Default: `"<red>The specified time must be in the future."`

#### `tempMutedPlayer`

Default: `"<red><sender> - Muted <player> for <duration>"`

Placeholders:

- `<sender>` The command sender
- `<player>` The person who has been muted
- `<duration>` The time that the person is muted for

#### `maxTimeExceeded`

Default: `"<red>The specified time must be under a week."`

#### `lockedUpPlayer`

Default: `"<aqua><sender> - Locking up <player>"`

Placeholders:

- `<sender>` The person who is locking up
- `<player>` The person who has been locked up

#### `unlockedPlayer`

Default: `"<aqua><sender> - Unlocking <player>"`

Placeholders:

- `<sender>` The person who is unlocking
- `<player>` The person who has been unlocked

#### `noPermissionNode`

Default: `"<red>You must have the permission: <permission> <red>to use this command!"`

Placeholders:

- `<permission>` The permission node required to use the command

#### `noPermissionInGame`

Default: `"<red>Run this command from the console."`

#### `noPermissionConsole`

Default: `"<red>Run this command in-game."`

#### `spectatorTeleportDenied`

Default: `"<red>You do not have permission to teleport while spectating."`

#### `gameModeCommandBlocked`

Default: `"<red>The vanilla gamemode command is disabled. Use the Essentials gamemode command or the gamemode switcher instead."`

#### `consoleMustDefinePlayer`

Default: `"<red>Specify a player when you run this command from the console."`

#### `teleportedToWorld`

Default: `"<aqua>You have been teleported to the <world>."`

Placeholders:

- `<world>` The world name

#### `higherRankThanYou`

Default: `"<red>This player is an admin or a higher rank than you."`

#### `consoleOnly`

Default: `"<red>Run this command from the console."`

#### `banningPlayer`

Default: `"<red><sender> - Banning <player>"`

Placeholders:

- `<sender>` The command sender
- `<player>` The player

#### `banningName`

Default: `"<red><sender> - Banning username <username>"`

Placeholders:

- `<sender>` The command sender
- `<username>` The username

#### `banningIp`

Default: `"<red><sender> - Banning IP <ip>"`

Placeholders:

- `<sender>` The command sender
- `<ip>` The IP address

#### `invalidUsername`

Default: `"<red>That is not a valid Minecraft username."`

#### `invalidIpOrPlayer`

Default: `"<red>Specify a valid IP address or a player with a known IP address."`

#### `nameAlreadyBanned`

Default: `"<red>That username is already banned."`

#### `ipAlreadyBanned`

Default: `"<red>That IP address is already banned."`

#### `nameNotBanned`

Default: `"<red>That username has no active 24-hour ban."`

#### `ipNotBanned`

Default: `"<red>That exact IP address or range has no active 24-hour ban."`

#### `unbanningName`

Default: `"<aqua><sender> - Unbanning username <username>"`

Placeholders:

- `<sender>` The command sender
- `<username>` The username

#### `unbanningIp`

Default: `"<aqua><sender> - Unbanning IP <ip>"`

Placeholders:

- `<sender>` The command sender
- `<ip>` The IP address or range

#### `unbanningPlayer`

Default: `"<aqua><sender> - Unbanning <player>"`

Placeholders:

- `<sender>` The command sender
- `<player>` The player

#### `playerNotBanned`

Default: `"<red>That player is not banned!"`

#### `playerNotFrozen`

Default: `"<red>That player is not frozen!"`

#### `playerNotMuted`

Default: `"<red>That player is not muted!"`

#### `playerBanned`

Default: `"<red>That player is already banned!"`

#### `playerFrozen`

Default: `"<red>That player is already frozen!"`

#### `playerMuted`

Default: `"<red>That player is already muted!"`

#### `muted`

Default: `"<red>You are currently muted - STFU!"`

#### `pvpDisabled`

Default: `"<red>PVP has been disabled!"`

#### `chatIsOff`

Default: `"<red>Chat is currently toggled off!"`

#### `chatToggled`

Default: `"<red><sender> - Toggled chat <state>"`

Placeholders:

- `<sender>` The command sender
- `<state>` The set value of the chat toggle

#### `kickedPlayer`

Default: `"<red><sender> - Kicking <player>"`

Placeholders:

- `<sender>` The command sender
- `<player>` The player

#### `teleportedToWorldSpawn`

Default: `"<aqua>Teleporting to the local spawn"`

#### `toggleCommandSpy`

Default: `"<gray>CommandSpy has been"`

#### `enabled`

Default: `"<gray>enabled."`

#### `disabled`

Default: `"<gray>disabled."`

#### `commandSpyFormat`

Default: `"<gray><sender>: <command>"`

Placeholders:

- `<sender>` The player
- `<command>` The command

#### `adminChatFormat`

Default: `'<dark_gray>[<blue>AdminChat<dark_gray>] <dark_red><sender> <prefix> <gray>» <gold><message>'`

Placeholders:

- `<sender>` The admin / staff member
- `<prefix>` The player's group's prefix if any
- `<message>` The message

#### `adminChatToggled`

Default: `'<gray>AdminChat was toggled <state>'`

Placeholders:

- `<state>` Whether it was toggled on or off

#### `stateEnabled`

Default: `"<green>enabled"`

#### `stateDisabled`

Default: `"<red>disabled"`

#### `stateEnabledUnsafe`

Default: `"<red>enabled"`

#### `stateDisabledSafe`

Default: `"<green>disabled"`

#### `stateOn`

Default: `"<green>on"`

#### `stateOff`

Default: `"<red>off"`

#### `maximumPrefixLength`

Default: `"<red>Your tag cannot be longer than <max_length> characters."`

Placeholders:

- `<max_length>` Maximum length, configured in config.yml

#### `prefixCleared`

Default: `"<aqua>Your prefix has been cleared."`

#### `otherPrefixCleared`

Default: `"<aqua>You have cleared <player>'s prefix."`

Placeholders:

- `<player>` The player name

#### `prefixSetTo`

Default: `"<aqua>Your prefix has been set to <prefix>"`

Placeholders:

- `<prefix>` The new prefix

#### `blockeditSize`

Default: `"<gray><action> block editing for <count> players."`

Placeholders:

- `<action>` The action (blocked / unblocked)
- `<count>` The amount of players

#### `blockeditListEntry`

Default: `"<gray>- <player>"`

#### `blockeditListNone`

Default: `"<gray>- none"`

#### `blockeditAllPlayers`

Default: `"all players"`

#### `blockeditAllNonAdmins`

Default: `"all non-admins"`

#### `blockeditBlockedAction`

Default: `"Blocked"`

#### `blockeditUnblockedAction`

Default: `"Unblocked"`

#### `blockeditBlockedState`

Default: `"blocked"`

#### `blockeditUnblockedState`

Default: `"unblocked"`

#### `editsModified`

Default: `"<gray>Block editing is now <state> for you."`

The action (blocked or restored)

#### `listOfPlayersBlocked`

Default: `"<gray>Players who cannot edit blocks:"`

#### `editsBlocked`

Default: `"<gray>Blocked block editing for <player>"`

Placeholders:

- `<player>` The player name

#### `blockingEdits`

Default: `"<red><sender> - Blocking block editing for <players>"`

Placeholders:

- `<sender>` The command sender
- `<players>` The player name

#### `unblockingEdits`

Default: `"<aqua><sender> - Unblocking block editing for <players>"`

Placeholders:

- `<sender>` The command sender
- `<players>` The player

#### `editsUnblocked`

Default: `"<gray>Unblocked block editing for <player>"`

Placeholders:

- `<player>` The player name

#### `removedEntities`

Default: `"<red><sender> - Removed <count> entities"`

Placeholders:

- `<sender>` The command sender
- `<count>` Number of entities removed

#### `removedEntitiesOfTypes`

Default: `"<red><sender> - Removed <count> entities of type(s) <types>"`

Placeholders:

- `<sender>` The command sender
- `<count>` Number of entities removed
- `<types>` Entity type(s) removed

#### `invalidEntityType`

Default: `"<gray>Notice: Entity type <entity_type> is invalid!"`

Placeholders:

- `<entity_type>` Entity type that is invalid

#### `noRemovedEntities`

Default: `"<gray>No entities were removed."`

#### `amountOfMobsRemoved`

Default: `"<gray><count> <mobs> removed."`

Placeholders:

- `<count>` Number of mobs removed
- `<mobs>` Type of mob removed

#### `mobSingular`

Default: `"mob"`

#### `mobPlural`

Default: `"mobs"`

#### `notAValidMob`

Default: `"<red>That is not a valid mob."`

#### `notAValidMobButValidEntity`

Default: `"<red>That is a valid entity, but is not a valid mob."`

#### `removedMobs`

Default: `"<red><sender> - Removed <count> mobs"`

Placeholders:

- `<sender>` The command sender
- `<count>` Number of mobs removed

#### `mobLimitToggle`

Default: `"<gray>The mob limit has been <state>"`

Placeholders:

- `<state>` The boolean for whether the limit is enabled or disabled

#### `mobLimitSet`

Default: `"<gray>The mob limit has been set to: <em><white><limit>"`

Placeholders:

- `<limit>` The amount that the mob limit has been set to

#### `mobLimitStatus`

Default: `"<gray>(<status><gray>) <em><white><count> <reset><gray>/ <em><white><limit> <reset><gray>per chunk (<em><white>Chunk<gray>: <reset><chunk_x>, <chunk_z><gray>)"`

Placeholders:

- `<status>` The boolean for whether the limit is enabled or disabled
- `<count>` The current amount of mobs in the world
- `<limit>` The current set mob limit
- `<chunk_x>` Chunk x value
- `<chunk_z>` Chunk z value

#### `mobLimitCeiling`

Default: `"<gray>That limit is too high. The limit has been set to the maximum allowed in the configuration."`

#### `mobLimitEnabled`

Default: `"<green>Enabled"`

#### `mobLimitDisabled`

Default: `"<red>Disabled"`

#### `sayMessage`

Default: `"<blue>[Server: <sender>] <message>"`

Placeholders:

- `<sender>` The command sender
- `<message>` The message being said

#### `consoleSayMessage`

Default: `"<gray>[Console: <sender>] <white><message>"`

Placeholders:

- `<sender>` The command sender
- `<message>` The message being said

#### `unableToParseNumber`

Default: `"<red><input> is not a valid number!"`

Placeholders:

- `<input>` The number attempted to be parsed

#### `noNotes`

Default: `"<red>This player has no notes!"`

#### `noteAdded`

Default: `"<green>Note added."`

#### `noteNotFound`

Default: `"<red>A note with this ID could not be found."`

#### `removedNote`

Default: `"<green>Removed note with ID: <id>"`

Placeholders:

- `<id>` The ID of the note removed

#### `clearedNotes`

Default: `"<green>Cleared <count> notes."`

Placeholders:

- `<count>` The number of notes cleared

#### `invalidToggle`

Default: `"<red>That is not a valid toggle."`

#### `toggleAvailable`

Default: `"<gray>Available toggles:"`

#### `toggleListItem`

Default: `"<gray> - <toggle><gray> (<status><gray>)"`

Placeholders:

- `<toggle>` The toggle name
- `<status>` The toggle status

#### `toggleCommandResult`

Default: `"<gray>Toggled <toggle><gray> (<status><gray>)"`

Placeholders:

- `<toggle>` The toggle name
- `<status>` The toggle status

#### `toggleToggled`

Default: `"<gray>Toggled <toggle>."`

Placeholders:

- `<toggle>` The toggle name

#### `toggleMenuTitle`

Default: `"<green><bold>Toggles"`

#### `toggleExplosions`

Default: `"Explosions"`

#### `toggleExplosionsLower`

Default: `"explosions"`

#### `toggleFluidSpread`

Default: `"Fluid spread"`

#### `toggleFluidSpreadLower`

Default: `"fluid spread"`

#### `toggleDrops`

Default: `"Player drops"`

#### `toggleDropsLower`

Default: `"player drops"`

#### `toggleRedstone`

Default: `"Redstone"`

#### `toggleRedstoneLower`

Default: `"redstone"`

#### `togglePvp`

Default: `"PVP"`

#### `togglePvpLower`

Default: `"PVP"`

#### `toggleChat`

Default: `"Chat"`

#### `toggleChatLower`

Default: `"chat"`

#### `specifyLoginMessage`

Default: `"<red>Please specify a login message."`

#### `setOwnLoginMessage`

Default: `"<gray>Your login message is now:<newline><gray>> <reset><message>"`

Placeholders:

- `<message>` The login message

#### `setOtherPlayersLoginMessage`

Default: `"<gray><player>'s login message is now:<newline><gray>> <reset><message>"`

Placeholders:

- `<player>` The player
- `<message>` The login message

#### `removedOwnLoginMessage`

Default: `"<gray>Your login message has been removed."`

#### `removedOtherLoginMessage`

Default: `"<gray>You removed <player>'s login message."`

Placeholders:

- `<player>` The player

#### `nameRequired`

Default: `"<red>Include your username in your login message. Enter your username or \\<player>."`

#### `groupRequired`

Default: `"<red>Include your group title in your login message. Enter the title or \\<group>."`

#### `groupNotConfigured`

Default: `"<red>Your primary group does not have a title configured, so it cannot be used in a login message."`

#### `playersWithMaterial`

Default: `"<gray>Players with <material> in their inventory: <players>"`

Placeholders:

- `<material>` The material name
- `<players>` The players who have the material in their inventory

#### `playersMaterialCleared`

Default: `"<gray><material> has been removed from the following players: <players>"`

Placeholders:

- `<material>` The material name
- `<players>` The players who have the material in their inventory

#### `nobodyHasThatMaterial`

Default: `"<gray>No one online has that in their inventory."`

#### `materialNotFound`

Default: `"<red><material> is not a valid item/block name."`

Placeholders:

- `<material>` The attempted material name

#### `notANumber`

Default: `"<red><input> is not a valid number!"`

Placeholders:

- `<input>` The string that wasn't a valid integer

#### `listHeader`

Default: `"<gray>There is currently <yellow><online_count><gray> player online out of <yellow><total_count><gray> players."`

Placeholders:

- `<online_count>` Players currently online
- `<total_count>` Max players

#### `listHeaderPlural`

Default: `"<gray>There are currently <yellow><online_count><gray> players online out of <yellow><total_count><gray> players."`

Placeholders:

- `<online_count>` Players currently online
- `<total_count>` Max players

#### `notesHeader`

Default: `"Player notes for: <green><player>"`

Placeholders:

- `<player>` Player who is having their notes fetched

#### `notePrefix`

Default: `"<gold><!italic><id> - Written by: <author> on <date>"`

Placeholders:

- `<id>` Note ID
- `<author>` Author of the note
- `<date>` Timestamp

#### `noteLine`

Default: `"<newline><yellow># <content>"`

Placeholders:

- `<content>` The content of the note

#### `playerNoteAlert`

Default: `"<gold><player> has <count> note. <view_notes><underlined>Click here to view their note."`

Placeholders:

- `<player>` The player
- `<count>` The number of notes logged for said player

#### `playerNoteAlertPlural`

Default: `"<gold><player> has <count> notes. <view_notes><underlined>Click here to view their notes."`

Placeholders:

- `<player>` The player
- `<count>` The number of notes logged for said player

#### `smiteTitleHeader`

Default: `"<red>You've been smitten."`

#### `smiteTitleMessage`

Default: `"<yellow>Be sure to follow the rules!"`

#### `smiteBroadcast`

Default: `"<red><player> has been a naughty, naughty boy.<newline><red> - Reason: <yellow><reason><newline><red> - Smitten by: <yellow><sender>"`

Placeholders:

- `<player>` The player
- `<reason>` The reason for the smite. Will default to noReasonProvided if no reason is specified.
- `<sender>` The admin / staff member

#### `smittenQuietly`

Default: `"<gray>Smitten <player> quietly."`

Placeholders:

- `<player>` The player

#### `smitten`

Default: `"<red>You've been smitten. Reason: <yellow><reason>"`

Placeholders:

- `<reason>` The reason for being smitten

#### `nukerKickMessage`

Default: `"Please turn off your nuker!"`

#### `nukerTempbanReason`

Default: `"You are temporarily banned for five minutes for using a Nuker."`

#### `antiSpamMessage`

Default: `"<gray>Please do not spam."`

#### `banExpiredBroadcast`

Default: `"Plex - Automatically unbanning <player>"`

Placeholders:

- `<player>` The player

#### `reappliedGamerules`

Default: `"<aqua>All game rules have been re-applied!"`

#### `commandNotFound`

Default: `"<red>That command could not be found!"`

#### `commandAliases`

Default: `"<aqua>Aliases for <command> are: <aliases>"`

Placeholders:

- `<command>` The command
- `<aliases>` A list of aliases found

#### `rollbackMessage`

Default: `"<gray>Rolled back <count> activities"`

Placeholders:

- `<count>` Number of activities found to rollback

#### `rollbackError`

Default: `"<red>Rollback failed: <error>"`

Placeholders:

- `<error>` Rollback error message

#### `rollbackNoResult`

Default: `"<gray>No activities have been rolled back"`

#### `punishmentMenuTitle`

Default: `"<aqua><bold>Punishments"`

#### `punishedPlayerMenuTitle`

Default: `"<red><bold>Punishments - <player>"`

Placeholders:

- `<player>` The player

#### `punishmentPlayerNotFound`

Default: `'<red>This player does not exist. Use /punishments \<player> instead.'`

#### `activeBansList`

Default: `"<gold>Active Bans (<count>): <yellow><players>"`

Placeholders:

- `<count>` The amount of active bans
- `<players>` The active ban list

#### `unbannedPlayers`

Default: `"<gold>Unbanned <count> players."`

Placeholders:

- `<count>` The amount of players unbanned

#### `updateUpToDate`

Default: `"<green>Plex is up to date on the <channel> channel."`

#### `updateAvailable`

Default: `"<red>Plex <version> is available on the <channel> channel."`

Placeholders:

- `<version>` The version
- `<channel>` The channel

#### `updateRunCommand`

Default: `"<red>Run: /plex update"`

#### `updateDownloading`

Default: `"<green>Downloading latest JAR file: <file>"`

Placeholders:

- `<file>` The file name

#### `updateDownloaded`

Default: `"<green>New JAR file downloaded and verified successfully."`

#### `updateDirectoryFailed`

Default: `"<red>Unable to create update directory: <directory>"`

Placeholders:

- `<directory>` The directory path

#### `updateDownloadFailed`

Default: `"<red>Something went wrong while downloading <artifact>. Please check the log for more information."`

Placeholders:

- `<artifact>` The artifact name

#### `updateMetadataNotFound`

Default: `"<red>No compatible update is available on the <channel> channel."`

Placeholders:

- `<channel>` The channel

#### `updateRequiresMinecraftVersion`

Default: `"<yellow>No Plex build exists for Minecraft <running_version>. Plex <version> on the <channel> channel supports Minecraft: <supported_versions>."`

Placeholders:

- `<version>` The Plex version
- `<channel>` The channel
- `<supported_versions>` The supported Minecraft versions
- `<running_version>` The running Minecraft version

#### `updateRequiresNewerMinecraft`

Default: `"<yellow>Your server is running Minecraft <running_version>, which is older than any version supported by Plex <version> on the <channel> channel (oldest supported: <oldest_supported_version>). Supported versions: <supported_versions>."`

Placeholders:

- `<version>` The Plex version
- `<channel>` The channel
- `<oldest_supported_version>` The oldest supported Minecraft version
- `<running_version>` The running Minecraft version
- `<supported_versions>` The supported Minecraft versions

#### `updateUnsupportedNewerMinecraft`

Default: `"<yellow>No Plex build exists yet for Minecraft <running_version>. Plex <version> on the <channel> channel supports up to Minecraft <newest_supported_version>. Supported versions: <supported_versions>."`

Placeholders:

- `<version>` The Plex version
- `<channel>` The channel
- `<newest_supported_version>` The newest supported Minecraft version
- `<running_version>` The running Minecraft version
- `<supported_versions>` The supported Minecraft versions

#### `updateMetadataError`

Default: `"<red>There was an error checking update metadata: <error>"`

Placeholders:

- `<error>` The error message

#### `moduleUpdateDisabled`

Default: `"<yellow>Skipping <module>; module updates are disabled."`

#### `moduleUpdateSummary`

Default: `"<green>Module updates finished: <yellow><updated_count> updated<gray>, <yellow><skipped_count> skipped<gray>, <red><failed_count> failed<gray>. Modules were reloaded after all update attempts completed."`

Placeholders:

- `<updated_count>` The number of modules updated
- `<skipped_count>` The number of modules skipped
- `<failed_count>` The number of modules that failed to update

#### `moduleCommandsReloaded`

Default: `"<green>Module commands reloaded."`

### WorldGuard protection

#### `protectRegionCreated`

Default: `"<green>Created WorldGuard region <yellow><region></yellow> with the <yellow><preset></yellow> preset in <yellow><world></yellow>."`

#### `protectPresetApplied`

Default: `"<green>Applied the <yellow><preset></yellow> preset to region <yellow><region></yellow>."`

#### `protectRegionRemoved`

Default: `"<green>Removed region <yellow><region></yellow> from <yellow><world></yellow>."`

#### `protectReloaded`

Default: `"<green>Reloaded protection.yml and synchronized <yellow><count></yellow> managed regions."`

#### `protectSelectionIncomplete`

Default: `"<red>Make a complete WorldEdit selection first, or provide a radius."`

#### `protectRegionExists`

Default: `"<red>A region named <region> already exists or is already managed by Plex."`

#### `protectRegionNotFound`

Default: `"<red>No WorldGuard region named <region> exists in this world."`

#### `protectPresetNotFound`

Default: `"<red>No protection preset named <preset> exists."`

#### `protectInvalidRegionId`

Default: `"<red><region> is not a valid WorldGuard region name."`

#### `protectManagerUnavailable`

Default: `"<red>WorldGuard region support is unavailable for world <world>."`

#### `protectInvalidPreset`

Default: `"<red>The protection configuration is invalid: <error>"`

#### `protectInvalidRadius`

Default: `"<red>The protection radius must be at least 1 block."`

#### `protectPlayerOnly`

Default: `"<red>Run this command in-game."`

#### `protectUnsupportedRegion`

Default: `"<red>Region <region> is not a cuboid. Plex only manages cuboid regions."`

#### `protectManagedOtherWorld`

Default: `"<red>A Plex-managed region with that name already exists in world <world>."`

#### `protectNoRegions`

Default: `"<gray>Plex is not managing any WorldGuard regions."`

#### `protectRegionListHeader`

Default: `"<gold>Managed protection regions (<count>):"`

#### `protectRegionListEntry`

Default: `"<gray>- <yellow><region></yellow> in <world> (preset: <preset>)"`

#### `protectNoPresets`

Default: `"<gray>No protection presets are configured."`

#### `protectPresetListHeader`

Default: `"<gold>Protection presets (<count>):"`

#### `protectPresetListEntry`

Default: `"<gray>- <yellow><preset></yellow>: <description>"`

## Ban messages

A banned player may still join in spectator mode when a spectator slot is free. Plex kicks that player with `bannedPriorityKick` when a regular player needs the slot. Plex shows `banCapacityMessage` when every spectator slot is already taken.

A player with the `plex.playerlimitbypass` permission can join when the server is full. Plex first kicks a banned player to make room. If no banned player is online, Plex kicks a random player who does not have that permission. That player sees `playerLimitBypassKick`.

## Login messages

Plex replaces the player’s own name with `<player>` and their group title with `<group>` when they set a login message. The `nameRequired` and `groupRequired` messages tell a player to add those values.

## Rollbacks

Plex uses Oasis for a rollback. If Oasis is not installed, Plex uses CoreProtect. Without either plugin, no rollback runs.

## MiniMessage

The `messages.yml` file uses MiniMessage for colors. For example, `<aqua>` colors the text aqua. You do not need to close a color tag. You can close one, for example with `</aqua>`, to end that color early. MiniMessage also has special tags, such as `<rainbow>`. Text with no color tag uses the normal Minecraft color, which is white in chat. Add a tag such as `<gray>` to pick a color. For the full MiniMessage guide, see <https://docs.advntr.dev/minimessage/format.html>.

Values in angle brackets, such as `<player>` and `<count>`, are replacement values. Plex fills each one with a value, such as a player name or a number. The comment above each message lists the values for that message. A value is optional, and you can repeat it. Plex does not support placeholders in braces, such as `{0}`. Use the names in angle brackets.

Modules can ship their own message files. A module reads its own `messages.yml` first, then falls back to the Plex messages for any key that it does not define.

## Troubleshooting

If a command fails with an error instead of showing a message, your `messages.yml` file may be missing a key. Plex adds missing keys back when the server starts and when you run `/plex reload`. You can also compare your file with the default file on [GitHub](https://raw.githubusercontent.com/plexusorg/Plex/master/server/src/main/resources/messages.yml).
