Skip to main content

Objectives

Objectives define what a player must do to complete a quest. Each quest has one or more objectives, and every objective has a type, a target, and a count.

Objective Structure

Every objective in your quest JSON follows this structure:

{
"id": "obj_1",
"type": "blocks_mined",
"target": "Ore_Copper*",
"count": 20,
"description": {
"en": "Mine Copper Ore (0/20)",
"de": "Baue Kupfererz ab (0/20)"
}
}
FieldRequiredDescription
idYesUnique identifier within the quest (e.g. obj_1, obj_2)
typeYesThe objective type (see table below)
targetYesWhat to target -- item ID, mob name, zone, or "any"
countYesHow many times the action must be performed
descriptionNoLocalized display text shown in the quest book
consumeItemsNoIf true, collected items are removed from inventory on turn-in
hiddenNoIf true, objective is hidden until revealed
revealConditionNoWhen to reveal a hidden objective: on_progress, on_complete, or manual
conditionsNoAdditional conditions (biome, zone, weather, time of day, tool)
revealOnFailNoIf true, hidden objective is revealed when the quest fails
failMessageNoLocalized failure message (e.g. {"en-US": "Failed!", "de-DE": "Fehlgeschlagen!"})

All Objective Types

Block Objectives

TypeDescriptionExample Targets
blocks_minedMine stone, ores or other mineable blocksRock_Stone, Ore_*, any
blocks_choppedChop trees and woodWood_Oak*, any
blocks_dugDig dirt, sand or gravelSand_*, Dirt_*, any
blocks_placedPlace blocks in the worldBench_WorkBench, Furniture_Crude_Torch
blocks_harvestedHarvest crops (F-key interaction)Plant_Crop_Wheat*, any
flowers_pickedPick flowersPlant_Flower_Common_Red, any
Example: Mine ores and place a furnace
"objectives": [
{ "id": "obj_1", "type": "blocks_mined", "target": "Ore_*", "count": 30 },
{ "id": "obj_2", "type": "blocks_placed", "target": "Bench_Furnace", "count": 1 }
]

Combat Objectives

TypeDescriptionExample Targets
killsKill NPCs or mobsGoblin_*, Fen_Stalker, any_mob
player_killsKill other playersplayer
damage_dealtDeal damage to entitiesScorpion, any
damage_takenReceive damageany
Example: Hunt goblins and survive damage
"objectives": [
{ "id": "obj_1", "type": "kills", "target": "Goblin_*", "count": 10 },
{ "id": "obj_2", "type": "damage_taken", "target": "any", "count": 1000 }
]

Item Objectives

TypeDescriptionExample Targets
items_craftedCraft items at a workbench or furnaceWeapon_Sword_*, Potion_*, Bench_Furnace
items_collectedCollect items (enter inventory)Ore_*, @consumable, Plant_Flower_Common_Red
items_consumedConsume food or potions@consumable, Food_*
Example: Gather food items (any edible item counts)
"objectives": [
{ "id": "obj_1", "type": "items_collected", "target": "@consumable", "count": 5 }
]

Exploration Objectives

TypeDescriptionExample Targets
distance_traveledWalk a certain number of blocksMust be "any"
zone_discoveredDiscover named zonesmarketplace, ancient_ruins, any
playtime_minutesPlay for a duration (minutes)"any" or "total"
Example: Explore the world
"objectives": [
{ "id": "obj_1", "type": "distance_traveled", "target": "any", "count": 3000 },
{ "id": "obj_2", "type": "zone_discovered", "target": "ancient_ruins", "count": 1 }
]
zone_discovered vs zones_discovered

Use zone_discovered (singular) for quest objectives. The plural form zones_discovered is used only in the achievement system for cumulative tracking.

Important: distance_traveled

The target for distance_traveled must always be "any". Setting it to anything else (like "walking" or "running") will cause the objective to never progress.

Interaction Objectives

TypeDescriptionExample Targets
interact_npcTalk to a specific NPCNPC citizen ID, e.g. guide_finn
complete_hub_questsComplete sub-quests of a hub questHub quest ID, e.g. mining_hub
command_executedExecute a server commandCommand name (lowercase, no /)
Example: Collect ores and deliver to an NPC
"objectives": [
{ "id": "obj_1", "type": "items_collected", "target": "Ore_*", "count": 20 },
{ "id": "obj_2", "type": "interact_npc", "target": "guide_finn", "count": 1 }
]
Example: Execute a command
"objectives": [
{ "id": "obj_1", "type": "command_executed", "target": "home", "count": 1 }
]
command_executed

The command_executed objective tracks when a player types a command in chat. The target is the command name in lowercase without the / prefix. For example, to track when a player uses /home, set "target": "home".

Target Syntax

Targets determine what counts toward an objective. The system supports several matching patterns:

PatternSyntaxExampleMatches
Any"any""target": "any"Everything of that type
ExactFull ID"target": "Rock_Stone"Only Rock_Stone
WildcardEnds with *"target": "Ore_*"Ore_Iron, Ore_Copper, Ore_Gold, ...
Groupgroup:Name"target": "group:Stone"All blocks in the Stone group
Property@property"target": "@consumable"All items with isConsumable() = true
Multi-targettargets array"targets": ["Ore_Iron", "Ore_Copper"]Both iron and copper ore

@Property Targets

For items_collected and items_consumed objectives, you can use @ prefixed property targets that match items based on their game properties rather than their ID:

TargetMatchesNotes
@consumableAll edible itemsIncludes Food_*, Plant_Fruit_*, cooked items, etc.
Why @consumable instead of Food_*?

Edible items in Hytale use various ID prefixes (Food_*, Plant_Fruit_*, etc.). Using @consumable matches all edible items regardless of their naming pattern, making your quest more robust.

Multi-Target Example

Use the targets array (plural) to match multiple specific targets in a single objective:

{
"id": "obj_1",
"type": "blocks_mined",
"targets": ["Ore_Iron", "Ore_Copper", "Ore_Gold"],
"count": 30
}

Objective Options

Sequential Mode

Set "sequential": true on the quest to require objectives to be completed in order. Players must finish obj_1 before obj_2 starts tracking.

{
"objectives": [
{ "id": "obj_1", "type": "blocks_chopped", "target": "any", "count": 8 },
{ "id": "obj_2", "type": "items_crafted", "target": "Bench_WorkBench", "count": 1 },
{ "id": "obj_3", "type": "blocks_placed", "target": "Bench_WorkBench", "count": 1 }
],
"sequential": true
}

Consume Items

When consumeItems is true, the collected items are removed from the player's inventory when the quest is turned in. Useful for delivery-style quests.

{ "id": "obj_1", "type": "items_collected", "target": "Wood_*", "count": 20, "consumeItems": true }

Hidden Objectives

Hidden objectives are not shown in the quest book until a reveal condition is met.

{ "id": "obj_secret", "type": "zone_discovered", "target": "hidden_cave", "count": 1, "hidden": true, "revealCondition": "on_progress" }
Reveal ConditionBehavior
on_progressRevealed as soon as any progress is made
on_completeRevealed only when the objective is completed
manualMust be revealed via admin command or trigger

Objective Conditions

Add optional conditions that restrict where or when an objective can be progressed:

{ "id": "obj_1", "type": "blocks_mined", "target": "Ore_*", "count": 20,
"conditions": { "biome": "desert", "timeOfDay": "night", "tool": "Tool_Pickaxe_Iron" } }
ConditionValuesDescription
biomeBiome IDOnly counts in this biome
zoneZone nameOnly counts in this zone
weatherclear, rain, stormOnly counts during this weather
timeOfDayday, night, dawn, duskOnly counts at this time
toolItem IDOnly counts when using this tool
minLevelNumberPlayer must be at least this level
requiredBuffBuff IDPlayer must have this active buff