Task Configuration Examples & Best Practices
Task Configuration Examples & Best Practices
Section titled “Task Configuration Examples & Best Practices”This guide provides verified working examples from actual Journey task configurations, showing real-world patterns and best practices.
Table of Contents
Section titled “Table of Contents”Verified Filter Patterns
Section titled “Verified Filter Patterns”These filter patterns are confirmed working from production task configurations.
Zone Event Filters
Section titled “Zone Event Filters”// Check zone by UUID"filter": "q.zone.uuid == '123e4567-e89b-12d3-a456-426614174000'"
// UUID comparison (string)"filter": "q.zone.uuid == 'c106b35a-1058-4aca-809c-b9588c14ba11'"Pokémon Event Filters
Section titled “Pokémon Event Filters”// Check if Pokémon is the player's starter"filter": "q.pokemon.is_starter"
// Check Pokémon species"filter": "q.pokemon.species.identifier == 'cobblemon:magikarp'"
// Check Pokémon level"filter": "q.pokemon.is_starter && q.pokemon.level >= 16.0"Battle Event Filters
Section titled “Battle Event Filters”// Check if battle is wild"filter": "q.battle.is_wild"
// Check wild battle with starter in team"filter": "q.battle.is_wild && q.battle.team.contains_starter"Entity Interaction Filters
Section titled “Entity Interaction Filters”// Check entity UUID"filter": "q.entity.uuid == 'bb030064-870d-4513-b49b-bba5c92b19c1'"
// Entity UUID with additional condition"filter": "q.entity.uuid == '2de91ae9-e18e-4419-bffe-43d1b6cdbb2e'"Item Event Filters
Section titled “Item Event Filters”// Check item by ID"filter": "q.item.id == 'cobblemon:pokedex_green'"Player Function Filters
Section titled “Player Function Filters”// Check if player is in zone (using player function in filter)"filter": "q.player.is_in_zone('c106b35a-1058-4aca-809c-b9588c14ba11')"
// Check if player completed a task (combined with entity interaction)"filter": "q.entity.uuid == '2de91ae9-e18e-4419-bffe-43d1b6cdbb2e' && q.player.has_completed_task('journey:evolve_starter')"Simple Filters
Section titled “Simple Filters”// Always true (no filtering)"filter": "1.0""filter": "1.0 == 1.0"Complete Task Examples
Section titled “Complete Task Examples”Example 1: Zone Entry Task
Section titled “Example 1: Zone Entry Task”Purpose: Track when players enter a specific zone
{ "name": "<dark_green>Enter the Forest", "description": ["<gray>Step into the forest zone."], "sequential": "sequential", "start_requirement": "", "icon": { "item_id": "minecraft:oak_sapling" }, "repeat_type": "NONE", "repeat_interval": 0, "rewards": [], "tasks": [ { "id": "test:enter_forest_zone_subtask", "name": "<dark_green>Enter the Forest Zone", "description": "<gray>Enter the specified forest zone.", "event": "ENTER_ZONE", "event_data": { "uuid": "123e4567-e89b-12d3-a456-426614174000" }, "filter": "q.zone.uuid == '123e4567-e89b-12d3-a456-426614174000'", "target": 1, "location": { "x": 100, "y": 64, "z": 100 }, "rewards": [] } ]}Key Points:
sequential: "sequential"means subtasks must be completed in orderevent_datacan optionally specify the zone UUID for optimizationlocationfield provides a waypoint marker for the player- Filter uses
q.zone.uuidto verify the correct zone
Example 2: Pokémon Evolution Quest
Section titled “Example 2: Pokémon Evolution Quest”Purpose: Multi-stage quest tracking Pokémon capture, leveling, and evolution
{ "name": "<gold>Unleash Your Starter's Potential", "description": [ "<gray>Your starter Pokémon holds untapped power.", "<gray>Train diligently to unlock its evolution!" ], "sequential": "sequential", "icon": { "item_id": "cobblemon:great_ball" }, "repeat_type": "NONE", "repeat_interval": 0, "rewards": [ { "type": "currency", "data": { "currency": "impactor:pokedollars", "amount": 300 } }, { "type": "command", "data": { "command": "give {player} cobblemon:great_ball 5" } } ], "tasks": [ { "id": "journey:catch_pokemon_in_zone", "name": "<blue>Catch Pokémon", "description": "<gray>Catch 2 Pokémon in the starting zone.", "event": "POKEMON_CAUGHT", "event_data": {}, "filter": "q.player.is_in_zone('c106b35a-1058-4aca-809c-b9588c14ba11')", "target": 2, "rewards": [ { "type": "currency", "data": { "currency": "impactor:pokedollars", "amount": 50 } } ] }, { "id": "journey:reach_level", "name": "<blue>Level Up Your Starter", "description": "<gray>Raise your starter to level 16.", "event": "POKEMON_LEVEL_UP", "event_data": {}, "filter": "q.pokemon.is_starter && q.pokemon.level >= 16.0", "target": 1, "rewards": [ { "type": "currency", "data": { "currency": "impactor:pokedollars", "amount": 50 } } ] }, { "id": "journey:evolve_starter", "name": "<blue>Unleash Evolution", "description": "<gray>Evolve your starter Pokémon!", "event": "POKEMON_EVOLVE", "event_data": {}, "filter": "q.pokemon.is_starter", "target": 1, "rewards": [ { "type": "currency", "data": { "currency": "impactor:pokedollars", "amount": 200 } } ] }, { "id": "journey:pickup_pokedex", "name": "<blue>Receive Pokédex", "description": "<gray>Pick up your Pokédex!", "event": "ITEM_PICKUP", "event_data": {}, "filter": "q.item.id == 'cobblemon:pokedex_green'", "target": 1, "rewards": [ { "type": "currency", "data": { "currency": "impactor:pokedollars", "amount": 100 } } ] } ]}Key Points:
- Sequential task with 4 stages
- Combines multiple event types: POKEMON_CAUGHT, POKEMON_LEVEL_UP, POKEMON_EVOLVE, ITEM_PICKUP
- Uses
q.player.is_in_zone()in POKEMON_CAUGHT filter to restrict to specific zone - Uses
q.pokemon.is_startermethod to target only the starter - Each subtask has its own rewards, plus task completion rewards
Example 3: Battle & Fishing Quest
Section titled “Example 3: Battle & Fishing Quest”Purpose: Teach fishing mechanics and require specific battle victories
{ "name": "<blue>Master the Waters", "description": ["<gray>Learn to fish!"], "sequential": "sequential", "icon": { "item_id": "cobblemon:poke_rod" }, "repeat_type": "NONE", "repeat_interval": 0, "rewards": [ { "type": "currency", "data": { "currency": "impactor:pokedollars", "amount": 500 } } ], "tasks": [ { "id": "masterwaters:go_to_beach", "name": "<blue>Go to the Beach", "description": "<gray>Travel to the beach.", "event": "ENTER_ZONE", "event_data": {}, "filter": "q.zone.uuid == '21af4251-ed97-499c-8445-3e6152fbcbb7'", "target": 1, "location": { "x": -40, "y": 64, "z": -69 }, "rewards": [ { "type": "command", "data": { "command": "give {player} cobblemon:poke_rod 1" } } ] }, { "id": "masterwaters:speak_to_fisherman", "name": "<blue>Speak to the Fisherman", "description": "<gray>Learn how to fish.", "event": "ENTITY_INTERACT", "event_data": {}, "filter": "q.entity.uuid == 'bb030064-870d-4513-b49b-bba5c92b19c1'", "target": 1, "location": { "x": -47, "y": 63, "z": -72 }, "rewards": [] }, { "id": "masterwaters:battle_wild_pokemon", "name": "<blue>Battle Wild Pokémon", "description": "<gray>Defeat 10 wild Pokémon.", "event": "BATTLE_VICTORY", "event_data": {}, "filter": "q.battle.is_wild", "target": 10, "rewards": [ { "type": "currency", "data": { "currency": "impactor:pokedollars", "amount": 200 } } ] }, { "id": "masterwaters:catch_magikarp", "name": "<blue>Catch a Magikarp", "description": "<gray>Catch a Magikarp.", "event": "POKEMON_CAUGHT", "event_data": {}, "filter": "q.pokemon.species.identifier == 'cobblemon:magikarp'", "target": 1, "rewards": [ { "type": "currency", "data": { "currency": "impactor:pokedollars", "amount": 300 } } ] } ]}Key Points:
- Zone entry gives item reward immediately
- ENTITY_INTERACT event for NPC dialogue
- BATTLE_VICTORY with compound filter checking battle type AND Pokémon type
- Species-specific catching requirement
Example 4: Non-Sequential Exploration Quest
Section titled “Example 4: Non-Sequential Exploration Quest”Purpose: Discover multiple zones in any order with optional objectives
{ "name": "<gold>Venture Forth into Ultra Space", "description": [ "<gray>Discover all unique biomes within Ultra Space." ], "sequential": "linear", "rewards": [ { "type": "currency", "data": { "currency": "impactor:pokedollars", "amount": 2000 } } ], "icon": { "item_id": "cobblemon:ultra_ball" }, "repeat_type": "NONE", "repeat_interval": 0, "tasks": [ { "id": "venture_forth:observe_deep_sea", "name": "<blue>Explore Ultra Deep Sea", "description": "<gray>Enter the Ultra Deep Sea biome.", "event": "ENTER_ZONE", "event_data": {}, "filter": "q.zone.uuid == 'ULTRA_DEEP_SEA_UUID'", "target": 1, "time_limit": "35s", "optional": true, "rewards": [ { "type": "currency", "data": { "currency": "impactor:pokedollars", "amount": 250 } } ] }, { "id": "venture_forth:explore_desert", "name": "<blue>Explore Ultra Desert", "description": "<gray>Traverse the Ultra Desert biome.", "event": "ENTER_ZONE", "event_data": {}, "filter": "q.zone.uuid == 'ULTRA_DESERT_UUID'", "target": 1, "rewards": [ { "type": "currency", "data": { "currency": "impactor:pokedollars", "amount": 250 } } ] } // ... more zones ]}Key Points:
sequential: "linear"allows completing subtasks in any orderoptional: trueon some subtasks - not required for task completiontime_limit: "35s"adds time pressure to specific objectives- Each subtask rewards incrementally toward final reward
Example 5: Daily Repeatable with Prerequisites
Section titled “Example 5: Daily Repeatable with Prerequisites”Purpose: Daily quest with task completion requirement
{ "name": "<gold>Welcome to Ultra Megalopolis", "description": [ "<gray>Complete your daily tasks in Ultra Megalopolis." ], "sequential": "sequential", "icon": { "item_id": "cobblemon:ultra_badge" }, "repeat_type": "DAILY", "repeat_interval": 1, "rewards": [ { "type": "currency", "data": { "currency": "impactor:pokedollars", "amount": 1000 } } ], "tasks": [ { "id": "intro:speak_to_nova", "name": "<blue>Speak to Space Cadet Nova", "description": "<gray>Learn about Ultra Space.", "event": "ENTITY_INTERACT", "event_data": { "uuid": "b1c5f9df-a4c6-4d07-bea3-60ad488ccde7" }, "filter": "q.entity.uuid == 'b1c5f9df-a4c6-4d07-bea3-60ad488ccde7'", "target": 1, "location": { "x": 342, "y": 20, "z": -268 }, "rewards": [ { "type": "currency", "data": { "currency": "impactor:pokedollars", "amount": 200 } } ] }, { "id": "intro:speak_to_captain_phyco", "name": "<blue>Speak to Captain Phyco", "description": "<gray>Receive your mission.", "event": "ENTITY_INTERACT", "event_data": { "uuid": "2de91ae9-e18e-4419-bffe-43d1b6cdbb2e" }, "filter": "q.entity.uuid == '2de91ae9-e18e-4419-bffe-43d1b6cdbb2e' && q.player.has_completed_task('journey:evolve_starter')", "target": 1, "time_limit": "45s", "location": { "x": 245, "y": 23, "z": -360 }, "rewards": [ { "type": "currency", "data": { "currency": "impactor:pokedollars", "amount": 500 } } ] } ]}Key Points:
repeat_type: "DAILY"withrepeat_interval: 1for daily reset- Filter combines entity check AND task completion check
- Time limit on second subtask
event_datacan specify UUID for optimization (though filter still needed)
Best Practices
Section titled “Best Practices”1. Filter Syntax
Section titled “1. Filter Syntax”DO:
"filter": "q.pokemon.is_starter""filter": "q.zone.uuid == 'uuid-here'""filter": "q.player.is_in_zone('uuid-here')"DON’T:
"filter": "query.pokemon.is_starter()" // Wrong prefix"filter": "pokemon.is_starter()" // Missing 'q.' prefix2. UUID Handling
Section titled “2. UUID Handling”Always use strings for UUIDs:
"filter": "q.zone.uuid == '123e4567-e89b-12d3-a456-426614174000'""filter": "q.entity.uuid == 'bb030064-870d-4513-b49b-bba5c92b19c1'"3. Combining Conditions
Section titled “3. Combining Conditions”Use && for multiple conditions:
"filter": "q.pokemon.is_starter && q.pokemon.level >= 16.0""filter": "q.battle.is_wild && q.battle.team.contains_starter""filter": "q.entity.uuid == 'npc-uuid' && q.player.has_completed_task('task:id')"4. Event Data Field
Section titled “4. Event Data Field”Optionally specify context in event_data:
{ "event": "ENTER_ZONE", "event_data": { "uuid": "zone-uuid-here" }, "filter": "q.zone.uuid == 'zone-uuid-here'"}Note: event_data is for optimization/hints - the filter still does the actual validation.
5. Reward Types
Section titled “5. Reward Types”Available reward types:
// Currency (requires Impactor){ "type": "currency", "data": { "currency": "impactor:pokedollars", "amount": 500 }}
// Command execution{ "type": "command", "data": { "command": "give {player} minecraft:diamond 1" }}
// MoLang script{ "type": "script", "data": { "scripts": [ "q.player.tell_minimessage('<green>Quest complete!');" ] }}
// Timeline trigger{ "type": "timeline", "data": { "timeline": "namespace:timeline_id" }}6. Task Structure Fields
Section titled “6. Task Structure Fields”{ "name": "<color>Display Name", // Shown in UI (supports MiniMessage) "description": ["Line 1", "Line 2"], // Array of description lines "sequential": "sequential", // "linear", "sequential", or "randomized" "start_requirement": "", // MoLang condition to start (empty = always available) "icon": { "item_id": "minecraft:diamond" // Item for task icon }, "repeat_type": "NONE", // NONE, DAILY, WEEKLY, CUSTOM "repeat_interval": 0, // Days between repeats (for CUSTOM) "rewards": [], // Task completion rewards "tasks": [] // Array of subtasks}7. Subtask Structure Fields
Section titled “7. Subtask Structure Fields”{ "id": "namespace:subtask_id", // Unique identifier "name": "<color>Display Name", // Shown in UI "description": "<gray>Details", // Description text "event": "EVENT_TYPE", // Event to listen for "event_data": {}, // Optional event context "filter": "q.condition == value", // MoLang filter expression "target": 1, // How many times event must occur "location": { // Optional waypoint marker "x": 0, "y": 64, "z": 0 }, "time_limit": "45s", // Optional time limit (format: "30s", "5m", "1h") "optional": false, // If true, not required for completion "rewards": [] // Subtask completion rewards}Common Patterns
Section titled “Common Patterns”Pattern 1: Progressive Quest Chain
Section titled “Pattern 1: Progressive Quest Chain”{ "sequential": "sequential", "tasks": [ { "id": "step1", "event": "ENTER_ZONE", "filter": "q.zone.uuid == 'zone1'", "target": 1 }, { "id": "step2", "event": "ENTITY_INTERACT", "filter": "q.entity.uuid == 'npc1'", "target": 1 }, { "id": "step3", "event": "POKEMON_CAUGHT", "filter": "q.pokemon.species.identifier == 'cobblemon:pikachu'", "target": 1 } ]}Pattern 2: Collection Quest (Any Order)
Section titled “Pattern 2: Collection Quest (Any Order)”{ "sequential": "linear", "tasks": [ { "id": "collect1", "event": "POKEMON_CAUGHT", "filter": "q.pokemon.species.identifier == 'cobblemon:bulbasaur'", "target": 1 }, { "id": "collect2", "event": "POKEMON_CAUGHT", "filter": "q.pokemon.species.identifier == 'cobblemon:charmander'", "target": 1 }, { "id": "collect3", "event": "POKEMON_CAUGHT", "filter": "q.pokemon.species.identifier == 'cobblemon:squirtle'", "target": 1 } ]}Pattern 3: Grinding Quest (High Target)
Section titled “Pattern 3: Grinding Quest (High Target)”{ "tasks": [ { "id": "defeat_wild", "event": "BATTLE_VICTORY", "filter": "q.battle.is_wild", "target": 50, "rewards": [ { "type": "currency", "data": { "currency": "impactor:pokedollars", "amount": 1000 } } ] } ]}Pattern 4: Zone-Restricted Task
Section titled “Pattern 4: Zone-Restricted Task”{ "tasks": [ { "id": "catch_in_zone", "event": "POKEMON_CAUGHT", "filter": "q.player.is_in_zone('zone-uuid-here')", "target": 5 } ]}Pattern 5: Prerequisite-Gated Task
Section titled “Pattern 5: Prerequisite-Gated Task”{ "start_requirement": "q.player.has_completed_task('namespace:previous_task')", "tasks": [ // ... subtasks only accessible after completing previous_task ]}Filter Query Reference (Verified)
Section titled “Filter Query Reference (Verified)”Based on actual working configurations, these query paths are confirmed:
Zone Events
Section titled “Zone Events”q.zone.uuid- Zone UUID (string)q.zone.name- Zone display name (from context)
Pokémon Events
Section titled “Pokémon Events”q.pokemon.species- Species identifier (e.g., “cobblemon:pikachu”)q.pokemon.level- Pokémon level (number)q.pokemon.is_starter- Check if starter (returns 1.0/0.0)q.pokemon.is_shiny- Check if shiny (returns 1.0/0.0)
Battle Events
Section titled “Battle Events”q.battle.is_wild- Check if wild battleq.battle.pokemon.type- Pokémon type in battle (string)
Entity Events
Section titled “Entity Events”q.entity.uuid- Entity UUID (string)
Item Events
Section titled “Item Events”q.item.id- Item resource location (string)
Player Functions (Callable in Filters)
Section titled “Player Functions (Callable in Filters)”q.player.is_in_zone('uuid')- Check if player in zoneq.player.has_completed_task('namespace:task_id')- Check task completionq.player.has_flag('flag_name')- Check player flag- All other player functions from MoLang documentation
This guide is based on actual working task configurations from Journey servers. All examples are tested and verified.