ProVouchers

Commands and Permissions

The /voucher command tree and every permission node.

All commands live under /voucher, with the aliases /pv and /vouchers.

Commands

CommandPermissionRoleDescription
/voucher give <id> [amount] [player]provouchers.giveadminGive a voucher to yourself or another player.
/voucher giveall <id> [amount] [permission]provouchers.givealladminGive a voucher to every online player.
/voucher stashgive <player> <id> [amount] [argument]provouchers.stashgiveadminQueue a voucher in a player's Stash, online or offline.
/stashprovouchers.stashplayerOpen your Stash of claimable virtual vouchers.
/voucher redeem <code> [arg]provouchers.redeemplayerRedeem a typeable code.
/voucher previewprovouchers.previewadminBrowse loaded vouchers in a GUI and give yourself a copy.
/voucher listprovouchers.listadminList loaded vouchers and the code count.
/voucher reload [id]provouchers.reloadadminReload all voucher and code files, or just one by id, reporting per-file errors.
/voucher resetuses <id> [player]provouchers.resetusesadminClear the recorded use counters for a voucher or code, for one player or everyone.
/voucher import crazyvouchersprovouchers.importadminImport CrazyVouchers configs as ProVouchers voucher files.
/voucher fromhand <id>provouchers.fromhandadminCapture the held item as a new voucher file, behind a confirm GUI.
/voucher doctorprovouchers.doctoradminPrint a diagnostic health report (storage, integrations, content, locale).

give

/voucher give crate_key            # to yourself (if you are a player)
/voucher give crate_key 5          # 5 copies, to yourself
/voucher give crate_key 5 Steve    # 5 copies, to Steve

When the player argument is omitted, the voucher goes to the command sender. Running give from the console requires naming a player. By default vouchers stack; a voucher set to stackable: false is stamped per item and does not stack (see Anti-Dupe).

giveall

/voucher giveall crate_key 1
/voucher giveall crate_key 1 group.vip   # only players with this permission

Gives the voucher to every player currently online, or only to those holding the optional permission node. To reach an offline player, use stashgive.

stashgive

/voucher stashgive Steve crate_key
/voucher stashgive Steve crate_key 3 vip   # 3 copies, with %arg% = vip

Queues a voucher in a player's Stash instead of handing over an item. The target may be online or any player who has joined the server before, so this is how you deliver a reward to someone who is offline. They claim it with /stash.

redeem

/voucher redeem WELCOME
/voucher redeem REFER Steve        # with an argument, if the code uses one

Players use this for codes. The code must be typed exactly, honouring case-sensitive when the code sets it.

preview

/voucher preview

Opens a paginated GUI listing every loaded voucher. Right-click a voucher to give yourself a copy, or left-click it for a per-voucher info menu. Handy for checking how a voucher's item, name, and lore actually render before handing it out.

reload

/voucher reload          # everything
/voucher reload <id>     # one file

Reloads every file in vouchers/ and codes/. If a file has a mistake (an unknown reward type, a bad material, an invalid expiry, a malformed condition), the reload reports it with the file name and the reason, and keeps loading the rest.

Pass an id to reload only the vouchers/<id>.yml and/or codes/<id>.yml file by that name, leaving every other loaded entry in place. This is handy for quick edits on a busy server. The id tab-completes from the loaded vouchers. A file that now fails to parse keeps its previously loaded version, so a typo never drops a working voucher.

import

/voucher import <source>     # e.g. /voucher import crazyvouchers

Imports another voucher plugin's configuration into ProVouchers files. The source is tab-completed from the plugins whose data is present. CrazyVouchers is built in; the importer is a pluggable framework so more sources can be added.

For CrazyVouchers it reads both vouchers (modern per-file and the legacy vouchers.yml) and codes (modern per-file and the legacy codes.yml), and writes each as a ProVouchers file: legacy & color codes convert to MiniMessage, {player} and {arg} become %player% and %arg%, give-items (including their enchantments, damage, and trim) become defined items, and commands, random and chance commands, sounds, fireworks, heads, cooldowns, world whitelists, usage limiters, permission whitelists, required placeholders, dye colors, the enabled toggle, and item models map to their ProVouchers equivalents. A disabled CrazyVouchers code keeps its enabled: false, and a code's own sound and firework become its redeem effects. Existing ids are never overwritten.

Every key with no ProVouchers equivalent is reported, never silently dropped, so a migration can be audited completely: preview-only visuals (display damage and trim), tooltip/item-model components, blacklist permissions, item enchantments, and the like each produce a line in the result. The full report is printed without truncation. Review the imported files, then adjust and /voucher reload.

resetuses

/voucher resetuses <id>           # everyone
/voucher resetuses <id> <player>  # one player

Clears the persistent use counters behind max-uses and uses-per-player (and a code's use limits). Run it after reconfiguring a capped voucher, or to let a specific player redeem again.

fromhand

/voucher fromhand <id>

Captures the item in your main hand as a new voucher: a confirm GUI shows the item rebuilt from its serialized form (exactly what the voucher will give, full fidelity), and confirming writes vouchers/<id>.yml and loads it immediately. Cancelling or closing the menu writes nothing.

doctor

/voucher doctor

Prints a quick health report: plugin version and server flavor, the storage backend and whether the pool is connected, how many vouchers and codes are loaded, which integrations were detected (economy, permissions, item providers, regions), the active locale and loaded languages, and whether metrics are on. Use it to confirm a fresh install or to diagnose a misconfiguration.

Bypass and utility permissions

PermissionEffect
provouchers.bypass.cooldownIgnore per-voucher redemption cooldowns.
provouchers.bypass.gamemodeRedeem in any game mode (creative and spectator are blocked by default).
provouchers.bypass.ownerRedeem an owner-only voucher belonging to another player.
provouchers.notifyReceive a staff alert when a duplicate voucher is detected.

Permission nodes you define

Conditions of type permission reference whatever node you choose, by convention under provouchers.use.<id>:

conditions:
  - type: permission
    permission: "provouchers.use.crate_key"

Grant that node to the players or groups who should be able to redeem the voucher. These are normal permissions you manage in your permissions plugin; they are not auto-created.

Redeeming items

Holding a voucher and right-clicking redeems it (main or off hand). The item is validated, checked for duplication, consumed, and the rewards are granted. Placing a voucher into an item frame is blocked, to keep it tied to its anti-dupe stamp.

On this page