Messages & Placeholders
MonthlyCrates replaces its placeholders in crate and reward messages, then translates & color codes. Configure these messages in either of the following places:
# Native syntax
messages:
player:
- '&aPrivate message'
broadcast:
- '&bServer-wide message'
# AdvancedCrates-compatible syntax
messages_to_player:
- '&aPrivate message'
final_message_to_opener:
- '&aAnother private message'
broadcast_messages_to_players:
- '&bServer-wide message'
final_message:
- '&bAnother server-wide message'
Put messages at the crate root to send a single opening summary. Put them inside a reward entry to send them once per reward that was selected. If no crate or reward message is configured at all, the opener receives a simple private fallback message.
Basic placeholders
These forms are interchangeable in messages.
| Placeholder forms | Replaced with |
|---|---|
%player%, {player}, {player_name} |
Opener's current player name. |
%crate%, {crate} |
Loaded crate ID, normally the filename without .yml. |
%reward%, {reward} |
Reward display name. At crate level, this is a comma-separated list of every selected reward. At reward level, it is only that reward. |
%reward_id%, {reward_id} |
Reward ID. At crate level, this is a comma-separated list. |
Use reward display names in messages rather than assuming an ID is player-facing; an ID may be a technical value such as 150kCrystals.
Numbered AdvancedCrates-style reward placeholders
For a crate-level opening summary, use numbered placeholders to display normal-pool results in their roll order:
final_message:
- '&d&lMonthly Crate rewards:'
- '&d1) &f{ColoredReward:1}'
- '&d2) &f{ColoredReward:2}'
- '&d3) &f{ColoredReward:3}'
- '&dBest) &f{ColoredReward:best}'
| Placeholder | Replaced with |
|---|---|
{ColoredReward:1} through {ColoredReward:n} |
First through nth regular-pool reward. |
{Reward:1} through {Reward:n} |
Alias of ColoredReward; both preserve the configured item display color. |
{ColoredReward:best} or {Reward:best} |
First selected best-pool reward. |
The placeholder keyword and best are case-insensitive. An index that was not selected, or {...:best} when the crate has no best pool, becomes an empty string. The bundled example-lotus.yml uses 1 through 11 and best for its twelve core selections.
Guaranteed and linked prizes are delivered and included in {reward}, but they do not occupy a new numbered normal-pool or best-pool position. Use {reward} for a complete comma-separated audit line.
Compact announcement placeholders
For the one-line announcement style shown below, use a crate-level broadcast message:
final_message:
- '&5&lPvPLab &7» &b{player_name} &fjust won a &b{first_reward} &f{additional_rewards} &ffrom a &3&lMONTHLY CRATE&f!'
With nine selected rewards and a first reward named 8x Creeper Spawner, this becomes conceptually:
PvPLab » MrAsf just won a 8x Creeper Spawner and 8 other rewards from a MONTHLY CRATE!
| Brace form | Percent alias | Meaning |
|---|---|---|
{first_reward} |
%first_reward% |
First reward in the final selection. |
{reward_count} |
%reward_count% |
Total selected rewards, including best, guaranteed, and linked rewards. |
{other_reward_count} |
%other_reward_count% |
Total count minus one. |
{other_reward_word} |
%other_reward_word% |
reward when there is one other reward; otherwise rewards. |
{other_rewards} |
%other_rewards% |
For example, 8 other rewards; blank when there are no additional rewards. |
{additional_rewards} |
%additional_rewards% |
For example, and 8 other rewards; blank when there are no additional rewards. |
{additional_rewards} is usually the cleanest choice because a single-reward crate produces no dangling “and”. Place the space before it as in the example; when there is only one reward the result contains an extra harmless space before the following text. If exact single-reward grammar matters, use a separate crate message for a one-reward crate.
Command placeholders
Reward commands are expanded separately from messages and run as the console. They support:
| Placeholder forms | Replaced with |
|---|---|
%player%, {player}, {player_name} |
Opener's name. |
%uuid%, {uuid} |
Opener's UUID. |
%crate%, {crate} |
Loaded crate ID. |
Command replacement does not include numbered reward placeholders or compact summary placeholders. Do not rely on PlaceholderAPI expansion in command strings unless the command plugin performs its own expansion.
Message design guidance
- Keep
final_messageat the crate root when announcing multi-reward openings; it runs once with the whole selection. - Use prize-level messages only for reward-specific feedback.
- Add
&color codes directly; MonthlyCrates converts legacy color codes before sending chat. - Test a one-reward and multi-reward opening after changing a compact announcement. This catches blank best slots and grammar edge cases.