Writing quests
Add your own quests by dropping a YAML file in the quests folder.
Where quests live
Each quest is one YAML file inside plugins/AlphaQuests/quests/, usually in a folder named after its category. The file name without .yml is the quest id. It may use letters, digits, _ and -, up to 64 characters, and must be unique. A bad file is skipped with a console warning and the rest still load. Apply new files with /aquests reload.
A complete quest
tasks:
quest:
type: "blockbreak"
amount: 500
block: STONE
display:
name: "&#FFE63D📖 󅒐| &#FFE63Dᴍɪɴᴇʀ"
lore-normal:
- " 󅒐ᴍɪɴᴇ 500 ꜱᴛᴏɴᴇ"
lore-started:
- " 󅒐{quest:progress}/500 ꜱᴛᴏɴᴇꜱ ᴍɪɴᴇᴅ"
type: "DIAMOND_PICKAXE"
itemflags:
- "HIDE_ATTRIBUTES"
rewards:
- "eco give {player} 6451.61"
- "xp give {player} 15l"
placeholders:
description: "󅒐ᴍɪɴᴇ 500 ꜱᴛᴏɴᴇ."
progress-placeholders:
'*': "󅒐{quest:progress}/500 ꜱᴛᴏɴᴇꜱ ᴍɪɴᴇᴅ"
options:
category: "miner"
repeatable: true
cooldown:
enabled: true
time: 21600
sort-order: 1
| Section | Meaning |
|---|---|
tasks | One or more objectives. Each has a type, an amount and optional targets. See Task types. |
display | The menu item: name, lore-normal before accepting, lore-started once active, the icon type and itemflags. {quest:progress} is the live count. |
rewards | A list of reward lines. See Rewards. |
reward-display | Optional friendly text for the reward preview, useful for custom command rewards. |
placeholders, progress-placeholders | The description and progress text used by the tracker and placeholders. |
options.category | The category id, which must exist in categories.yml. |
options.repeatable | Whether it can be done again. |
options.cooldown | enabled and time in seconds. |
options.sort-order | Position inside the category list. |
requires | A list of quest ids that must be completed first. See Chains. |
permission | A permission needed to accept the quest. |
Task types
The type of a task is one of:
| Type | Counts |
|---|---|
blockbreak, mining | Breaking blocks. Target with block or blocks. |
blockplace | Placing blocks. |
farming | Harvesting crops. |
mobkilling | Killing mobs. Target with mob. |
playerkilling | Killing players. |
dealdamage | Damage dealt. |
fishing | Catching fish. Target with item. |
crafting, smelting, smithing, brewing, enchanting | Making and improving items. Target with item. |
walking, gliding | Distance travelled. Use distance as the amount. mode: elytra on a walking task is tracked as gliding. |
taming, breeding, milking, curing, trading, resurrecting | Animal and villager actions, and totem use. |
bucketfill, bucketempty | Using buckets. Target with bucket. |
consume | Eating and drinking. |
projectilelaunching | Firing projectiles. Target with projectile. |
expearn | Experience gained. |
The target keys target, block, entity, material, mob, bucket, item and projectile are all accepted as the target of a task. Old names such as block_place and blockbreakcertain still work as aliases.
Rewards
Rewards run in this order: money, XP, items, commands, badges. Use {player} for the player name.
| Line | Does |
|---|---|
eco give {player} <amount> | Pays through Vault. The streak bonus applies. Needs an economy provider. |
xp give {player} <amount> | Gives experience points. Add l for levels, for example 15l. |
give {player} <material> <amount> | Gives items. What does not fit is dropped at the player feet when features.drop-overflow is on. |
badge <name> | Grants a badge. The count is available as a placeholder. |
| anything else | Runs as a console command. |
Reward failed in the console and the remaining rewards still run. The eco and xp lines must use exactly the form shown, with the player name in place.Categories
categories.yml defines the name, lore and icon of each category in the main menu. The bundled categories are daily, weekly, killer, miner, farmer, fisherman, lumberjack, hunter, builder, explorer, blacksmith and glider. Add a category by adding a block here, then point quests at it with options.category.
