plugins/AstralEssentials/messages.yml holds every player-facing string the plugin sends. It is loaded into the EssentialsMessages enum by AstralEssentials#loadConfiguration via AstralPlugin#loadEnum. Each enum constant maps to a kebab-case YAML key derived from its name (ITEM_REPAIRED → item-repaired); a constant with no matching key logs a "Missing configuration key" warning at startup and falls back to its raw toString() when sent.
Values are MiniMessage and resolve two things at send time:
AstralCore's global named tags — <success>, <warning>, <error> (and <info>), defined once as variables in AstralCore's own config.yml and resolved network-wide via CoreRegistry's shared TagResolver.
%placeholder% substitutions — built from an AstralCore PlaceholderContainer the command registers before sending the message (see the Placeholders column below, and the Placeholders reference table at the bottom of this page).
For full command syntax and permissions, see Commands; for cooldowns.yml, see Configuration.
Default file
# Gamemode
invalid-gamemode: "<error>Gamemode non existant."
gamemode-changed: "<success>Vous avez modifié votre gamemode en <#26d971>%mode%<#80ed99>."
gamemode-changed-other: "<success>Le gamemode de <#26d971>%target_name% <#80ed99>a été modifié en <#26d971>%mode%<#80ed99>."
survival-mode: "Survival"
creative-mode: "Creative"
adventure-mode: "Adventure"
spectator-mode: "Spectator"
# Repair
not-repairable: "<warning>Vous ne pouvez pas réparer cet objet."
item-repaired: "<success>Votre <#26d971>%item_name% <#80ed99>a été réparé."
all-items-repaired: "<success>Vous avez réparés x%amount% items."
# Fly
flying-speed-set: "<success>Votre vitesse de vole a été modifié à <#26d971>%speed%<#80ed99>."
walking-speed-set: "<success>Votre vitesse de marche a été modifié à <#26d971>%speed%<#80ed99>."
# Time
player-time-set: "<success>Votre temps de jeu a été mis à <#26d971>%time%<#80ed99>."
player-time-reset: "<success>Votre temps a été réinitialisé."
# Weather
invalid-weather-type: "<error>Cette météo n'existe pas."
weather-changed: "<success>Votre météo a été modifié en <#26d971>%weather%<#80ed99>."
weather-reset: "<success>Votre météo a été réinitialisée."
clear-weather: "Soleil"
storm-weather: "Pluie"
# Smelt
no-smeltable-items: "<warning>Il n'y a aucune ressource à cuire."
items-smelted: "<success>Vous avez cuit x%amount% items."
# Condense
no-condensable-items: "<warning>Il n'y a aucune ressource à condenser dans votre inventaire"
items-condensed: "<success>Vous avez condensé x%amount% items."
# Top
already-on-highest-point: "<warning>Vous êtes déjà au point le plus haut"
teleported-to-highest-point: "<success>Vous avez été téléporté au point le plus haut de votre position."
# Bottle experience
not-enough-experience: "<warning>Vous n'avez pas assez d'expérience."
bottles-filled: "<success>Vous avez créé <#26d971>%amount% <#80ed99>de potion d'expérience avec <#26d971>%exp% <#80ed99>points d'expériences."
invalid-experience-type: "<error>Mauvais type d'expérience."
invalid-bottle-amount: "<error>Mauvaise quantité d'expérience."
# Other commands
feed-success: "<success>Vous avez été nourri."
feed-success-other: "<success>Vous avez nourri <#26d971>%target_name%<#a2d2ff>."
hat-success: "<success>Vous avez équipé <#26d971>%item_name% <#80ed99>en tant que chapeau."
sudo-success: "<success>Vous avez fait dire <#26d971>%command% <#80ed99>à <#26d971>%target_name%<#a2d2ff>."
healed: "<success>Vous avez été soigné."
healed-other: "<success><#26d971>%target_name% <#80ed99>a été soigné."
# /fire
not-in-fire: "<warning>Vous n'êtes pas en feu."
extinguished-fire: "<success>Vous avez été éteints."
# Worlds
spawnwers-disabled-in-world: "<warning>Les spawners sont désactivés dans ce monde."
command-disabled-in-world: "<warning>Cette commande est désactivée dans ce monde."
# Miscellaneous
player-only-command: "<warning>Cette commande est réservé aux joueurs"
main-hand-empty: "<warning>Votre main est vide"
spawners-limit-reached: "<warning>Vous avez atteint la limite maximale de spawners sur ce chunk"
inventory-full: "<warning>Votre inventaire est plein!"
command-on-cooldown: "<warning>Cette commande est en chargement ! Veuillez attendre <#26d971>%time%<#ffd60a>."
# Spawn protection
spawn-protection: "<warning>Tu ne peux pas faire ça ici."
# Strip
nothing-to-strip: "<warning>Tu n'as aucun item à écorcer."
items-stripped: "<success>Tu as écorcé <#26d971>%amount% <#80ed99>items."
# Sit
cannot-sit-on-air: "<warning>Tu ne peux pas t'asseoir dans les airs."
cannot-sit-on-block: "<warning>Tu ne peux pas t'asseoir sur ce bloc."
cannot-sit-here: "<warning>Tu ne peux pas t'asseoir ici."
sit-success: "<success>Tu es assis."
# Concrete
not-holding-concrete-powder: "<warning>Tu ne tiens pas de poudre de béton."
concrete-created: "<success>Tu as transformé <#26d971>%amount% <#80ed99>poudre de béton en béton."
# Candle
not-looking-at-candle: "<warning>Tu ne regardes pas une bougie."
candle-extinguished: "<success>Tu as éteint la bougie."
candle-lit: "<success>Tu as allumé la bougie."
Gamemode
Key
Placeholders
When
invalid-gamemode
—
/gms, /gmc, /gma, /gmsp, /gm0–/gm3 when the alias used doesn't resolve to a GameMode (CompactGamemodeCommand). /gamemode <mode> instead relies on GamemodeContextResolver, which throws ACF's own invalid-argument error for a bad <mode> token — that path never reaches this key.
gamemode-changed
%mode%
Sender changed their own gamemode via /gamemode or a /gm* alias. %mode% is the matching label below for the resulting mode.
gamemode-changed-other
%target_name%, %mode%
Sender changed another player's gamemode (essentials.gamemode.others.<mode>).
Not sent directly — substituted as the %mode% value based on the resulting GameMode.
Item actions
Key
Placeholders
When
not-repairable
—
/repair or /repair hand when the held item has no Damageable meta, or is an AstralItems custom item (ItemsAPI.isCustomItem).
item-repaired
%item_name%
/repair or /repair hand — resets the held item's damage.
all-items-repaired
%amount%
/repair all — %amount% is the number of storage-slot items whose damage was reset; sent as 0 (with no cooldown applied) when nothing in the inventory was repairable.
no-smeltable-items
—
/furnace//smelt (held item) or /furnace all when no registered FurnaceRecipe matches.
items-smelted
%amount%
/furnace or /furnace all — the total output item count (input amount × recipe result amount, summed across items for all).
no-condensable-items
—
/condense (held item) or /condense all when no condensable-items entry matches.
items-condensed
%amount%
/condense or /condense all. Note: the single-item form hardcodes %amount% to 1 regardless of how many condensed blocks were actually produced; only /condense all sends the real summed count.
nothing-to-strip
—
/strip (held item) or /strip all when nothing in scope is a strippable log (StripWoodCommand.LOGS).
items-stripped
%amount%
/strip or /strip all. Note: the single-item form hardcodes %amount% to 1; only /strip all sends the real summed input count.
not-holding-concrete-powder
—
/concrete when the held item isn't tagged Tag.CONCRETE_POWDER.
concrete-created
%amount%
/concrete or /concrete all — the converted stack size (or summed total for all). /concrete all sends this even when 0 stacks were converted; unlike condense/furnace, it has no "nothing to convert" guard.
Player state
Key
Placeholders
When
flying-speed-set
%speed%
/speed fly [0-10], or /speed [0-10] while flying — %speed% is the raw 0–10 input, not the resulting 0.0–1.0 Bukkit fly speed actually applied.
walking-speed-set
%speed%
/speed walk [0-10], or /speed [0-10] while not flying — same raw 0–10 input.
player-time-set
%time%
/playertime <time> (/ptime) — %time% is the raw tick argument; the value is also persisted network-wide via AstralSync's PlayerTimeData.
/pweather storm or /pweather sun \|clear — %weather% is the storm-weather/clear-weather label component itself.
weather-reset
—
/pweather reset.
clear-weather/storm-weather
—
Not sent directly — substituted as the %weather% value (sun and clear both resolve to clear-weather).
feed-success
—
/feed (self), and also sent to the target player when a sender runs /feed <player>.
feed-success-other
%target_name%
/feed <player> (essentials.feed.others) — sent to the sender only.
hat-success
%item_name%
/hat — equips the held item as a helmet; the previous helmet is returned to the inventory or dropped on the ground if full. Fails with main-hand-empty first if the main hand is empty.
sudo-success
%command%, %target_name%
/sudo <player> <command> — sent to the sender after command is force-run on the target via Player#performCommand.
healed
—
/heal (self), and also sent to the target player when a sender runs /heal <player>.
healed-other
%target_name%
/heal <player> (essentials.heal.others) — sent to the sender only.
not-in-fire
—
/fire when the player's fire ticks are <= 0.
extinguished-fire
—
/fire — sets fire ticks to 0.
already-on-highest-point
—
/top when the player is already at/above the highest safe point, or no safe location can be found (Nether search capped below the roof).
teleported-to-highest-point
—
/top — teleports to the highest safe block in the player's column.
Experience bottles
Key
Placeholders
When
not-enough-experience
—
/xpbottle <amount> [level\|exp] [bottles] or /xpbottle all [amount] — the requested XP exceeds the player's level/raw XP, the computed per-bottle total is <= 0, or (for all) the player has 0 total experience.
bottles-filled
%amount%, %exp%
/xpbottle … or /xpbottle all … — %amount% is the bottle count produced, %exp% is the XP value stored in each bottle.
invalid-experience-type
—
/xpbottle <amount> <type> … when <type> isn't level or exp.
invalid-bottle-amount
—
/xpbottle <amount> … when the requested bottle count is <= 0.
inventory-full (see Miscellaneous) also fires from both /xpbottle forms when the player has no free inventory slot (firstEmpty() == -1) for a bottle.
World & protection
Key
Placeholders
When
spawnwers-disabled-in-world
—
Placing a SPAWNER block is cancelled because the active server group is in disabled-spawners-groups. Ships with this typo in messages.yml (see note above).
command-disabled-in-world
—
A command is cancelled by PlayerCommandPreprocessEvent because it matches a groups-blocked-commands entry for the player's active server group.
spawners-limit-reached
—
Placing a SPAWNER block is cancelled because the target chunk's spawner count already exceeds spawners-limits.limit.
spawn-protection
—
Breaking or placing a block within spawn-protection.radius of world spawn, on a protected world, without spawnprotection.bypass. Explosion cancellation in the same radius is silent — no player to message.
Sit
Key
Placeholders
When
cannot-sit-on-air
—
/sit when no block (or an empty block) is targeted within 5 blocks.
cannot-sit-on-block
—
/sit when the targeted block isn't tagged SLABS or STAIRS.
cannot-sit-here
—
/sit when a synthetic PlayerInteractEvent fired against the block is cancelled by another plugin.
sit-success
—
/sit — spawns an invisible, non-colliding marker ArmorStand on the block and mounts the player on it, replacing any existing sit entity for that player.
Candle
Key
Placeholders
When
not-looking-at-candle
—
/candle when the block targeted within 5 blocks isn't candle block data.
candle-lit
—
/candle — lit an unlit candle (subject to a BlockIgniteEvent check).
candle-extinguished
—
/candle — extinguished a lit candle (subject to a PlayerInteractEvent check).
Miscellaneous
Key
Placeholders
When
player-only-command
—
Declared on the enum and shipped in messages.yml, but not sent by any command or listener in the current source — see Commands § Player-only vs console. A console/command-block attempt at a player-only command falls back to ACF's own built-in handling instead.
main-hand-empty
—
Shared guard for /hat, /repair//repair hand, /furnace, and /condense when the main hand is empty.
inventory-full
—
Shared guard for /condense (no room for the condensed stack) and both /xpbottle forms (no free inventory slot for a bottle).
command-on-cooldown
%time%
Sent by AstralEssentials#isInCooldown/#checkCooldown, the shared cooldown helpers behind /feed, /heal, /repair [all], /furnace [all], /condense [all], /strip [all], and /concrete [all]. %time% is the remaining cooldown formatted by DurationParser.toHumanReadable; bypassed entirely by cooldown.bypass.
Placeholders
Placeholder
Source
Appears in
%mode%
The matching label constant (survival-mode/creative-mode/adventure-mode/spectator-mode), registered as-is (registerDirect("mode", mode.value())) and resolved to that label's own rendered text.
gamemode-changed, gamemode-changed-other.
%target_name%
The target Player wrapped as a PlayerPlaceholder and registered under target (registerDirect("target", new PlayerPlaceholder(target))); _name chains into the name sub-key (Player#getName).
The item in hand, wrapped as an ItemStackPlaceholder under its default item namespace (registerPlaceholder(new ItemStackPlaceholder(item))); _name chains into the name sub-key (display name → item name → translatable-key fallback).
item-repaired, hat-success.
%speed%
The command's raw 0–10 integer argument (registerDirect("speed", speed)) — not the derived 0.0–1.0 fly/walk speed Bukkit actually applies.
flying-speed-set, walking-speed-set.
%time%
Two distinct sources by key: on player-time-set it's the raw tick int argument (registerDirect("time", time)); on command-on-cooldown it's DurationParser.toHumanReadable(remainingMillis), a formatted duration string.
player-time-set, command-on-cooldown.
%weather%
The clear-weather/storm-weather label component itself, registered directly (registerDirect("weather", EssentialsMessages.CLEAR_WEATHER.component()) or STORM_WEATHER). sun and clear both resolve to clear-weather.
weather-changed.
%command%
The raw command string forced onto the target via Player#performCommand (registerDirect("command", command)), unparsed.
sudo-success.
%amount%
A raw, unformatted int; meaning depends on the key — repaired-item count, smelted/condensed/stripped/concrete output count, or XP bottle count. Two keys (items-condensed, items-stripped) hardcode this to 1 on their single-item command form — only the all subcommand sends the real summed count.