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.

Override configmods/mmoskilltree/command-rewards.json

Shipped defaults live in the jar; a pack's CommandRewards/*.json layers over them; this owner file layers over both.

defaults<pack<owner

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

KeyDescription
MINING, SWORDS, etc.Per-skill rewards at individual skill milestones
TOTALRewards based on combined level across all skills
GLOBAL_SKILLBonus rewards earned by every skill at milestone levels

Reward Fields

FieldTypeDefaultDescription
command*--The command to execute when claimed
localizationKey-optionalKey from language files for display name (preferred for multi-language servers)
displayName-optionalLiteral display name (fallback if no localization key set)
description-optionalLiteral description text (deprecated raw fallback - prefer descriptionKey)
descriptionKey-optionalLocalization key for the reward's description line
color-optionalHex color for UI display (e.g., #ffaa00)
runAs-optionalCONSOLE (default) or PLAYER
autoClaim-optionalDefault false. When true, this individual reward auto-executes instead of waiting for the player to open the Rewards tab and claim it
requiresCurrency-optionalA 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)
* required

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

PlaceholderReplaced 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.

TierColorExamples
CommonGrayIron, Copper
UncommonGreenCobalt, Thorium
RareBlueAdamantite, Mithril
EpicPurpleOnyxium
LegendaryOrangePrisma, 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.json shows all defaults

Disabling Rewards

Disable All Item Rewards

  • Admin UI (Recommended) - Open /mmoadmin and toggle "Item Rewards" in General Settings
  • Config File - Set "enabled": false in command-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.

Command Rewards admin editor showing reward table with category tabs and level selector
  • 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 reloaddefaults

Examples

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"
      }
    ]
  }
}