Skip to main 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.

Challenge Definition

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

Challenge Types

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— (count = minutes)
travelBlocks traveled— (count = blocks)
Target Matching

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

Rotation System

Slot Configuration

FieldTypeDefaultDescription
dailyChallengeSlotsint3Number of daily challenges shown
weeklyChallengeSlotsint3Number of weekly challenges shown

Selection Algorithm

  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)

Reset Schedule

  • Daily Challenges: Reset at midnight in the configured timezone
  • Weekly Challenges: Reset every Monday at midnight
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 Challenges

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

Configuration

FieldTypeDefaultDescription
premiumDailyChallengeSlotsint2Extra daily challenges for premium
premiumWeeklyChallengeSlotsint1Extra weekly challenges for premium

Behavior

  • Premium challenges are drawn from challenges with premiumOnly: true
  • 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 Tracking

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

Type Deduplication

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

Example

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.

Example Challenges

Daily Challenges

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

Weekly Challenges

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

UI Display

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")