home documents terms contact shop (coming soon!)

Rewards Configuration

Edit

Configure season-end rewards, rank rewards, and milestones.

Configure rewards in config/cobbleranked/rewards.yaml. CobbleRanked supports three types of rewards:

  • Season Rewards - End-of-season leaderboard rewards
  • Rank Rewards - One-time rewards when reaching a new tier
  • Milestones - Achievement-based rewards (wins, ELO thresholds)

Season Rewards

Rewards given to top players when a season ends, based on their final leaderboard position.

# rewards.yaml
seasonRewards:
  SINGLES:
    - id: "singles_champion"
      rankRange: "1"
      displayName: "&6&l★ Singles Champion ★"
      displayItem: "minecraft:nether_star"
      customModelData: 0
      lore:
        - "&7The undisputed #1 Singles player!"
        - ""
        - "&eRewards:"
        - "&f• &bVictini &7(Mythical Pokemon)"
        - "&f• &6$50,000 in-game currency"
      commands:
        - "pokegiveother {player} victini"
        - "eco give {player} 50000"
      mailSender: "&6Season Champion"
      mailTitle: "&6&l★ {format} Champion - Season {season} ★"
      mailMessage: "&eCongratulations! You are the #1 {format} player!"

    - id: "singles_elite"
      rankRange: "2-3"
      displayName: "&e&lSingles Elite"
      displayItem: "minecraft:diamond"
      lore:
        - "&7Top 3 Singles player!"
      commands:
        - "pokegiveother {player} victini"
        - "eco give {player} 25000"

    - id: "singles_top10"
      rankRange: "4-10"
      displayName: "&bSingles Expert"
      displayItem: "minecraft:gold_ingot"
      commands:
        - "eco give {player} 10000"

Reward Fields

FieldRequiredDescription
idYesUnique identifier
rankRangeYesRank(s) for this reward: "1", "2-3", "11-25"
displayNameYesName shown in GUI (supports color codes)
displayItemYesItem to display in reward GUI
customModelDataNoCustom model data for resource packs
loreNoDescription lines in GUI
commandsYesCommands to execute
mailSenderNoSender name in mail
mailTitleNoMail subject line
mailMessageNoMail body text

Placeholders

PlaceholderDescription
{player}Player username
{uuid}Player UUID
{rank}Final ranking position
{tier}Player’s rank tier
{season}Season name
{format}Battle format (SINGLES, DOUBLES, etc.)

Rank Rewards

One-time rewards when a player reaches a new rank tier for the first time.

# rewards.yaml
rankRewards:
  POKEBALL:
    tier: "POKEBALL"
    commands: []  # No reward for starting tier
    mailSender: "Rank Achievement"
    mailTitle: "Reached {tier} Rank!"
    mailMessage: "Congratulations on reaching {tier} rank in Season {season}!"

  GREATBALL:
    tier: "GREATBALL"
    commands:
      - "give {player} cobblemon:poke_ball 10"

  ULTRABALL:
    tier: "ULTRABALL"
    commands:
      - "give {player} cobblemon:great_ball 10"

  MASTERBALL:
    tier: "MASTERBALL"
    commands:
      - "give {player} cobblemon:ultra_ball 10"

  BEASTBALL:
    tier: "BEASTBALL"
    commands:
      - "give {player} cobblemon:master_ball 1"

  CHERISH:
    tier: "CHERISH"
    commands:
      - "give {player} cobblemon:master_ball 3"

Reward Eligibility

Control whether rank rewards use highest Elo achieved or current Elo for eligibility:

# rewards.yaml
rankRewardsUseHighestElo: true
SettingDefaultDescription
rankRewardsUseHighestElotrueUse true to base eligibility on peak Elo, false for current Elo

How it works:

  • When true (default): Players keep rewards based on their highest Elo ever achieved

    • Player reaches 1500 Elo → Gets ULTRABALL reward → Keeps ULTRABALL reward even if Elo drops to 1400
    • More lenient for players
  • When false: Players only qualify for rewards based on their current Elo

    • Player reaches 1500 Elo → Gets ULTRABALL reward → Elo drops to 1400 → Can no longer claim higher tier rewards
    • More competitive; rewards must be “re-earned” after rating loss

📝 This affects reward eligibility only. Players keep any rewards they’ve already claimed.

Milestones

Achievement rewards based on wins, ELO reached, or win streaks. Tracked per-format.

# rewards.yaml
milestones:
  SINGLES:
    # Win count milestones
    - id: "singles_5_wins"
      type: "WINS"
      requirement: 5
      displayName: "&7First Steps"
      displayItem: "minecraft:wooden_sword"
      lore:
        - "&7Win 5 ranked singles matches"
        - ""
        - "&eReward: &61 Rare Candy"
      commands:
        - "give {player} cobblemon:rare_candy 1"

    - id: "singles_50_wins"
      type: "WINS"
      requirement: 50
      displayName: "&9Singles Veteran"
      displayItem: "minecraft:golden_sword"
      commands:
        - "give {player} cobblemon:rare_candy 5"
        - "eco give {player} 2500"

    # ELO milestones
    - id: "singles_1500_elo"
      type: "ELO"
      requirement: 1500
      displayName: "&bPlatinum Tier"
      displayItem: "minecraft:diamond"
      commands:
        - "pokegiveother {player} random"
        - "eco give {player} 3000"

    - id: "singles_2000_elo"
      type: "ELO"
      requirement: 2000
      displayName: "&6&l★ Grandmaster ★"
      displayItem: "minecraft:nether_star"
      commands:
        - "pokegiveother {player} celebi"
        - "eco give {player} 25000"

Milestone Types

TypeDescription
WINSTotal wins in this format
MATCHESTotal matches played
ELOReach a specific ELO rating
WIN_STREAKAchieve a win streak

Reward Delivery

Rewards are delivered via MailLib. Players claim them with /mailbox. Offline players receive rewards on next login.

Per-Format Rewards

Each format (SINGLES, DOUBLES, TRIPLES) has separate rankings and reward tiers. Configure under seasonRewards: using the format name as key.

See Also