Products Docs Help Store Discord

Missions Configuration

Configure daily and weekly missions to keep players engaged.

Keep players coming back with daily and weekly challenges.

📝 Missions are enabled by default. They count casual matches by default, but can count ranked matches or both.

File: config/cobbleranked/missions.yaml


Basic Configuration

# missions.yaml
enabled: true
matchType: "CASUAL"
dailyResetTime: "00:00"
weeklyResetDay: "MONDAY"
weeklyResetTime: "00:00"
autoClaim: false
announceCompletion: false

Note: Timezone is now configured globally in config.yaml:

# config.yaml
timezone: "Asia/Tokyo"  # IANA timezone format
SettingDefaultDescription
enabledtrueEnable the mission system
matchTypeCASUALWhich matches count by default: CASUAL, RANKED, or ANY
dailyResetTime"00:00"Time to reset daily missions (HH:mm)
weeklyResetDay"MONDAY"Day to reset weekly missions
weeklyResetTime"00:00"Time to reset weekly missions (HH:mm)
autoClaimfalseAutomatically claim rewards on completion
announceCompletionfalseSend chat message when mission completes

Choose Which Matches Count

Use matchType to decide whether missions count casual play, ranked play, or both.

ValueMatches that count
CASUALCasual matches only (default)
RANKEDRanked matches only
ANYBoth casual and ranked matches

Set it once near the top of missions.yaml to change the default for every mission:

matchType: "RANKED"

Or override it for one mission:

daily:
  1:
    title: "Ranked Practice"
    trigger: PLAY
    matchType: "RANKED"
    required: 3
    rewards:
      - "give {player} minecraft:diamond 1"

A match of the wrong type is ignored completely. For example, losing a ranked match cannot break a casual STREAK mission.

Players can open the mission menu with /missions. /casual missions remains available for compatibility.


Trigger Types

Each trigger decides when a selected match counts toward the mission and which extra fields it needs.

TriggerCounts whenRequired fieldsWin required?
WINYou win the matchrequired✅ Yes
PLAYYou finish a matchrequired, requireWin (optional)Only if requireWin: true
STREAKYour win streak extendsrequired✅ Yes (a loss resets the streak)
USE_TYPEYou win using a Pokémon whose type is in typestypes, required✅ Yes
FORMATYou win in the given formatformat, required✅ Yes
DEFEATYou KO opposing Pokémon (progress += KOs this match)minDefeated, requiredNo (KOs count even in a loss)
GENERATIONYou win using a Pokémon from one of generationsgenerations, required✅ Yes
EVOLUTIONYou win using a Pokémon at the given evolution stageevolution, required✅ Yes

📝 The Pokémon considered are the ones the player actually brought into battle, not their full party.

Field Reference

FieldUsed byDescription
requiredallProgress target (e.g. 3 = complete after 3 qualifying matches)
chanceallWeight for per-player random selection at reset (0 = never picked)
matchTypeallOptional per-mission override: CASUAL, RANKED, or ANY
requireWinPLAY onlytrue = only wins count; false (default) = any finished match counts. Ignored by other triggers (they always require a win, except DEFEAT)
typesUSE_TYPEList of types, e.g. [FIRE, WATER]. Counts if any Pokémon you used has one of these types
formatFORMATFormat name, such as "SINGLES", "DOUBLES", or "RANDOM_SINGLES"
minDefeatedDEFEATPer-match KO threshold. Each match where you KO ≥ this many Pokémon adds that KO count to progress
generationsGENERATIONList of gen numbers, e.g. [1, 2]. Derived from National Pokédex number
evolutionEVOLUTIONEvolution stage: FIRST, MIDDLE, FINAL, SINGLE, or ANY

Evolution Stages (EVOLUTION)

ValueMeaningExample
FIRSTBase form — has an evolution, no pre-evolutionCharmander
MIDDLEMiddle form — has both a pre-evolution and an evolutionCharmeleon
FINALFinal form — has a pre-evolution, no further evolutionCharizard
SINGLEDoes not evolve — no pre-evolution or evolutionTauros
ANYAny Pokémon (default when evolution is omitted)

Generation Ranges (GENERATION)

Generation is derived from the National Pokédex number:

GenerationPokédex range
1#1-151
2#152-251
3#252-386
4#387-493
5#494-649
6#650-721
7#722-809
8#810-905
9#906-1025
Legacy Format

Old format still works; no migration needed. New daily/weekly format takes priority if both exist.

# Old format (still works)
dailyMissions:
  - type: WIN_COUNT
    required: 3
    rewards: ["give {player} diamond 1"]

# New format (recommended)
daily:
  1:
    title: "Win 3 Matches"
    trigger: WIN
    required: 3
    rewards:
      - "give {player} diamond 1"

Defining Missions

Missions use numbered keys under daily: or weekly::

Daily Missions

daily:
  1:
    title: "Daily Battles"
    trigger: PLAY
    required: 3
    rewards:
      - "cobblemon give {player} exp_candy_m 3"

  2:
    title: "Daily Wins"
    trigger: WIN
    required: 2
    rewards:
      - "cobblemon give {player} rare_candy 1"

Weekly Missions

weekly:
  1:
    title: "Weekly Champion"
    trigger: WIN
    required: 10
    rewards:
      - "cobblemon give {player} exp_candy_l 5"
      - "cobblemon give {player} rare_candy 3"

Mission Parameters

Some triggers accept additional fields:

Type Usage

3:
  title: "Fire Master"
  trigger: USE_TYPE
  required: 3
  types: ["FIRE"]
  rewards:
    - "cobblemon give {player} exp_candy_l 2"

USE_TYPE always requires a win — a match counts only if you win using a Pokémon whose type is in types. The requireWin field only affects the PLAY trigger.

Generation Usage

4:
  title: "Kanto Pride"
  trigger: GENERATION
  required: 5
  generations: [1]
  rewards:
    - "cobblemon give {player} rare_candy 2"

See Generation Ranges above for the Pokédex range of each generation.

Format Participation

5:
  title: "Doubles Specialist"
  trigger: FORMAT
  required: 5
  format: "doubles"
  rewards:
    - "cobblemon give {player} exp_candy_m 3"

Pokemon Defeated

6:
  title: "Knockout Artist"
  trigger: DEFEAT
  required: 20
  rewards:
    - "cobblemon give {player} rare_candy 2"

Reward Commands

Rewards are server commands. Use {player} placeholder for the player name.

rewards:
  - "cobblemon give {player} rare_candy 5"
  - "eco give {player} 1000"

See Also