Condition Cookbook
Ready-to-use recipes that compose multiple conditions into real gating rules.
The Conditions page documents each type on its own. This page
is the opposite view: practical recipes that stack several conditions to express
a real rule. Every condition in the list must pass, and the first failing one
shows its message and stops the redemption, so the order you list them in is the
order they are checked.
How composition works
A conditions: list is an implicit AND: the redemption is allowed only when every
entry passes.
conditions:
- type: world
worlds: [ event_world ]
deny: "<red>Redeem this at the event."
- type: rank
groups: [ vip ]
deny: "<red>VIPs only."Two rules of thumb:
- Order from broad to specific. Checking is top-down and stops at the first failure, so put the cheap, common gate (world, permission) before the specific or hook-backed one (region, papi). The player then sees the most relevant message.
- There is no
OR. To allow either of two groups, use the list form of a single condition (groups: [ vip, mvp ]), not tworankentries. Two entries mean both.
Recipes
VIP-only event in one world
A reward that only VIPs can claim, and only inside the event world.
conditions:
- type: world
worlds: [ event_world ]
deny: "<red>This can only be redeemed at the event."
- type: rank
groups: [ vip, mvp ]
deny: "<red>VIP or MVP rank required."Skill-and-cost gate
Require both a level and a balance before a powerful reward. Remember economy only
checks the balance; pair it with a currency: take
reward if you also want to charge.
conditions:
- type: exp
level: 30
deny: "<red>Reach level 30 first."
- type: economy
amount: 5000
deny: "<red>You need $5000 to redeem this."
rewards:
- "currency: take 5000"
- "command: lp user %player% parent addtemp prestige 7d"Redeem at spawn, members only
Combine a region gate with a rank gate so a claim works only at spawn and only for members. Both are hook-backed and fail closed when their plugin is missing.
conditions:
- type: region
regions: [ spawn ]
deny: "<red>Come to spawn to claim this."
- type: rank
groups: [ member ]
deny: "<red>Members only."Time-limited launch reward
Gate a launch crate behind a permission and a hard cutoff date. The expiry
condition stops the redeem after the instant, independent of any per-item
voucher expiry.
conditions:
- type: permission
permission: "provouchers.use.launch"
deny: "<red>You have not unlocked the launch reward."
- type: expiry
expires: "2026-07-01T00:00:00Z"
deny: "<yellow>The launch event has ended."Quest-stage gate via PlaceholderAPI
Allow a redeem only when another plugin reports the right state, using a
papi comparison.
conditions:
- type: papi
placeholder: "%quests_stage_dragon%"
operator: ">="
value: "5"
deny: "<red>Finish the dragon quest first."Survival-only, not in creative
Restrict a reward to genuine survival play. The built-in gate already blocks creative
and spectator, but an explicit gamemode list also blocks adventure if you want only
survival.
conditions:
- type: gamemode
gamemodes: [ survival ]
deny: "<red>Switch to survival to redeem this."Choosing the order
Because the first failure wins, list conditions so the message a player is most likely
to hit comes first. For the VIP event recipe, most players are simply in the wrong
world, so the world gate leads; the rank gate is the rarer, more specific failure and
comes second. When two gates are equally likely, lead with the cheaper one (a plain
permission or world check) before a hook-backed region, economy, or papi
lookup.
See Conditions for the full type reference and Core Concepts for where conditions sit in the redemption flow.