This section explains each element of the quest configuration, providing a detailed understanding of how to set up quests in your Minecraft server.
quests:-type:BLOCK_BREAK# The type of the questactions:-material:STONE-material:COBBLESTONEname:"block-break-1"# The name must be unique and must never changedisplay-name:"Stone Breaker"# The name of the quest to be displayed in-gamedescription:"Break 500 stone blocks"# The description of the questthumbnail:STONE# The material to be displayed in-gamegoal:500# The goal to be achievedauto-accept:true# If the quest should start automaticallyuse-global-rewards:true# Allows you to use global rewardsfavorite:false# Allows to bookmark the quest when it startscan-change-favorite:true# Allows you to define whether the player can activate or not the favorites on the questunique:false# Allows you to define if a quest is uniquecustom-model-id:0# Allows to define the custom model id for the placeholder %quest-model-id% for the ZQUEST_HISTORY buttonrewards:# The rewards-type:message# Sending a messagemessages:-"&fYou have broken &7500 stone&f blocks!"-type:console_command# Executing a commandcommands:-"give %player% diamond 5"
type
Specifies the type of the quest. It determines the main objective and how progress is tracked.
Required: Yes
Default: None. You must specify one of the quest types listed below.
Example:
actions
Defines the specific actions required to complete the quest. It can include one or more materials, entities, or tags that the player must interact with.
Required: Depends on the quest type; omit or leave empty if not needed.
Default: Empty list.
Notes: Each entry may use keys such as material, entity, or tag depending on the quest type.
Example:
name
A unique identifier for the quest. It must be unique across all quests and should never change once set.
Required: Yes
Default: None.
Notes: Player progress is stored using this value, so changing it can reset or corrupt quest data.
Example:
Be careful, the name of the quest must be unique!
display-name
The name of the quest as displayed in-game. This name is visible to the players and can be descriptive.
Required: No
Default: Uses the value of name if not provided.
Notes: Supports Minecraft color codes.
Example:
description
Provides a description of the quest that players can read to understand what is required to complete it.
Required: No
Default:no description
Example:
placeholder-description
Allows you to display the description using placeholders. This can be used with the placeholder configuration system.
Required: No
Default: Uses description if not set.
Example:
thumbnail
Defines the material that will be displayed as the thumbnail icon for the quest in the quest menu.
Rewards that are only executed if specified requirements are met. Useful for giving extra rewards to players with specific permissions or conditions.
Default: Empty list.
Notes: Uses zMenu's requirement system for the requirements section.
Example:
action-requirements
Requirements that must be met for the quest to register progress. If the player does not satisfy these conditions, the quest will not advance.
Default: Empty list.
Notes: Uses zMenu's requirement syntax.
Example:
hologram
Displays one or more holograms when the quest is active. See Waypoints & Holograms for complete configuration options. You can reference a global hologram defined in holograms.yml by name or specify the configuration inline.
Default: No hologram.
Notes: Requires a compatible hologram system such as zEssentials.
Global reference example:
Inline example:
waypoint
Creates a waypoint guiding the player to a location. See Waypoints & Holograms for full configuration options. Like holograms, this can reference a global configuration from waypoints.yml or define its own location and appearance.
Default: No waypoint.
Notes: The color field accepts common color names or hex codes.
Global reference example:
Inline example:
Quests type
BLOCK_BREAK
This quest requires the player to break a certain number of specific blocks. It can be used to encourage players to mine or destroy blocks in a specific area.
This quest involves dealing a certain amount of damage to entities. It is ideal for combat quests without the necessity to kill. You do not need to specify the type of entity, here the objective is to make degats.
Example usage:
EXPERIENCE_GAIN
The player must gain a certain amount of experience. This can be earned by mining, breeding, crafting, etc.
Example usage:
HATCHING
This quest involves hatching eggs, such as turtle eggs. It encourages players to take care of animals in the game.
Example usage:
ITEM_BREAK
This quest requires the player to break an item (e.g., breaking a pickaxe by using it). It can be used to encourage players to fully utilize their tools.
Example usage:
ITEM_MENDING
The player must repair an item, either with the Mending enchantment or using an anvil. This encourages players to take care of their equipment.
Example usage:
ITEM_CONSUME
This quest checks when a player eats an item.
Example usage:
RESURRECT
This quest involves resurrecting an animal or a player, often using a Totem of Undying.
Allows checking if the player is present within a cuboid.
Example usage:
The cuboid is composed of the world name, a first set of coordinates (x, y, z), and a second set of coordinates (x2, y2, z2).
CUSTOM
Allows checking for a specific element related to your plugins. For example, you can verify if a player is interacting with a villager. You must use the API.
The custom type will take a string data input and verify if the data is correct.
Example usage:
API example:
In this example, we will verify the CUSTOM type quest using the citizen's name as a parameter. We then retrieve the number of times a quest has been updated. For instance, if your player clicks on a villager and activates a quest, no action should be taken.
INVENTORY_OPEN
Check the inventories opened by the player. Works only with zMenu.
Example usage:
INVENTORY_CONTENT
Allows checking the contents of the player's inventory and removing items. You can use a material or a material tag. You must also specify the name of the citizen the player needs to interact with. You must either use the API to execute this action or use the command /q progress-inventory <player> <citizen name>.
Example usage:
API example:
LOOK_AT_BLOCK
The player must look at a block located inside a defined cuboid. The maximum detection distance is controlled by look-at-distance-block in config.yml.
Example usage:
LOOK_AT_ENTITY
Tracks when the player looks at an entity inside the specified cuboid. The look-at-distance-entity value in config.yml defines how far the player can be.
waypoint:
location: "world,100,65,200"
texture: example
color: red
quests:
- type: BLOCK_BREAK # The type of the quest
actions:
- material: STONE # https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html
- material: COBBLESTONE # https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html
- tag: LOGS # https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Tag.html
name: "block-break-1" # The name must be unique and must never change
display-name: "Example 1" # The name of the quest to be displayed in-game
description: "Break 500 stone blocks or logs" # The description of the quest
thumbnail: STONE # The material to be displayed in-game
goal: 500 # The goal to be achieved
quests:
- type: BLOCK_PLACE # The type of the quest
actions:
- material: STONE # https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html
- material: COBBLESTONE # https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html
- tag: LOGS # https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Tag.html
name: "block-place-1" # The name must be unique and must never change
display-name: "Example 1" # The name of the quest to be displayed in-game
description: "Place 500 stone blocks or logs" # The description of the quest
thumbnail: STONE # The material to be displayed in-game
goal: 500 # The goal to be achieved
quests:
- type: ENTITY_KILL # The type of the quest
actions: # List of entities to be considered
- entity: SKELETON # https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html
name: "entity-skeleton-1" # The name must be unique and must never change
display-name: "Skeleton Killer" # The name of the quest to be displayed in-game
description: "Kill 10 Skeleton" # The description of the quest
thumbnail: BONE # The material to be displayed in-game
goal: 10 # The goal to be achieved
quests:
- type: FARMING # The type of the quest
actions:
- material: WHEAT
name: "farming-wheat-1" # The name must be unique and must never change
display-name: "Wheat Breaker" # The name of the quest to be displayed in-game
description: "Break 500 wheat blocks" # The description of the quest
thumbnail: WHEAT # The material to be displayed in-game
goal: 10 # The goal to be achieved
quests:
- type: FISHING # The type of the quest
actions: # Actions to be performed in the quest
- material: COD # Type of fish to be caught
name: "fishing-cod-1" # The name must be unique and must never change
display-name: "Fishing Cod" # The name of the quest to be displayed in-game
description: "Catch 8 cod" # The description of the quest
thumbnail: COD # The material to be displayed in-game
goal: 8 # The goal to be achieved
quests:
- type: TAME # The type of the quest
actions: # List of entities to be considered
- entity: HORSE
name: "tame-horse-1" # The name must be unique and must never change
display-name: "Tame horse" # The name of the quest to be displayed in-game
description: "Tame 10 horses" # The description of the quest
thumbnail: BONE # The material to be displayed in-game
goal: 10 # The goal to be achieved
quests:
- type: BREW # The type of the quest
actions: # Actions to be performed in the quest
- potion-type: SWIFTNESS # Type of potion to be brewed
name: "brew-swiftness-3" # The name must be unique and must never change
display-name: "Brew 3 swiftness" # The name of the quest to be displayed in-game
description: "Make 3 swiftness potions" # The description of the quest
thumbnail: POTION # The material to be displayed in-game
goal: 3 # The goal to be achieved
quests:
- type: SMELT # The type of the quest
actions: # Actions to be performed in the quest
- material: IRON_INGOT # Type of material to be smelted
name: "smelt-iron-1" # The name must be unique and must never change
display-name: "Smelt Iron" # The name of the quest to be displayed in-game
description: "Smelt 8 iron ingots" # The description of the quest
thumbnail: IRON_INGOT # The material to be displayed in-game
goal: 8 # The goal to be achieved
quests:
- type: RESURRECT
name: "resurrect-1"
display-name: "Come back to life"
description: "Come back to life 8 times"
thumbnail: STONE
goal: 8
quests:
- type: JOB_LEVEL
actions:
- job: miner
name: "job-1"
display-name: "Achieve level 50 of the minor job"
description: "Achieve level 50 of the minor job"
goal: 50
quests:
- type: JOB_PRESTIGE
actions:
- job: miner
name: "job-2"
display-name: "Achieve prestige 1 of the minor job"
description: "Achieve prestige 1 of the minor job"
goal: 1
quests:
- type: INVENTORY_CONTENT
actions:
- tag: OAK_LOGS
citizen-name: cube
name: "inventory-2"
display-name: "Deliver 500 oak logs to Cube"
description: "Deliver 500 oak logs to Cube"
goal: 500
QuestsPlugin questsPlugin = (QuestsPlugin) Bukkit.getServer().getPluginManager().getPlugin("zQuests");
int result = questsPlugin.getQuestManager().handleInventoryQuests(new InventoryContent(player, "cube"));
if (result > 0) return;
quests:
- type: LOOK_AT_BLOCK
actions:
- cuboid: "world,401,2,-20,461,10,20"
name: "look-block-1"
display-name: "Observe the auction house"
description: "Find and look at the auction house"
goal: 1
quests:
- type: LOOK_AT_ENTITY
actions:
- cuboid: "world,401,2,-20,461,10,20"
name: "look-entity-1"
display-name: "Spot the auctioneer"
description: "Look at the villager in the auction house"
goal: 1