zQuestRank

Quests

All seven quest types, their options, custom lore, and per-quest rewards.

Each rank holds any number of quests, defined in ranks.yml under that rank's quests: section. A quest is a small block of keys:

quests:
  cobblestone:
    type: BREAK_BLOCK
    material: COBBLESTONE
    amount: 300

Quest keys

KeyWhat it doesRequired
typeOne of the quest types belowyes
amountThe target numberyes
materialBlock or item for break, harvest, craft, deliver, and fish questsdepends on type
entityMob type for KILL_MOB, default ANYno
placeholderThe PlaceholderAPI placeholder for PLACEHOLDER questsfor that type
display-nameCustom objective text shown in the menu (this is the icon title)no
descriptionExtra lines shown under the title, see belowno
iconCustom menu icon (defaults to the quest material). Takes a material, MATERIAL:custommodeldata, or itemsadder:namespace:id, see icon formatsno
loreCustom menu text for this one quest, see belowno
rewardsRewards given the moment this quest completes, see belowno

Quest types

BREAK_BLOCK

Break blocks of the given material. Covers mining, chopping logs, breaking leaves, anything that breaks.

coal:
  type: BREAK_BLOCK
  material: COAL_ORE
  amount: 100
A block breaking quest in the quest menu
A block-breaking quest with live progress in the quest menu.

Anti-cheese: blocks placed by players do not count when broken again, so nobody farms a quest by placing and re-breaking the same block. Toggle with progression.anti-place-cheese in config.yml. The placed-block tracking resets on a server restart.

HARVEST

Break fully-grown crops of the given material (wheat, carrots, potatoes, and so on). Baby crops do not count, so players cannot spam-break seedlings.

wheat:
  type: HARVEST
  material: WHEAT
  amount: 500

KILL_MOB

Kill mobs. entity: ANY counts every mob, or set one type like ZOMBIE or SKELETON. Player kills never count.

zombies:
  type: KILL_MOB
  entity: ZOMBIE
  amount: 150

CRAFT_ITEM

Craft items of the given material. Shift-click crafting is counted correctly: a full batch counts as the whole batch, not as one craft.

bread:
  type: CRAFT_ITEM
  material: BREAD
  amount: 100

DELIVER_ITEM

Bring items back to the quest menu. The player clicks the quest icon and the items are consumed from their inventory; progress is stored, so it can be turned in across several trips.

seeds:
  type: DELIVER_ITEM
  material: WHEAT_SEEDS
  amount: 256
A delivery quest in the quest menu
Turn the items in by clicking the quest icon; they get taken straight from the inventory.

FISH

Catch things with a fishing rod. Without a material, every catch counts. With one, only that exact catch counts.

fishing:
  type: FISH
  amount: 50

salmon:
  type: FISH
  material: SALMON
  amount: 20

The menu icon defaults to a fishing rod.

PLACEHOLDER

Completes when a numeric PlaceholderAPI value reaches amount. This is the bridge to every other plugin: job levels, vote counts, island levels, quest counts, anything that can be read as a number.

job-level:
  type: PLACEHOLDER
  placeholder: "%ecojobs_miner%"
  amount: 5
  display-name: "&7Reach Miner job level &e5"
  icon: IRON_PICKAXE

The value is read live, and once it reaches the target the completion is saved, so it stays completed even if the value later drops. See Placeholders for known-good placeholder names, and test any placeholder in game with /papi parse me <placeholder> first.

If PlaceholderAPI or the plugin providing the value is missing, the quest simply stays at 0, and the console warns once about the unresolved placeholder.

Quest description

The quest icon's title is the objective (for example "Craft 20 Golden Apples"). By default the icon shows just that title, the progress line, and the status, nothing repeated. If you want to explain the quest in your own words, add a description: list and those lines show up right under the title.

golden_apples:
  type: CRAFT_ITEM
  material: GOLDEN_APPLE
  amount: 20
  description:
    - "&7Craft golden apples at a"
    - "&7crafting table to progress."

The same {objective}, {progress}, {target} and {status} placeholders (see the table below) work inside description lines too. To change the title itself, use display-name. For full control over the whole icon text, use lore instead (below), which replaces everything.

Custom lore per quest

By default a quest icon shows the objective, the progress line, and the status. To write your own text for one specific quest, give it a lore: list. It fully replaces the default text for that quest.

The icon title is already the objective, so don't put {objective} as your first lore line or it shows up twice. Just write the extra text you want under the title.

These placeholders work inside the lines:

PlaceholderBecomes
{objective}The quest's objective text
{progress}Current progress number
{target}The quest's amount
{status}The IN PROGRESS or COMPLETED line
seeds:
  type: DELIVER_ITEM
  material: WHEAT_SEEDS
  amount: 256
  lore:
    - "&7Bring the seeds back here and click!"
    - ""
    - "&7Progress: &e{progress}&7/&e{target}"
    - "{status}"

Color codes (&a style and &#rrggbb hex, see Colors) work everywhere, and with PlaceholderAPI any %...% placeholder or emoji works in names, lore and description too (see Placeholders). The icon's name stays the objective; use display-name to change that.

Per-quest rewards

A quest can pay out on its own, the moment it completes, separate from the rank rewards. Add a rewards: block with any of money, xp-levels, items, and commands:

seeds:
  type: DELIVER_ITEM
  material: WHEAT_SEEDS
  amount: 256
  rewards:
    money: 500
    items:
      - "BREAD:16"
    commands:
      - "crates give {player} vote 1"

The reward fires exactly once per completion and arrives together with the quest-completed chat message. The options are described in full on the Rewards page.

Progress rules worth knowing

  • Progress always belongs to the player's current rank. Claiming a rank starts the next rank's quests from zero.
  • Progress is saved per player and survives relogs and restarts. See Storage.
  • The moment a quest reaches its target, the player gets a chat message (toggle with progression.notify-on-quest-complete in config.yml).

On this page