zEvolutiveTools

Quests

Per-tool quest chains, daily quests, rewards, and the daily reset.

Every tool has its own quests. They give players a goal beyond just earning, and they pay a currency reward straight onto the tool.

Two kinds of quest

Quest chain

A fixed list in order. Finish one quest to unlock the next. This is the long-term goal for the tool.

Daily quests

A pool that refreshes once a day. Clear all of them for an extra bonus on top of each reward.

How a quest is set up

Each tool's quests live in quests/<tool>_quests.yml. A quest has a target action and a goal count. For example "break 500 stone" or "catch 20 fish".

The target is an uppercase material, entity, or item name. You can also use the word ANY to count every action that fits.

linear:
  first_steps:
    type: MINE_BLOCK
    target: STONE
    amount: 64
    reward_currency: 250
    name: "<primary>First Steps</primary>"
    description:
      - "<muted>Mine 64 stone.</muted>"

Both the linear and daily lists belong to you. Quests you add, rename, translate, or delete are kept exactly as written across reloads and plugin updates. New quests shipped with a later version are added next to yours without touching them.

Vanilla fish and custom fish

A custom fish from CustomFishing, ItemsAdder, or Oraxen usually keeps a vanilla material underneath, so a cod-based custom fish also counts for a target: COD quest. Two options on a FISH_CATCH quest keep them apart.

KeyWhat it does
source: vanillaCounts only plain catches. A catch that came from one of those plugins is skipped, even when its material matches.
source: customCounts only catches that came from one of those plugins.
source: anyThe default. Every catch that matches the target counts.
target: "customfishing:<loot id>"Counts one CustomFishing loot, by the key from its loots folder.
target: "itemsadder:<namespace:id>"Counts one ItemsAdder item.
target: "oraxen:<id>"Counts one Oraxen item.

Keep the quotes around a plugin target. Case does not matter.

daily:
  cod_quota:
    type: FISH_CATCH
    target: COD
    source: vanilla
    amount: 96
    reward_currency: 1000
    name: "<accent>Daily: Cod Quota</accent>"
  golden_cod:
    type: FISH_CATCH
    target: "customfishing:golden_cod"
    amount: 8
    reward_currency: 1500
    name: "<accent>Daily: Golden Cod</accent>"
  rare_haul:
    type: FISH_CATCH
    target: ANY
    source: custom
    amount: 50
    reward_currency: 3000
    name: "<accent>Daily: Rare Haul</accent>"

A misspelled source skips that one quest with a console warning. The rest of the file still loads.

How players progress

Quest progress is saved on the tool, next to its currency and upgrades. Rewards go to the tool's balance, not to a Vault economy.

Play with the tool

Mining, fighting, or fishing adds to the quest count.

Finish the quest

The player gets a message when a quest is done.

Claim the reward

With quests.require-claim on, rewards wait for the player. A "Claim Rewards" button in the tool's Quests menu shows how many rewards are waiting and the total. The player clicks it to add the total to the tool's balance.

Turn quests.require-claim off to pay each reward the moment its quest is done, with no button to click.

The daily reset

The daily quests roll over at the reset time and timezone you set under quests.daily in config.yml. When the day changes, the daily quests refresh and the player is told.

The daily list in a quest file is a pool, not a fixed set. At each reset the plugin draws a fresh random handful from the whole pool, as many as quests.daily.quests-per-day asks for. Write ten daily quests and every player still gets three a day, but a different three.

To test the rollover fast, set the reset time to one minute ahead and wait.

See Configuration for the quests.daily keys.

On this page