Quest Configuration
This page explains how to configure quests in zQuests. Each quest is defined using YAML configuration with various options to customize behavior, objectives, and rewards.
Basic Structure
Quests are defined in YAML files located in the plugins/zQuests/quests/ folder. You can organize quests into multiple files for better management.
quests:
- type: BLOCK_BREAK
name: "stone-breaker-1"
display-name: "Stone Breaker"
description: "Break 500 stone blocks"
thumbnail: STONE
goal: 500
auto-accept: true
actions:
- material: STONE
- material: COBBLESTONE
rewards:
- type: message
messages:
- "&aYou completed the Stone Breaker quest!"
- type: console_command
commands:
- "give %player% diamond 5"
Configuration Options
type
Specifies the type of quest. This determines how progress is tracked.
- Required: Yes
- Default: None
type: BLOCK_BREAK
See Quest Types for all available types.
name
A unique identifier for the quest. This value is used internally to track player progress and must never change once players have started the quest.
- Required: Yes
- Default: None
name: "stone-breaker-1"
The quest name must be unique across all quest files. Changing this value after players have started the quest will reset their progress!
display-name
The name shown to players in inventories and messages. Supports color codes and placeholders.
- Required: No
- Default: Uses
namevalue
display-name: "&6Stone Breaker"
description
A description of the quest shown to players. Supports color codes.
- Required: No
- Default:
"no description"
description: "Break 500 stone blocks to complete this quest"
placeholder-description
An alternative description that supports dynamic placeholders. Useful for showing remaining progress.
- Required: No
- Default: Uses
description
placeholder-description: "Break %quest-remaining% more stone blocks"
Available placeholders:
%quest-remaining%- Remaining amount to complete%quest-progress%- Current progress%quest-goal%- Quest goal
thumbnail
The material used as the quest icon in inventories.
- Required: No
- Default: None
thumbnail: DIAMOND_PICKAXE
Uses Bukkit Material names.
goal
The target amount to complete the quest.
- Required: Yes
- Default:
1
goal: 500
auto-accept
Whether the quest automatically starts when available to the player.
- Required: No
- Default:
false
auto-accept: true
use-global-rewards
Whether to include global rewards when the quest is completed.
- Required: No
- Default:
true
use-global-rewards: true
Set to false if you only want the quest-specific rewards to be given.
favorite
Whether the quest is marked as favorite when started.
- Required: No
- Default:
false
favorite: true
can-change-favorite
Whether players can toggle the favorite status of this quest.
- Required: No
- Default:
true
can-change-favorite: true
unique
When enabled, progress on this quest prevents progress on other quests of the same type. Useful for story quests where only one quest should advance at a time.
- Required: No
- Default:
false
unique: true
hidden
Whether the quest is hidden from the ZQUESTS_HISTORY button.
- Required: No
- Default:
false
hidden: true
custom-model-id
Custom model ID for resource pack integration, available via the %quest-model-id% placeholder.
- Required: No
- Default:
0
custom-model-id: 1001
actions
Defines what counts toward quest progress. The format depends on the quest type.
- Required: Depends on quest type
- Default: Empty list
# For BLOCK_BREAK quests
actions:
- material: STONE
- material: COBBLESTONE
- tag: LOGS # Bukkit tags
# For ENTITY_KILL quests
actions:
- entity: ZOMBIE
- entity: SKELETON
rewards
Actions executed when the quest is completed. Supports all zMenu actions.
- Required: No
- Default: Empty list
rewards:
- type: message
messages:
- "&aQuest completed!"
- type: console_command
commands:
- "give %player% diamond 10"
- type: sound
sound: ENTITY_PLAYER_LEVELUP
See zMenu Actions for all available action types.
start-actions
Actions executed when the quest starts.
- Required: No
- Default: Empty list
start-actions:
- type: message
messages:
- "&eQuest started! Good luck!"
- type: sound
sound: ENTITY_EXPERIENCE_ORB_PICKUP
permissible-rewards
Bonus rewards given only if the player meets certain requirements.
- Required: No
- Default: Empty list
permissible-rewards:
- requirements:
- type: permission
permission: quests.vip
actions:
- type: message
messages:
- "&6VIP Bonus: Extra rewards!"
- type: console_command
commands:
- "give %player% diamond 5"
action-requirements
Requirements that must be met for quest progress to count. If the player doesn't meet these requirements, their actions won't advance the quest.
- Required: No
- Default: Empty list
action-requirements:
- type: permission
permission: quests.can-progress
- type: world
world: survival
hologram
Display a hologram when the quest is active. Can reference a global hologram by name or define inline.
- Required: No
- Default: None
Reference global hologram:
hologram: MY_HOLOGRAM
Inline definition:
hologram:
location: "world,100,65,200"
texts:
- "&aQuest location here!"
- "&7Follow the path..."
See Waypoints & Holograms for full configuration.
waypoint
Display a waypoint guiding the player to a location. Can reference a global waypoint or define inline.
- Required: No
- Default: None
Reference global waypoint:
waypoint: QUEST_LOCATION
Inline definition:
waypoint:
location: "world,100,65,200"
texture: quest_marker
color: gold
See Waypoints & Holograms for full configuration.
Complete Example
Here's a complete quest configuration showing most options:
quests:
- type: BLOCK_BREAK
name: "mining-master"
display-name: "&6Mining Master"
description: "Break 1000 ore blocks"
placeholder-description: "Break %quest-remaining% more ore blocks"
thumbnail: DIAMOND_ORE
goal: 1000
auto-accept: false
use-global-rewards: true
favorite: false
can-change-favorite: true
unique: false
hidden: false
custom-model-id: 0
actions:
- material: COAL_ORE
- material: IRON_ORE
- material: GOLD_ORE
- material: DIAMOND_ORE
- material: EMERALD_ORE
- material: LAPIS_ORE
- material: REDSTONE_ORE
- material: COPPER_ORE
- material: DEEPSLATE_COAL_ORE
- material: DEEPSLATE_IRON_ORE
- material: DEEPSLATE_GOLD_ORE
- material: DEEPSLATE_DIAMOND_ORE
- material: DEEPSLATE_EMERALD_ORE
- material: DEEPSLATE_LAPIS_ORE
- material: DEEPSLATE_REDSTONE_ORE
- material: DEEPSLATE_COPPER_ORE
action-requirements:
- type: world
world: survival
start-actions:
- type: message
messages:
- "&eYou started the Mining Master quest!"
- "&7Break 1000 ore blocks to complete it."
rewards:
- type: message
messages:
- "&a&lQuest Completed!"
- "&7You are now a Mining Master!"
- type: console_command
commands:
- "give %player% diamond 64"
- "eco give %player% 10000"
- type: sound
sound: UI_TOAST_CHALLENGE_COMPLETE
permissible-rewards:
- requirements:
- type: permission
permission: rank.vip
actions:
- type: message
messages:
- "&6&lVIP BONUS: +32 diamonds!"
- type: console_command
commands:
- "give %player% diamond 32"
hologram: MINING_AREA
waypoint: MINING_AREA
File Organization
You can organize quests into multiple files:
plugins/zQuests/quests/
├── beginner/
│ ├── tutorial.yml
│ └── starter-quests.yml
├── daily/
│ ├── mining.yml
│ └── farming.yml
├── story/
│ └── main-storyline.yml
└── events/
└── halloween.yml
Each file should contain a quests list:
# quests/beginner/tutorial.yml
quests:
- type: BLOCK_BREAK
name: "tutorial-1"
# ... quest config
- type: CRAFT
name: "tutorial-2"
# ... quest config
Next Steps
- Learn about all Quest Types
- Configure Rewards
- Set up Waypoints & Holograms