Conditions
Last updated Oct 28, 2026
Conditions
Conditions control when a player can accept or start a quest. They are defined under conditions: on each quest in quests.yml.
When a condition fails, the player sees a message and cannot receive the quest from the browser (or cannot progress, for some checks at pickup time).
Flat condition keys (quests.yml)
These keys are read by ConditionRegistry.parseConditions / checkConditions when the section has no type: field:
| Key | Requires | Description |
|---|---|---|
min-level |
Nothing | Player XP level must be at least this value |
max-level |
Nothing | Player XP level must be at most this value |
cost |
Vault | Money deducted on accept when resources are consumed |
min-sigils |
Nothing | Minimum Sigil balance (not consumed) |
sigil-cost |
Nothing | Sigils deducted on accept |
permission |
Nothing | Player must have this permission node |
world |
Nothing | List of allowed world names |
active-limit |
Nothing | Max number of active quest types in the player's queue (checked separately) |
item |
Nothing | Format MATERIAL:amount (comma-separated for multiple) |
consume-item |
Nothing | true removes required items when the quest is accepted |
time |
Nothing | DAY or NIGHT |
gamemode |
Nothing | List of allowed gamemodes, e.g. ["SURVIVAL"] |
placeholder |
PlaceholderAPI | Expression such as %player_level% >= 30 |
Example
sigil_master_contract:
display: "<#55FFFF>Sigil Contract"
conditions:
min-sigils: 15
sigil-cost: 10
objectives:
- type: kill
target: ZOMBIE
amount: 20
reward:
sigils: 50
money: 120
active-limit behavior
Counts active quest types in the player's queue, not total papers. Multiple copies of the same quest ID share one type slot. Queued copies of the same ID do not count toward the limit.
conditions:
active-limit: 2
Placeholder conditions
Requires PlaceholderAPI. The value is resolved for the player, then compared:
conditions:
placeholder: "%vault_eco_balance% >= 1000"
Supported operators: >=, <=, ==, !=, >, <.
Editor / typed condition forms
The in-game condition editor and typed YAML use a type: field. Registered types:
| Type | Purpose | Main value keys |
|---|---|---|
level |
Minimum level | min-level |
max-level |
Maximum level | max-level |
money |
Minimum balance (not consumed) | min-money |
money-cost |
Deduct money on start | cost |
sigils |
Minimum Sigils | amount / min-sigils |
sigil-cost |
Deduct Sigils on start | sigil-cost |
permission |
Permission node | permission |
world |
Allowed worlds | world |
active-limit |
Active quest type cap | active-limit |
item |
Required items (not consumed) | item |
item-cost |
Required items (consumed) | item + consume |
time |
DAY or NIGHT |
time |
gamemode |
Allowed gamemodes | gamemode |
placeholder |
PlaceholderAPI expression | expression / value |
require-completed-quests |
Minimum total claimed quests | count |
require-quest-completed |
Specific quest IDs claimed | quests: list |
Specific prior quests (typed):
conditions:
type: require-quest-completed
quests:
- lumberjack
- zombie_slayer
Total completions (typed):
conditions:
type: require-completed-quests
count: 5
When type: is present, the loader deserializes that one typed condition (not the multi-flat-key path). Prefer flat keys for simple stacks (min-level + sigil-cost), or the editor for typed entries.
Random generator conditions (Premium)
random-generator.yml can randomly attach conditions to generated quests with per-tier values and chance percentages. See Random Quest Generator.
Root permission field
Separate from conditions.permission, a quest-level permission: field gates progress on the paper after pickup. Use conditions.permission to lock the browser entry.
Version 1.0.5
Still stuck? Ask about this page