Skip to content
Jan Kluka edited this page Jun 29, 2026 · 3 revisions

Quests

The Quests module turns ordinary gameplay into rewarded goals. Players are assigned a rotating set of daily and weekly quests (plus any number of always-on permanent quests). Completing a quest lets the player claim its reward — and any Battle Pass XP — from the /quests menu.

Quests are tracked automatically by listening to what players already do across the plugin, so no other configuration is needed to make them work — just define the quests.


Overview

Feature Details
Storage Database
Categories Daily, Weekly, Permanent
Quests Unlimited — define as many as you like
Daily/Weekly size Configurable random, weighted selection per player
Rotation Daily and weekly, with configurable timezone & reset time
Rewards Reward bundle (commands + messages + sound) per quest
Battle Pass XP Configurable per quest
Reroll /quests reroll (permission-gated)

Commands

/quests          Open the quests menu (alias: /missions)
/quests reroll   Reroll your daily quests (permission: xprison.quests.reroll)

Quest Types

Each quest has a type that decides what it tracks. An optional filter narrows a quest to a single currency or enchant (matched by name, case-insensitive).

Type Tracks filter
MINE_BLOCKS Blocks mined
EARN_CURRENCY Currency earned Currency name (e.g. Tokens)
RANKUP Rank-ups
PRESTIGE Prestiges
REBIRTH Rebirths
TRIGGER_ENCHANT Pickaxe enchant procs Enchant name (e.g. Explosive)
USE_BOMB Bombs detonated
JOIN_GANG Joining a gang
AUTOMINE Auto-miner cycles

Categories & Rotation

Category Behaviour
DAILY Each player gets daily.count random quests, re-rolled automatically every day
WEEKLY Each player gets weekly.count random quests, re-rolled automatically every week
PERMANENT Every permanent quest is always active until completed

Daily and weekly selections are weighted by each quest's weight (higher = more likely to be picked). Rotation timing is controlled under rotation: in quests.yml (timezone, daily reset hour, weekly reset day & hour).


Creating Unlimited Quests

There is no cap on how many quests you can define — add as many entries under quests: as you want, across any of the types above. Each quest is self-contained:

daily:
  count: 3          # how many daily quests each player gets
weekly:
  count: 2

quests:
  daily_mine_blocks:
    type: MINE_BLOCKS
    category: DAILY
    display-name: "Daily Miner"
    target: 2500          # amount required
    weight: 10            # selection weight (DAILY/WEEKLY only)
    pass-xp: 150          # Battle Pass XP on claim
    display:
      material: IRON_PICKAXE
      name: "<yellow>Daily Miner"
      lore:
        - "<gray>Mine <white>%target% <gray>blocks."
        - "<gray>Progress: <white>%progress%<gray>/<white>%target% <gray>(<white>%percent%<gray>)"
        - "%bar%"
        - "%status%"
    rewards:
      commands:
        - "money give %player% 25000"
      messages:
        - "<green>+ $25,000"
      sound: ENTITY_PLAYER_LEVELUP

  earn_tokens:
    type: EARN_CURRENCY
    category: WEEKLY
    display-name: "Token Hoarder"
    target: 50000
    weight: 8
    filter: "Tokens"      # only counts Tokens
    pass-xp: 750
    display: { material: SUNFLOWER, name: "<gold>Token Hoarder", lore: ["<gray>Earn <white>%target% <gray>Tokens", "%bar%", "%status%"] }
    rewards:
      commands: ["tokens give %player% 5000"]
      messages: ["<aqua>+ 5,000 Tokens"]

Display placeholders usable in a quest's name/lore: %name%, %category%, %progress%, %target%, %percent%, %bar% (a live progress bar) and %status%.

Every reward is a reward bundle — an unlimited list of commands (with %player%), messages, and an optional sound.


The Quests Menu

/quests opens a paginated menu of the player's active quests, each showing a live progress bar and its state (in progress / completed / claimed). Completed quests are claimed by clicking. The progress bar characters and status labels are configurable under gui in quests.yml.


Titles & Sounds

Completing, claiming and hitting milestones fire configurable on-screen titles and sounds, set under effects: in quests.yml. Each block has an optional title (enabled, title, subtitle, fade-in/stay/fade-out in seconds) and an optional sound (enabled, sound, volume, pitch). The 25/50/75% milestone effects are off by default to avoid spam.

Event Title Sound Default Placeholders
quest-complete on %quest%
claim on %quest%
milestone off %quest%
effects:
  quest-complete:
    title:
      enabled: true
      title: "<gradient:#f7971e:#ffd200><bold>QUEST COMPLETE</bold></gradient>"
      subtitle: "<white>%quest% <gray>- claim it in <yellow>/quests"
      fade-in: 1
      stay: 3
      fade-out: 1
    sound:
      enabled: true
      sound: ENTITY_PLAYER_LEVELUP
  claim:
    sound: { enabled: true, sound: ENTITY_EXPERIENCE_ORB_PICKUP }
  milestone:
    title: { enabled: false }
    sound: { enabled: false, sound: BLOCK_NOTE_BLOCK_PLING, volume: 0.5, pitch: 1.5 }

Sound names are standard Bukkit/XSound names.


Permissions

Permission Description
xprison.quests.reroll Use /quests reroll

PlaceholderAPI

Placeholder Returns
%xprison_quests_active% Number of active quests
%xprison_quests_completed% Number of completed quests
%xprison_quests_unclaimed% Completed quests not yet claimed

Related Pages

Clone this wiki locally