Skip to content

Challenges

The challenge system provides daily and weekly objectives that grant bonus XP and Season Tokens. Challenges are defined per season and randomly rotated for each player.

Each challenge in the dailyChallenges or weeklyChallenges arrays:

FieldTypeDefaultDescription
idstringUnique challenge ID (e.g., daily_mine_50)
namestringDisplay name
descriptionstringDescription text
typestringChallenge type (see below)
targetstring"any"Specific target or "any" for wildcard
countintCompletion count required
xpRewardintXP granted on completion
tokenRewardint0Tokens granted on completion
weightint10Selection weight (higher = more likely)
iconItemstringItem ID for UI display
descriptionKeystringOptional i18n key for localized description
premiumOnlybooleanfalseOnly available to premium pass holders
TypeDescriptionTarget Examples
break_blockBreak blocks"any", "Stone", "Ore_Iron"
place_blockPlace blocks"any", "Wood_Oak"
mob_killKill mobs"any", "Skeleton", "Trork"
player_killPvP kills"any"
harvestHarvest crops"any", "Wheat"
flower_pickPick flowers"any"
zone_discoverDiscover zones"any"
playtimeMinutes played"any" (count = minutes)
travelBlocks traveled"any" (count = blocks)
distance_traveledBlocks traveled (alias)"any" (count = blocks)
daily_loginLog in for the day"any" (count = 1)
login_streakMaintain a login streak"any" (count = streak days)
items_collectedCollect items"any", "@consumable"

:::note Target Matching When target is "any", any block/mob/zone counts. When a specific ID is provided, only that exact type counts toward progress. :::

FieldTypeDefaultDescription
dailyChallengeSlotsint3Number of daily challenges shown
weeklyChallengeSlotsint3Number of weekly challenges shown
  1. Weighted Random — Challenges with higher weight values are more likely to be selected
  2. Without Replacement — Each rotation picks unique challenges (no duplicates)
  3. Per-Player Seed — Each player sees a different rotation based on: playerUuid.hashCode() + dayOfEpoch + offset
  4. Deterministic — Same player sees the same challenges all day (or all week)
  • Daily Challenges: Reset at midnight in the configured timezone
  • Weekly Challenges: Reset every Monday at midnight

:::note Lazy Reset Challenges are reset when the player next logs in or opens the Season Pass UI — not at a fixed server time. This means a player who is offline for several days will get fresh challenges when they return. :::

Premium pass holders get additional challenge slots beyond the regular rotation.

FieldTypeDefaultDescription
premiumDailyChallengeSlotsint2Extra daily challenges for premium
premiumWeeklyChallengeSlotsint1Extra weekly challenges for premium
  • Premium challenges are drawn from challenges with "premiumOnly": true in the challenge pool
  • Non-premium players see a lock box instead of premium challenges, with the configured premiumHintText
  • Premium challenge progress is only tracked for premium players (backend guard)
  • Premium challenges use the same weighted random rotation as regular challenges
  • Premium and non-premium challenges are rotated independently (separate slot lists)

:::note Premium Tracking If a player loses premium status, their premium challenge progress is frozen but not deleted. If they regain premium, progress resumes. :::

The challenge rotation enforces type deduplication within each category:

  • Within a category (Daily or Weekly): Maximum 1 challenge per type
  • Cross-category: Daily and Weekly may share the same type

If the daily pool contains:

  • daily_mine_50 (type: break_block)
  • daily_mine_100 (type: break_block)
  • daily_kill_10 (type: mob_kill)

Only one break_block challenge can be selected for the daily rotation. The second break_block challenge is skipped in favor of a different type.

This ensures variety in the daily/weekly challenge lineup and prevents players from seeing repetitive objectives.

"dailyChallenges": [
{
"id": "daily_mine_50",
"name": "Miner",
"description": "Mine 50 blocks",
"type": "break_block",
"target": "any",
"count": 50,
"xpReward": 100,
"tokenReward": 5,
"weight": 15,
"iconItem": "Tool_Pickaxe_Iron"
},
{
"id": "daily_kill_10",
"name": "Monster Slayer",
"description": "Kill 10 mobs",
"type": "mob_kill",
"target": "any",
"count": 10,
"xpReward": 150,
"tokenReward": 8,
"weight": 15,
"iconItem": "Weapon_Longsword_Iron"
},
{
"id": "daily_travel_1000",
"name": "Wanderer",
"description": "Travel 1000 blocks",
"type": "travel",
"target": "any",
"count": 1000,
"xpReward": 75,
"tokenReward": 3,
"weight": 10,
"iconItem": "Deco_Compass"
}
]
"weeklyChallenges": [
{
"id": "weekly_mine_500",
"name": "Deep Miner",
"description": "Mine 500 blocks this week",
"type": "break_block",
"target": "any",
"count": 500,
"xpReward": 500,
"tokenReward": 25,
"weight": 15,
"iconItem": "Tool_Pickaxe_Cobalt"
},
{
"id": "weekly_kill_50",
"name": "Hunter",
"description": "Kill 50 mobs this week",
"type": "mob_kill",
"target": "any",
"count": 50,
"xpReward": 750,
"tokenReward": 40,
"weight": 15,
"iconItem": "Weapon_Longsword_Cobalt"
}
]

In the Season Pass Challenges tab:

  • 3 Daily Challenges shown at the top with progress bars
  • 3 Weekly Challenges shown below
  • Completed challenges display a green checkmark
  • Each challenge shows: name, progress (X/Y), XP reward, and token reward (e.g., “+100 XP | +5 T”)
  • Reset countdown displayed per section (“Resets in: Xh Ym”)