Skip to content
Select theme
  • Auto
  • Dark
  • Light

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.

banMessage
"<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>"
  • <appeal_url> Appeal URL
  • <reason> Reason
  • <expires_in> Expiry
  • <punisher> Punisher
#
banStatus
"<red>Banned <dark_gray>• <gold><reason> <dark_gray>• <yellow>Expires in <expires_in>"
  • <reason> Reason
  • <expires_in> Expiry
#
banCapacityMessage
"<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>"
  • <appeal_url> Appeal URL
  • <reason> Reason
  • <expires_in> Expiry
  • <punisher> Punisher
#
bannedPriorityKick
"<red>A regular player needed your spectator slot. Reconnect when space is available."
#
bannedPlayerJoined
"<gray>Banned player <yellow><player><gray> joined"
  • <player> Player name
#
bannedPlayerLeft
"<gray>Banned player <yellow><player><gray> left"
  • <player> Player name
#
bannedTabMarker
"<dark_red>[BANNED]"
#
playerLimitBypassKick
"<red>A player with priority needed your slot. Reconnect when space is available."
#
kickMessage
"<red>You have been kicked! \n<red>Reason: <gold><reason>\n<red>Kicked by: <gold><punisher>"
  • <reason> Reason
  • <punisher> Punisher
#
indefBanMessage
"<red>Your <type> is indefinitely banned! You may appeal at <gold><appeal_url>."
  • <type> The type of indefinite ban
  • <appeal_url> Appeal URL
#
indefBanMessageReason
"<red>Your <type> is indefinitely banned! You may appeal at <gold><appeal_url>.\n<red>Reason: <gold><reason>"
  • <type> The type of indefinite ban
  • <appeal_url> Appeal URL
  • <reason> The reason
#
playerNotFound
"<red>Player not found!"
#
playerAmbiguous
"<red>More than one player matches: <players>. Enter a full name."
#
specifyPlayer
"<red>You must specify a player!"
#
worldNotFound
"<red>World not found!"
#
correctUsagePrefix
"<yellow>Correct Usage: "
#
noReasonProvided
"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
"<aqua>You have been teleported to <world>."
  • <world> The world you have been teleported to
#
frozePlayer
"<red><sender> - Froze <player>"
  • <sender> The person who is freezing
  • <player> The person who has been frozen
#
unfrozePlayer
"<aqua><sender> - Unfroze <player>"
  • <sender> The person who is unfreezing
  • <player> The person who has been unfrozen
#
mutedPlayer
"<red><sender> - Muted <player>"
  • <sender> The command sender
  • <player> The person who has been muted
#
unmutedPlayer
"<aqua><sender> - Unmuted <player>"
  • <sender> The command sender
  • <player> The person who has been unmuted
#
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."
#
tempMutedPlayer
"<red><sender> - Muted <player> for <duration>"
  • <sender> The command sender
  • <player> The person who has been muted
  • <duration> The time that the person is muted for
#
maxTimeExceeded
"<red>The specified time must be under a week."
#
lockedUpPlayer
"<aqua><sender> - Locking up <player>"
  • <sender> The person who is locking up
  • <player> The person who has been locked up
#
unlockedPlayer
"<aqua><sender> - Unlocking <player>"
  • <sender> The person who is unlocking
  • <player> The person who has been unlocked
#
noPermissionNode
"<red>You must have the permission: <permission> <red>to use this command!"
  • <permission> The permission node required to use the command
#
noPermissionInGame
"<red>Run this command from the console."
#
noPermissionConsole
"<red>Run this command in-game."
#
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>Specify a player when you run this command from the console."
#
teleportedToWorld
"<aqua>You have been teleported to the <world>."
  • <world> The world name
#
higherRankThanYou
"<red>This player is an admin or a higher rank than you."
#
consoleOnly
"<red>Run this command from the console."
#
banningPlayer
"<red><sender> - Banning <player>"
  • <sender> The command sender
  • <player> The player
#
banningName
"<red><sender> - Banning username <username>"
  • <sender> The command sender
  • <username> The username
#
banningIp
"<red><sender> - Banning IP <ip>"
  • <sender> The command sender
  • <ip> The IP address
#
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."
#
nameNotBanned
"<red>That username has no active 24-hour ban."
#
ipNotBanned
"<red>That exact IP address or range has no active 24-hour ban."
#
unbanningName
"<aqua><sender> - Unbanning username <username>"
  • <sender> The command sender
  • <username> The username
#
unbanningIp
"<aqua><sender> - Unbanning IP <ip>"
  • <sender> The command sender
  • <ip> The IP address or range
#
unbanningPlayer
"<aqua><sender> - Unbanning <player>"
  • <sender> The command sender
  • <player> The 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!"
#
chatToggled
"<red><sender> - Toggled chat <state>"
  • <sender> The command sender
  • <state> The set value of the chat toggle
#
kickedPlayer
"<red><sender> - Kicking <player>"
  • <sender> The command sender
  • <player> The player
#
teleportedToWorldSpawn
"<aqua>Teleporting to the local spawn"
#
toggleCommandSpy
"<gray>CommandSpy has been"
#
enabled
"<gray>enabled."
#
disabled
"<gray>disabled."
#
commandSpyFormat
"<gray><sender>: <command>"
  • <sender> The player
  • <command> The command
#
adminChatFormat
'<dark_gray>[<blue>AdminChat<dark_gray>] <dark_red><sender> <prefix> <gray>» <gold><message>'
  • <sender> The admin / staff member
  • <prefix> The player's group's prefix if any
  • <message> The message
#
adminChatToggled
'<gray>AdminChat was toggled <state>'
  • <state> Whether it was toggled on or off
#
stateEnabled
"<green>enabled"
#
stateDisabled
"<red>disabled"
#
stateEnabledUnsafe
"<red>enabled"
#
stateDisabledSafe
"<green>disabled"
#
stateOn
"<green>on"
#
stateOff
"<red>off"
#
maximumPrefixLength
"<red>Your tag cannot be longer than <max_length> characters."
  • <max_length> Maximum length, configured in config.yml
#
prefixCleared
"<aqua>Your prefix has been cleared."
#
otherPrefixCleared
"<aqua>You have cleared <player>'s prefix."
  • <player> The player name
#
prefixSetTo
"<aqua>Your prefix has been set to <prefix>"
  • <prefix> The new prefix
#
blockeditSize
"<gray><action> block editing for <count> players."
  • <action> The action (blocked / unblocked)
  • <count> The amount of players
#
blockeditListEntry
"<gray>- <player>"
#
blockeditListNone
"<gray>- none"
#
blockeditAllPlayers
"all players"
#
blockeditAllNonAdmins
"all non-admins"
#
blockeditBlockedAction
"Blocked"
#
blockeditUnblockedAction
"Unblocked"
#
blockeditBlockedState
"blocked"
#
blockeditUnblockedState
"unblocked"
#
editsModified
"<gray>Block editing is now <state> for you."

The action (blocked or restored)

#
listOfPlayersBlocked
"<gray>Players who cannot edit blocks:"
#
editsBlocked
"<gray>Blocked block editing for <player>"
  • <player> The player name
#
blockingEdits
"<red><sender> - Blocking block editing for <players>"
  • <sender> The command sender
  • <players> The player name
#
unblockingEdits
"<aqua><sender> - Unblocking block editing for <players>"
  • <sender> The command sender
  • <players> The player
#
editsUnblocked
"<gray>Unblocked block editing for <player>"
  • <player> The player name
#
removedEntities
"<red><sender> - Removed <count> entities"
  • <sender> The command sender
  • <count> Number of entities removed
#
removedEntitiesOfTypes
"<red><sender> - Removed <count> entities of type(s) <types>"
  • <sender> The command sender
  • <count> Number of entities removed
  • <types> Entity type(s) removed
#
invalidEntityType
"<gray>Notice: Entity type <entity_type> is invalid!"
  • <entity_type> Entity type that is invalid
#
noRemovedEntities
"<gray>No entities were removed."
#
amountOfMobsRemoved
"<gray><count> <mobs> removed."
  • <count> Number of mobs removed
  • <mobs> Type of mob 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."
#
removedMobs
"<red><sender> - Removed <count> mobs"
  • <sender> The command sender
  • <count> Number of mobs removed
#
mobLimitToggle
"<gray>The mob limit has been <state>"
  • <state> The boolean for whether the limit is enabled or disabled
#
mobLimitSet
"<gray>The mob limit has been set to: <em><white><limit>"
  • <limit> The amount that the mob limit has been set to
#
mobLimitStatus
"<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>)"
  • <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
"<gray>That limit is too high. The limit has been set to the maximum allowed in the configuration."
#
mobLimitEnabled
"<green>Enabled"
#
mobLimitDisabled
"<red>Disabled"
#
sayMessage
"<blue>[Server: <sender>] <message>"
  • <sender> The command sender
  • <message> The message being said
#
consoleSayMessage
"<gray>[Console: <sender>] <white><message>"
  • <sender> The command sender
  • <message> The message being said
#
unableToParseNumber
"<red><input> is not a valid number!"
  • <input> The number attempted to be parsed
#
noNotes
"<red>This player has no notes!"
#
noteAdded
"<green>Note added."
#
noteNotFound
"<red>A note with this ID could not be found."
#
removedNote
"<green>Removed note with ID: <id>"
  • <id> The ID of the note removed
#
clearedNotes
"<green>Cleared <count> notes."
  • <count> The number of notes cleared
#
invalidToggle
"<red>That is not a valid toggle."
#
toggleAvailable
"<gray>Available toggles:"
#
toggleListItem
"<gray> - <toggle><gray> (<status><gray>)"
  • <toggle> The toggle name
  • <status> The toggle status
#
toggleCommandResult
"<gray>Toggled <toggle><gray> (<status><gray>)"
  • <toggle> The toggle name
  • <status> The toggle status
#
toggleToggled
"<gray>Toggled <toggle>."
  • <toggle> The toggle name
#
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."
#
setOwnLoginMessage
"<gray>Your login message is now:<newline><gray>> <reset><message>"
  • <message> The login message
#
setOtherPlayersLoginMessage
"<gray><player>'s login message is now:<newline><gray>> <reset><message>"
  • <player> The player
  • <message> The login message
#
removedOwnLoginMessage
"<gray>Your login message has been removed."
#
removedOtherLoginMessage
"<gray>You removed <player>'s login message."
  • <player> The player
#
nameRequired
"<red>Include your username in your login message. Enter your username or \\<player>."
#
groupRequired
"<red>Include your group title in your login message. Enter the title or \\<group>."
#
groupNotConfigured
"<red>Your primary group does not have a title configured, so it cannot be used in a login message."
#
playersWithMaterial
"<gray>Players with <material> in their inventory: <players>"
  • <material> The material name
  • <players> The players who have the material in their inventory
#
playersMaterialCleared
"<gray><material> has been removed from the following players: <players>"
  • <material> The material name
  • <players> The players who have the material in their inventory
#
nobodyHasThatMaterial
"<gray>No one online has that in their inventory."
#
materialNotFound
"<red><material> is not a valid item/block name."
  • <material> The attempted material name
#
notANumber
"<red><input> is not a valid number!"
  • <input> The string that wasn't a valid integer
#
listHeader
"<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 players
#
listHeaderPlural
"<gray>There are currently <yellow><online_count><gray> players online out of <yellow><total_count><gray> players."
  • <online_count> Players currently online
  • <total_count> Max players
#
notesHeader
"Player notes for: <green><player>"
  • <player> Player who is having their notes fetched
#
notePrefix
"<gold><!italic><id> - Written by: <author> on <date>"
  • <id> Note ID
  • <author> Author of the note
  • <date> Timestamp
#
noteLine
"<newline><yellow># <content>"
  • <content> The content of the note
#
playerNoteAlert
"<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 player
#
playerNoteAlertPlural
"<gold><player> has <count> notes. <view_notes><underlined>Click here to view their notes."
  • <player> The player
  • <count> The number of notes logged for said player
#
smiteTitleHeader
"<red>You've been smitten."
#
smiteTitleMessage
"<yellow>Be sure to follow the rules!"
#
smiteBroadcast
"<red><player> has been a naughty, naughty boy.<newline><red> - Reason: <yellow><reason><newline><red> - Smitten by: <yellow><sender>"
  • <player> The player
  • <reason> The reason for the smite. Will default to noReasonProvided if no reason is specified.
  • <sender> The admin / staff member
#
smittenQuietly
"<gray>Smitten <player> quietly."
  • <player> The player
#
smitten
"<red>You've been smitten. Reason: <yellow><reason>"
  • <reason> The reason for being smitten
#
nukerKickMessage
"Please turn off your nuker!"
#
nukerTempbanReason
"You are temporarily banned for five minutes for using a Nuker."
#
antiSpamMessage
"<gray>Please do not spam."
#
banExpiredBroadcast
"Plex - Automatically unbanning <player>"
  • <player> The player
#
reappliedGamerules
"<aqua>All game rules have been re-applied!"
#
commandNotFound
"<red>That command could not be found!"
#
commandAliases
"<aqua>Aliases for <command> are: <aliases>"
  • <command> The command
  • <aliases> A list of aliases found
#
rollbackMessage
"<gray>Rolled back <count> activities"
  • <count> Number of activities found to rollback
#
rollbackError
"<red>Rollback failed: <error>"
  • <error> Rollback error message
#
rollbackNoResult
"<gray>No activities have been rolled back"
#
punishmentMenuTitle
"<aqua><bold>Punishments"
#
punishedPlayerMenuTitle
"<red><bold>Punishments - <player>"
  • <player> The player
#
punishmentPlayerNotFound
'<red>This player does not exist. Use /punishments \<player> instead.'
#
activeBansList
"<gold>Active Bans (<count>): <yellow><players>"
  • <count> The amount of active bans
  • <players> The active ban list
#
unbannedPlayers
"<gold>Unbanned <count> players."
  • <count> The amount of players unbanned
#
updateUpToDate
"<green>Plex is up to date on the <channel> channel."
#
updateAvailable
"<red>Plex <version> is available on the <channel> channel."
  • <version> The version
  • <channel> The channel
#
updateRunCommand
"<red>Run: /plex update"
#
updateDownloading
"<green>Downloading latest JAR file: <file>"
  • <file> The file name
#
updateDownloaded
"<green>New JAR file downloaded and verified successfully."
#
updateDirectoryFailed
"<red>Unable to create update directory: <directory>"
  • <directory> The directory path
#
updateDownloadFailed
"<red>Something went wrong while downloading <artifact>. Please check the log for more information."
  • <artifact> The artifact name
#
updateMetadataNotFound
"<red>No compatible update is available on the <channel> channel."
  • <channel> The channel
#
updateRequiresMinecraftVersion
"<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
  • <supported_versions> The supported Minecraft versions
  • <running_version> The running Minecraft version
#
updateRequiresNewerMinecraft
"<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
  • <oldest_supported_version> The oldest supported Minecraft version
  • <running_version> The running Minecraft version
  • <supported_versions> The supported Minecraft versions
#
updateUnsupportedNewerMinecraft
"<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>."
  • <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
"<red>There was an error checking update metadata: <error>"
  • <error> The error message
#
moduleUpdateDisabled
"<yellow>Skipping <module>; module updates are disabled."
#
moduleUpdateSummary
"<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."
  • <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
"<green>Module commands reloaded."
#
protectRegionCreated
"<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>Run this command in-game."
#
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>"
#

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.

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.

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

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.

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.