Rewards

Last updated Oct 28, 2026

Rewards

Rewards are granted when a player claims a completed quest paper (right-click). Define them under the reward: key on each quest in quests.yml.

Optional fail-reward: uses the same keys and grant path as reward:. It is paid on timed-quest consolation (immediately) or overtime claim (if they finished after the deadline). Missing fail-reward never falls back to reward:.


Reward types

Key Requires Description
xp Nothing Minecraft experience points
money Vault + economy Currency via Vault
sigils Nothing SoapsQuest Sigils (stored in sigils.yml)
items Nothing List of item stacks with optional enchantments / chance / custom-model-data
commands Nothing Console commands run on claim (optional command-chance)
quest Target quest exists Gives another quest paper (quest.quest-id, optional quest.chance)
denizen Denizen installed Runs a Denizen script on claim (optional denizen-chance)

Optional chance keys: xp-chance, money-chance, sigils-chance (default 100).


XP

reward:
  xp: 250
  xp-chance: 100   # optional, default 100

Money

reward:
  money: 100.50
  money-chance: 100   # optional, default 100

Requires Vault and a registered economy provider. If Vault is missing, money is skipped and a warning may appear in console.


Sigils

reward:
  sigils: 50

Sigils work on Free and Premium. Balances persist in plugins/SoapsQuest/sigils.yml.

Optional chance (default 100):

reward:
  sigils: 25
  sigils-chance: 75

Items

reward:
  items:
    - material: DIAMOND_SWORD
      amount: 1
      name: "<#55FF55>Quest Blade"
      lore:
        - "<#AAAAAA>Awarded for bravery"
      enchantments:
        - "SHARPNESS:3"
        - "UNBREAKING:2"
      chance: 100
    - material: BREAD
      amount: 8
      chance: 100
Item field Description
material Bukkit material name (required)
amount Stack size (default 1)
name Display name (MiniMessage or & codes)
lore Lore lines
enchantments List of ENCHANT:level strings
chance Drop chance 0-100 (default 100)
flags Item flags such as HIDE_ENCHANTS
unbreakable true / false
custom-model-data Integer custom model data

MMOItems: when MMOItems is installed, set material (or the item string used by addreward chat input) to mmoitems:TYPE:ID (also accepts mmoitem:). Example: mmoitems:SWORD:DRAGON_SLAYER.


Commands

reward:
  commands:
    - "give {player} emerald 5"
    - "broadcast &a{player} completed a quest!"

Player placeholders: {player}, <player>, %player%.

Optional execution chance:

reward:
  commands:
    - "say Quest complete!"
  command-chance: 50

Denizen script

Requires Denizen and integrations.denizen enabled (or auto-detect).

reward:
  xp: 100
  denizen: quest_complete_fanfare

Optional denizen-chance (default 100). The script name is passed to Denizen on claim. See Integrations.


Quest chain reward

Give another quest paper when the player claims:

reward:
  xp: 100
  quest:
    quest-id: chapter_two
    chance: 100

String shorthand is also accepted:

reward:
  quest: chapter_two

The chained paper is created and given on claim. The target quest must exist in quests.yml or generated.yml.


Command-line reward editing

Staff can add rewards without editing YAML:

/sq addreward <questid> xp <amount>
/sq addreward <questid> money <amount>
/sq addreward <questid> sigils <amount>    # Premium only
/sq addreward <questid> command <cmd>
/sq addreward <questid> item               # Uses held item
/sq listreward <questid>
/sq removereward <questid> <index>

Permissions: soapsquest.addreward, soapsquest.listreward, soapsquest.removereward.

After command edits, run /sq reload to refresh existing papers.


Timed quests

Optional timer: on a quest starts one wall-clock deadline (not two clocks). start-on: receive arms when the paper instance is registered; start-on: activate waits for a right-click of the active held paper (queued copies do not start the clock). on-expire: fail voids with no payout; consolation grants fail-reward: then voids; overtime keeps the quest playable and uses fail-reward: on claim if they finished late. Completing before the deadline still pays full reward: even if they claim after. Dropping or storing the paper does not pause the timer.

Timer display (global)

Configure in config.yml under quest-timer-display: (see Default Config Files):

Option Effect
paper-name Append remaining time to the quest paper item name
action-bar Live countdown in the action bar (default: on)
boss-bar Boss bar for the most urgent active timed quest
chat-reminder-seconds Periodic chat countdown (0 = off). The one-minute warning message is always sent separately.

Paper lore always shows the timer line when a deadline is armed. The HUD tracks only timed quests that are active in your queue (not queued copies waiting for activate-start).

Configure timer and fail rewards in the Premium quest editor (clock and fail-reward buttons flanking Edit Rewards).


Completion messages

messages.yml supports <quest_rewards> in completion text to list granted rewards on multiple lines.


Random generator rewards (Premium)

Generated quests pull rewards from random-generator.yml pools (reward-pool, tier ranges, item pools, and templates). The YAML format matches quests.yml reward blocks so you can copy templates between files.

When a generated quest rolls a timer, fail-reward-scale clones that same reward: block into fail-reward: with scaled amounts (XP, money, sigils, item counts). Commands, quest papers, and chances are copied as-is.


Version 1.0.5

Still stuck? Ask about this page