Skip to content

Progression rewards

McProgression can deliver one-time rewards when a player advances through a Global Rank tier or a skill rank tier (the subtiers shown for each skill). Reward lists are empty by default, so enabling this feature adds no reward side effects until an operator configures them.

Configure a tier

Global Rank rewards go in config.yml under global-rank.tiers.<tier-id>.rewards. Skill subtier rewards go in skills.yml under the matching rank-tiers entry's rewards list. The same skill rank definitions are included in each starter preset.

Each reward needs a stable id, a type, and a value. Supported types are:

  • command: run a server console command. Do not include the leading slash.
  • message: send a message to the player; & color codes are supported.
  • item: give a material item. Set amount to the number of items; overflow is dropped at the player's location.

Available placeholders are {player}, {uuid}, and {tier} for both kinds of tier. Skill rewards also support {skill} and {level}; Global Rank rewards support {score}.

Example Global Rank tier:

global-rank:
  tiers:
    apprentice:
      name: Apprentice
      minimum-score: 35
      rewards:
        - id: welcome-message
          type: message
          value: "&aYou reached {tier}!"
        - id: starter-kit
          type: command
          value: "give {player} iron_pickaxe 1"

Example skill subtier:

defaults:
  rank-tiers:
    - id: expert
      name: Expert
      minimum-level: 50
      rewards:
        - id: expert-token
          type: item
          value: emerald
          amount: 3

If a player gains enough XP to pass several tiers at once, each crossed tier's configured rewards are considered. Tier rewards are delivered on a rank transition; existing progress is not backfilled on startup or configuration reload. Claims are stored per player, tier ID, and reward ID, so reconnecting or restarting does not normally deliver them twice. Keep IDs stable after rewards have been issued; changing a tier or reward ID creates a new claim identity.

Claims are saved before the configured effect is delivered. This gives at-most-once delivery across normal restarts, but a server crash or a failing console command between the claim save and effect can leave a reward undelivered. Prefer simple, idempotent commands for valuable rewards and check command behavior on a test server before enabling them for players.