Command Rewards
Configure item rewards at skill milestones
Overview
Command rewards let players earn items at skill level milestones. Every reward is a command executed when the player claims it, making the system fully customizable. See the Item Rewards page for the player-facing experience.
Shipping milestone rewards in a content pack
Prefer a content pack: author one file per skill-milestone map under Server/MMOSkillTree/CommandRewards/ inside a pack folder, zip it, and drop the .zip into your server Mods/ folder. Building the zip.
mods/mmoskilltree/command-rewards.json stays the quick per-server tweak that always wins.
One file under that folder is a whole skill's milestone map (the shape shown below). Server/MMOSkillTree/CommandRewardTemplates/*.json holds the extends/params template DSL, so a single template can fan out to every skill at once with the {{ALL_SKILLS}} template.
mods/mmoskilltree/command-rewards.json is the quick-tweak alternative for a single server: an override-based file, stored separately from defaults and preserved across mod updates.
mods/mmoskilltree/command-rewards.jsonShipped defaults live in the jar; a pack's CommandRewards/*.json layers over them; this owner file layers over both.
File Structure
{
"schemaVersion": 2,
"enabled": true,
"overrides": {
"MINING": {
"10": [
{
"command": "/give {player} Ingredient_Bar_Iron --quantity=25",
"localizationKey": "reward.item.iron_bars",
"color": "#ffaa00"
}
]
},
"TOTAL": {
"100": [
{
"command": "/mmoboost give --args={player}|ALL|1.5|30",
"localizationKey": "reward.item.all_skills_boost_30m",
"color": "#4aff7f"
}
]
},
"GLOBAL_SKILL": {
"50": [
{
"command": "/give {player} Ingredient_Gem_Sapphire --quantity=3",
"localizationKey": "reward.item.sapphire"
}
]
}
}
}Reward Categories
| Key | Description |
|---|---|
MINING, SWORDS, etc. | Per-skill rewards at individual skill milestones |
TOTAL | Rewards based on combined level across all skills |
GLOBAL_SKILL | Bonus rewards earned by every skill at milestone levels |
Reward Fields
| Field | Type | Default | Description |
|---|---|---|---|
command* | - | - | The command to execute when claimed |
localizationKey | - | optional | Key from language files for display name (preferred for multi-language servers) |
displayName | - | optional | Literal display name (fallback if no localization key set) |
description | - | optional | Literal description text (deprecated raw fallback - prefer descriptionKey) |
descriptionKey | - | optional | Localization key for the reward's description line |
color | - | optional | Hex color for UI display (e.g., #ffaa00) |
runAs | - | optional | CONSOLE (default) or PLAYER |
autoClaim | - | optional | Default false. When true, this individual reward auto-executes instead of waiting for the player to open the Rewards tab and claim it |
requiresCurrency | - | optional | A currency id the player must hold (and spends) to claim this specific reward - gates one reward entry behind a currency cost, independent of the milestone itself. The id names a currency defined at Server/ZiggfreedCommon/Currencies/ (owner layer mods/ziggfreedcommon/currencies.json) |
Wherever a reward across the mod names its kind, that kind is an open vocabulary rather than a fixed list: the mod ships several, the shared library ships more, and an installed companion mod can contribute its own. Older spellings still read, so a file written against an earlier version keeps working. A kind nothing on the server answers to is not silently dropped - it is reported by the start-up audit and by /mmoconfig validate, because the mod that owns it may simply not be installed yet.
Every worked example on this page shows a raw command, but a milestone reward is not limited to that: it can be an item, a loot roll, stamped gear, an effect or a drop-list spill, the same reward kinds quests and achievements use. See Rewards and the Reward Kinds table on the Quests page for the full set rather than repeating it here.
Prefer localizationKey (and descriptionKey) over displayName/description: content display text is meant to be localized rather than hardcoded, and the raw fields exist only as an untranslated fallback. See Localization.
Command Placeholders
| Placeholder | Replaced With |
|---|---|
{player} | Player name |
{level} | The milestone level |
{skill} | Skill name (e.g., MINING) |
{totalLevel} | Player's total level |
Auto-Derived Display
If you don't set displayName, localizationKey, or color, the mod automatically derives them from the item ID in the command. Item IDs are converted to human-readable names and assigned tier-appropriate colors.
| Tier | Color | Examples |
|---|---|---|
| Common | Gray | Iron, Copper |
| Uncommon | Green | Cobalt, Thorium |
| Rare | Blue | Adamantite, Mithril |
| Epic | Purple | Onyxium |
| Legendary | Orange | Prisma, Voidstone |
You can always override the auto-derived values by setting displayName, localizationKey, or color explicitly per reward entry.
Override Semantics
- Missing levels use defaults automatically - you only need to define levels you want to change
- Set a level to an empty array
[]to disable rewards at that level - New defaults added in mod updates propagate without losing your customizations
- Reference file at
mods/mmoskilltree/_reference/defaults-command-rewards.jsonshows all defaults
Disabling Rewards
Disable All Item Rewards
- Admin UI (Recommended) - Open
/mmoadminand toggle "Item Rewards" in General Settings - Config File - Set
"enabled": falseincommand-rewards.json
When disabled, the Rewards tab is hidden from the /xp page.
Disable a Specific Level
Set the level to an empty array in overrides:
"overrides": {
"MINING": {
"10": []
}
}Disable an Individual Reward
Override the level with only the rewards you want to keep. Any default rewards not included in your override are effectively disabled. The Admin Rewards Editor provides an inline disable button for this.
Admin Rewards Editor
A visual editor for command rewards, accessible via the "Edit Rewards" button in /mmoadmin.

- Category tabs - Gathering, Combat, Crafting, Misc, Total Level, All Skills (Global)
- Skill selector for per-skill categories (hidden for Total Level and All Skills)
- Level selector showing all configured milestone levels
- Reward table with columns: Command, Display Name, Loc Key, Color, Status
- Add rewards with command, display name, localization key, and color
- Inline Disable - Disable individual default rewards (creates override without that reward)
- Remove - Delete individual override entries
- Disable Level - Set empty override (no rewards at that level)
- Reset to Default - Remove override and restore defaults
Commands
# Reset a player's claimed rewards
/mmoconfig resetrewards --args=PlayerName
# Reload all configs (including command rewards)
/mmoconfig reload
# Reset all configs to defaults
/mmoconfig reloaddefaultsExamples
Add a Custom Reward
Give 50 gold bars at Mining level 25:
"overrides": {
"MINING": {
"25": [
{
"command": "/give {player} Ingredient_Bar_Gold --quantity=50",
"localizationKey": "reward.item.gold_bars_50",
"color": "#ffaa00"
}
]
}
}Add a Boost Token Reward
Give a 2x Mining boost token at Mining level 75:
"overrides": {
"MINING": {
"75": [
{
"command": "/mmoboost give --args={player}|MINING|2.0|30",
"localizationKey": "reward.item.mining_boost_2x_30m",
"color": "#c84aff"
}
]
}
}Add a Total Level Reward
Give a global server boost at total level 500:
"overrides": {
"TOTAL": {
"500": [
{
"command": "/mmoboost give --args={player}|ALL|1.5|30|global",
"localizationKey": "reward.item.global_boost_1_5x_30m",
"color": "#ffaa4a"
}
]
}
}