Messages
You can change almost every message in Plex. This page shows the messages.yml file. The file is at
/plugins/Plex/messages.yml.
Default file
Section titled “Default file”Below is the default messages.yml file.
# Plex Messages File# This file uses the MiniMessage system.# Documentation available at https://docs.papermc.io/adventure/minimessage/format/
# Messages in here will be placed in for certain commands, actions, etc.# Warning: not all commands have customizable messages
# Dynamic values use native MiniMessage tags such as <player> and <count>.# Available tags are documented above each message. Tags are optional and may be repeated.# <view_notes> adds the notes command click action to the text inside it.# Existing message files must be updated to this syntax; brace placeholders are not supported.
# <appeal_url> - Appeal URL# <reason> - Reason# <expires_in> - Expiry# <punisher> - PunisherbanMessage: "<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>"# <reason> - Reason# <expires_in> - ExpirybanStatus: "<red>Banned <dark_gray>• <gold><reason> <dark_gray>• <yellow>Expires in <expires_in>"# <appeal_url> - Appeal URL# <reason> - Reason# <expires_in> - Expiry# <punisher> - PunisherbanCapacityMessage: "<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>"bannedPriorityKick: "<red>A regular player needed your spectator slot. Reconnect when space is available."# <reason> - Reason# <punisher> - PunisherkickMessage: "<red>You have been kicked! \n<red>Reason: <gold><reason>\n<red>Kicked by: <gold><punisher>"# <type> - The type of indefinite ban# <appeal_url> - Appeal URLindefBanMessage: "<red>Your <type> is indefinitely banned! You may appeal at <gold><appeal_url>."# <type> - The type of indefinite ban# <appeal_url> - Appeal URL# <reason> - The reasonindefBanMessageReason: "<red>Your <type> is indefinitely banned! You may appeal at <gold><appeal_url>.\n<red>Reason: <gold><reason>"playerNotFound: "<red>Player not found!"specifyPlayer: "<red>You must specify a player!"worldNotFound: "<red>World not found!"correctUsagePrefix: "<yellow>Correct Usage: "# This will always be used for punishments where the sanctioning administrator has not provided a reason. Will ignore MiniMessage tags.noReasonProvided: "No reason provided."# <world> - The world you have been teleported toplayerWorldTeleport: "<aqua>You have been teleported to <world>."# <sender> - The person who is freezing# <player> - The person who has been frozenfrozePlayer: "<red><sender> - Froze <player>"# <sender> - The person who is unfreezing# <player> - The person who has been unfrozenunfrozePlayer: "<aqua><sender> - Unfroze <player>"# <sender> - The command sender# <player> - The person who has been mutedmutedPlayer: "<red><sender> - Muted <player>"# <sender> - The command sender# <player> - The person who has been unmutedunmutedPlayer: "<aqua><sender> - Unmuted <player>"invalidTimeFormat: "<red>Invalid time format. Use s, m, h, d, w, mo, or y (e.g., 1h30m)."timeMustBeFuture: "<red>The specified time must be in the future."# <sender> - The command sender# <player> - The person who has been muted# <duration> - The time that the person is muted fortempMutedPlayer: "<red><sender> - Muted <player> for <duration>"maxTimeExceeded: "<red>The specified time must be under a week."# <sender> - The person who is locking up# <player> - The person who has been locked uplockedUpPlayer: "<aqua><sender> - Locking up <player>"# <sender> - The person who is unlocking# <player> - The person who has been unlockedunlockedPlayer: "<aqua><sender> - Unlocking <player>"# <permission> - The permission node required to use the commandnoPermissionNode: "<red>You must have the permission: <permission> <red>to use this command!"noPermissionInGame: "<red>You must be in console to use this command!"noPermissionConsole: "<red>You must be in-game to use this command!"spectatorTeleportDenied: "<red>You do not have permission to teleport while spectating."gameModeCommandBlocked: "<red>The vanilla gamemode command is disabled. Use the Essentials gamemode command or the gamemode switcher instead."consoleMustDefinePlayer: "<red>You must define a player since you are running this command from console."# <world> - The world nameteleportedToWorld: "<aqua>You have been teleported to the <world>."higherRankThanYou: "<red>This player is an admin or a higher rank than you."consoleOnly: "<red>This command can only be executed by the console."# <sender> - The command sender# <player> - The playerbanningPlayer: "<red><sender> - Banning <player>"# <sender> - The command sender# <username> - The usernamebanningName: "<red><sender> - Banning username <username>"# <sender> - The command sender# <ip> - The IP addressbanningIp: "<red><sender> - Banning IP <ip>"invalidUsername: "<red>That is not a valid Minecraft username."invalidIpOrPlayer: "<red>Specify a valid IP address or a player with a known IP address."nameAlreadyBanned: "<red>That username is already banned."ipAlreadyBanned: "<red>That IP address is already banned."# <sender> - The command sender# <player> - The playerunbanningPlayer: "<aqua><sender> - Unbanning <player>"playerNotBanned: "<red>That player is not banned!"playerNotFrozen: "<red>That player is not frozen!"playerNotMuted: "<red>That player is not muted!"playerBanned: "<red>That player is already banned!"playerFrozen: "<red>That player is already frozen!"playerMuted: "<red>That player is already muted!"muted: "<red>You are currently muted - STFU!"pvpDisabled: "<red>PVP has been disabled!"chatIsOff: "<red>Chat is currently toggled off!"# <sender> - The command sender# <state> - The set value of the chat togglechatToggled: "<red><sender> - Toggled chat <state>"# <sender> - The command sender# <player> - The playerkickedPlayer: "<red><sender> - Kicking <player>"teleportedToWorldSpawn: "<aqua>Teleporting to the local spawn"toggleCommandSpy: "<gray>CommandSpy has been"enabled: "<gray>enabled."disabled: "<gray>disabled."# <sender> - The player# <command> - The commandcommandSpyFormat: "<gray><sender>: <command>"# <sender> - The admin / staff member# <prefix> - The player's group's prefix if any# <message> - The messageadminChatFormat: '<dark_gray>[<blue>AdminChat<dark_gray>] <dark_red><sender> <prefix> <gray>» <gold><message>'# <state> - Whether it was toggled on or offadminChatToggled: '<gray>AdminChat was toggled <state>'stateEnabled: "<green>enabled"stateDisabled: "<red>disabled"stateEnabledUnsafe: "<red>enabled"stateDisabledSafe: "<green>disabled"stateOn: "<green>on"stateOff: "<red>off"# <max_length> - Maximum length, configured in config.ymlmaximumPrefixLength: "<red>The maximum length for a tag may only be <max_length>."prefixCleared: "<aqua>Your prefix has been cleared."# <player> - The player nameotherPrefixCleared: "<aqua>You have cleared <player>'s prefix."# <prefix> - The new prefixprefixSetTo: "<aqua>Your prefix has been set to <prefix>"# <action> - The action (blocked / unblocked)# <count> - The amount of playersblockeditSize: "<gray><action> all block modification abilities for <count> players."blockeditListEntry: "<gray>- <player>"blockeditListNone: "<gray>- none"blockeditAllPlayers: "all players"blockeditAllNonAdmins: "all non-admins"blockeditBlockedAction: "Blocked"blockeditUnblockedAction: "Unblocked"blockeditBlockedState: "blocked"blockeditUnblockedState: "unblocked"# The action (blocked or restored)editsModified: "<gray>Your block modification abilities have been <state>."listOfPlayersBlocked: "<gray>The following have block modification abilities restricted:"# <player> - The player nameeditsBlocked: "<gray>Blocked block modification abilities for <player>"# <sender> - The command sender# <players> - The player nameblockingEdits: "<red><sender> - Blocking block modification abilities for <players>"# <sender> - The command sender# <players> - The playerunblockingEdits: "<aqua><sender> - Unblocking block modification abilities for <players>"# <player> - The player nameeditsUnblocked: "<gray>Unblocked block modification abilities for <player>"# <sender> - The command sender# <count> - Number of entities removedremovedEntities: "<red><sender> - Removed <count> entities"# <sender> - The command sender# <count> - Number of entities removed# <types> - Entity type(s) removedremovedEntitiesOfTypes: "<red><sender> - Removed <count> entities of type(s) <types>"# <entity_type> - Entity type that is invalidinvalidEntityType: "<gray>Notice: Entity type <entity_type> is invalid!"noRemovedEntities: "<gray>No entities were removed."# <count> - Number of mobs removed# <mobs> - Type of mob removedamountOfMobsRemoved: "<gray><count> <mobs> removed."mobSingular: "mob"mobPlural: "mobs"notAValidMob: "<red>That is not a valid mob."notAValidMobButValidEntity: "<red>That is a valid entity, but is not a valid mob."# <sender> - The command sender# <count> - Number of mobs removedremovedMobs: "<red><sender> - Removed <count> mobs"# <state> - The boolean for whether the limit is enabled or disabledmobLimitToggle: "<gray>The mob limit has been <state>"# <limit> - The amount that the mob limit has been set tomobLimitSet: "<gray>The mob limit has been set to: <em><white><limit>"# <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 valuemobLimitStatus: "<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>)"mobLimitCeiling: "<gray>The limit you have entered is too high. Defaulting to the ceiling value from config"mobLimitEnabled: "<green>Enabled"mobLimitDisabled: "<red>Disabled"# <sender> - The command sender# <message> - The message being saidsayMessage: "<blue>[Server: <sender>] <message>"# <sender> - The command sender# <message> - The message being saidconsoleSayMessage: "<gray>[Console: <sender>] <white><message>"# <input> - The number attempted to be parsedunableToParseNumber: "<red>Unable to parse <input> as a number!"noNotes: "<red>This player has no notes!"noteAdded: "<green>Note added."noteNotFound: "<red>A note with this ID could not be found."# <id> - The ID of the note removedremovedNote: "<green>Removed note with ID: <id>"# <count> - The number of notes clearedclearedNotes: "<green>Cleared <count> notes."invalidToggle: "<red>That is not a valid toggle."toggleAvailable: "<gray>Available toggles:"# <toggle> - The toggle name# <status> - The toggle statustoggleListItem: "<gray> - <toggle><gray> (<status><gray>)"# <toggle> - The toggle name# <status> - The toggle statustoggleCommandResult: "<gray>Toggled <toggle><gray> (<status><gray>)"# <toggle> - The toggle nametoggleToggled: "<gray>Toggled <toggle>."toggleMenuTitle: "<green><bold>Toggles"toggleExplosions: "Explosions"toggleExplosionsLower: "explosions"toggleFluidSpread: "Fluid spread"toggleFluidSpreadLower: "fluid spread"toggleDrops: "Player drops"toggleDropsLower: "player drops"toggleRedstone: "Redstone"toggleRedstoneLower: "redstone"togglePvp: "PVP"togglePvpLower: "PVP"toggleChat: "Chat"toggleChatLower: "chat"specifyLoginMessage: "<red>Please specify a login message."# <message> - The login messagesetOwnLoginMessage: "<gray>Your login message is now:<newline><gray>> <reset><message>"# <player> - The player# <message> - The login messagesetOtherPlayersLoginMessage: "<gray><player>'s login message is now:<newline><gray>> <reset><message>"removedOwnLoginMessage: "<gray>Your login message has been removed."# <player> - The playerremovedOtherLoginMessage: "<gray>You removed <player>'s login message."nameRequired: "<red>Policy requires that you must state your player name in your login message. You can either do this by inserting your name or \\<player>."groupRequired: "<red>Policy requires that you must state your group in your login message. You can either do this by inserting your configured group title or \\<group>."groupNotConfigured: "<red>Your primary group does not have a title configured, so it cannot be used in a login message."# <material> - The material name# <players> - The players who have the material in their inventoryplayersWithMaterial: "<gray>Players with <material> in their inventory: <players>"# <material> - The material name# <players> - The players who have the material in their inventoryplayersMaterialCleared: "<gray><material> has been removed from the following players: <players>"nobodyHasThatMaterial: "<gray>No one online has that in their inventory."# <material> - The attempted material namematerialNotFound: "<red><material> is not a valid item/block name."# <input> - The string that wasn't a valid integernotANumber: "<red><input> is not a valid number!"# <online_count> - Players currently online# <total_count> - Max playerslistHeader: "<gray>There is currently <yellow><online_count><gray> player online out of <yellow><total_count><gray> players."# <online_count> - Players currently online# <total_count> - Max playerslistHeaderPlural: "<gray>There are currently <yellow><online_count><gray> players online out of <yellow><total_count><gray> players."# <player> - Player who is having their notes fetchednotesHeader: "Player notes for: <green><player>"# <id> - Note ID# <author> - Author of the note# <date> - TimestampnotePrefix: "<gold><!italic><id> - Written by: <author> on <date>"# <content> - The content of the notenoteLine: "<newline><yellow># <content>"# <player> - The player# <count> - The number of notes logged for said playerplayerNoteAlert: "<gold><player> has <count> note. <view_notes><underlined>Click here to view their note."# <player> - The player# <count> - The number of notes logged for said playerplayerNoteAlertPlural: "<gold><player> has <count> notes. <view_notes><underlined>Click here to view their notes."smiteTitleHeader: "<red>You've been smitten."smiteTitleMessage: "<yellow>Be sure to follow the rules!"# <player> - The player# <reason> - The reason for the smite. Will default to noReasonProvided if no reason is specified.# <sender> - The admin / staff membersmiteBroadcast: "<red><player> has been a naughty, naughty boy.<newline><red> - Reason: <yellow><reason><newline><red> - Smitten by: <yellow><sender>"# <player> - The playersmittenQuietly: "<gray>Smitten <player> quietly."# <reason> - The reason for being smittensmitten: "<red>You've been smitten. Reason: <yellow><reason>"nukerKickMessage: "Please turn off your nuker!"nukerTempbanReason: "You are temporarily banned for five minutes for using a Nuker."antiSpamMessage: "<gray>Please refrain from spamming messages."# <player> - The playerbanExpiredBroadcast: "Plex - Automatically unbanning <player>"# <player> - The playerredisResetSuccessful: "<yellow>Successfuly reset <player>'s Redis punishments!"redisResetPlayerNotFound: "Couldn't find player in Redis punishments."reappliedGamerules: "<aqua>All game rules have been re-applied!"commandNotFound: "<red>That command could not be found!"# <command> - The command# <aliases> - A list of aliases foundcommandAliases: "<aqua>Aliases for <command> are: <aliases>"# <count> - Number of activities found to rollbackrollbackMessage: "<gray>Rolled back <count> activities"# <error> - Rollback error messagerollbackError: "<red>Rollback failed: <error>"rollbackNoResult: "<gray>No activities have been rolled back"punishmentMenuTitle: "<aqua><bold>Punishments"# <player> - The playerpunishedPlayerMenuTitle: "<red><bold>Punishments - <player>"punishmentPlayerNotFound: '<red>This player does not exist. Try doing /punishments \<player> instead.'# <count> - The amount of active bans# <players> - The active ban listactiveBansList: "<gold>Active Bans (<count>): <yellow><players>"# <count> - The amount of players unbannedunbannedPlayers: "<gold>Unbanned <count> players."updateUpToDate: "<green>Plex is up to date on the <channel> channel."# <version> - The version# <channel> - The channelupdateAvailable: "<red>Plex <version> is available on the <channel> channel."updateRunCommand: "<red>Run: /plex update"# <file> - The file nameupdateDownloading: "<green>Downloading latest JAR file: <file>"updateDownloaded: "<green>New JAR file downloaded and verified successfully."# <directory> - The directory pathupdateDirectoryFailed: "<red>Unable to create update directory: <directory>"# <artifact> - The artifact nameupdateDownloadFailed: "<red>Something went wrong while downloading <artifact>. Please check the log for more information."# <channel> - The channelupdateMetadataNotFound: "<red>No compatible update is available on the <channel> channel."# <version> - The Plex version# <channel> - The channel# <supported_versions> - The supported Minecraft versions# <running_version> - The running Minecraft versionupdateRequiresMinecraftVersion: "<yellow>No Plex build exists for Minecraft <running_version>. Plex <version> on the <channel> channel supports Minecraft: <supported_versions>."# <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 versionsupdateRequiresNewerMinecraft: "<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>."# <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 versionsupdateUnsupportedNewerMinecraft: "<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>."# <error> - The error messageupdateMetadataError: "<red>There was an error checking update metadata: <error>"moduleUpdateDisabled: "<yellow>Skipping <module>; module updates are disabled."# <updated_count> - The number of modules updated# <skipped_count> - The number of modules skipped# <failed_count> - The number of modules that failed to updatemoduleUpdateSummary: "<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."moduleRestartRequired: "<yellow>Module changes applied. Restart the server if module commands do not appear or disappear."
# WorldGuard protection commandprotectRegionCreated: "<green>Created WorldGuard region <yellow><region></yellow> with the <yellow><preset></yellow> preset in <yellow><world></yellow>."protectPresetApplied: "<green>Applied the <yellow><preset></yellow> preset to region <yellow><region></yellow>."protectRegionRemoved: "<green>Removed region <yellow><region></yellow> from <yellow><world></yellow>."protectReloaded: "<green>Reloaded protection.yml and synchronized <yellow><count></yellow> managed regions."protectSelectionIncomplete: "<red>Make a complete WorldEdit selection first, or provide a radius."protectRegionExists: "<red>A region named <region> already exists or is already managed by Plex."protectRegionNotFound: "<red>No WorldGuard region named <region> exists in this world."protectPresetNotFound: "<red>No protection preset named <preset> exists."protectInvalidRegionId: "<red><region> is not a valid WorldGuard region name."protectManagerUnavailable: "<red>WorldGuard region support is unavailable for world <world>."protectInvalidPreset: "<red>The protection configuration is invalid: <error>"protectInvalidRadius: "<red>The protection radius must be at least 1 block."protectPlayerOnly: "<red>This protection operation must be run by a player."protectUnsupportedRegion: "<red>Region <region> is not a cuboid. Plex only manages cuboid regions."protectManagedOtherWorld: "<red>A Plex-managed region with that name already exists in world <world>."protectNoRegions: "<gray>Plex is not managing any WorldGuard regions."protectRegionListHeader: "<gold>Managed protection regions (<count>):"protectRegionListEntry: "<gray>- <yellow><region></yellow> in <world> (preset: <preset>)"protectNoPresets: "<gray>No protection presets are configured."protectPresetListHeader: "<gold>Protection presets (<count>):"protectPresetListEntry: "<gray>- <yellow><preset></yellow>: <description>"Ban messages
Section titled “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.
Login messages
Section titled “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
Section titled “Rollbacks”Plex uses Oasis for a rollback. If Oasis is not installed, Plex uses CoreProtect. Without either plugin, no rollback runs.
MiniMessage
Section titled “MiniMessage”The messages.yml file uses MiniMessage for colors. For example, <aqua> colors the text aqua. This is not like HTML,
so you do not close the tag with </aqua>. MiniMessage also has special tags, such as <rainbow>. The default color is
gray. 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. Older message files that use {0} and {1} no longer work. Rewrite those messages with the
names.
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
Section titled “Troubleshooting”If a command shows No message., your messages.yml file may be missing a key. Plex adds missing keys to your file when
it starts, so a restart usually fixes this. You can also compare your file with the default file on
GitHub.
