2 releases, newest first.
/voucher giveall <voucher> [amount] [-s]Hands a voucher to every online player in one command. Same grammar as /voucher give minus the target: the trailing [amount] [-s] pair is read in either order, and amount is the amount per player, never a pool split between them. An auto-claim voucher dispatches its rewards to everyone instead of minting items.
The pass never aborts part way. A player who cannot be served is counted and skipped, and the sender gets a summary at the end naming how many received and how many were skipped. -s suppresses every line, sender and receivers alike.
New permission snsimplevouchers.admin.giveall (default op, child of snsimplevouchers.admin).
give.drop-overflowControls what happens when the voucher items do not fit in the receiver's inventory.
give:
drop-overflow: truetrue (default, and what every give did before this version): the receiver keeps what fits and the rest drops at their feet, so nothing is ever lost.false: all-or-nothing. A receiver without room for the whole stack gets nothing, and the giver is told they were skipped. A partial delivery never happens, so a giver is never told they handed over 10 vouchers that turned into 4.The key applies to all three ways a voucher item reaches a player: /voucher give, the new /voucher giveall, and the give-on-click of /voucher open. Auto-claim vouchers are unaffected, since they dispatch rewards and never produce an item that could overflow.
messages.inventory-full, messages.give.inventory-full and the four messages.giveall.* lines merge into your language file on boot; your existing values and comments are untouched.
SnSimpleVouchers v2.0.0 - lightweight click-to-claim voucher items for Paper, defined one per YAML file.
Each voucher is its own file under plugins/SnSimpleVouchers/vouchers/, optionally grouped in one level of subfolders. A player right-clicks the item and its rewards are dispatched.
list runs every reward, weighted picks one by weight, random picks one uniformly.amount: consolidates a whole stack into ONE command execution on a single right-click: 64 vouchers are one eco give, not 64. Shift is not required. bulk.aggregate-by-category extends that to other ids in the same category folder that declare the identical reward list, summing their amounts into one dispatch.commands: can carry a condition: expression (e.g. "%player_level% >= 10 && %player_level% < 21"), resolved through PlaceholderAPI at claim time, so one voucher hands out a different reward to different players.auto-claim: true skips the physical item entirely and dispatches the rewards straight to the target player./voucher open browses categories and vouchers and hands them out on click, gated on snsimplevouchers.admin.give.basehead-<base64>./voucher requires snsimplevouchers.admin. Its aliases are /vouchers and /sv, configurable under command.aliases in config.yml.
| Command | Description |
|---|---|
/voucher help | Show the help menu |
/voucher reload | Reload config, language, menus and rescan voucher files |
/voucher debug | Toggle debug logging |
/voucher open | Open the paginated admin GUI |
/voucher give <player> <voucherId> [amount] [-s] | Give a voucher. [amount] and -s may be given in either order; -s suppresses the messages. |
snsimplevouchers.admin is the parent of every node below, so granting it alone gives full access. The root node is required, not just inherited.
| Permission | Default | Description |
|---|---|---|
snsimplevouchers.admin | OP | Full administrative access |
snsimplevouchers.admin.give | OP | /voucher give and the give-on-click button |
snsimplevouchers.admin.open | OP | /voucher open |
snsimplevouchers.admin.reload | OP | /voucher reload |
snsimplevouchers.admin.debug | OP | /voucher debug |
snsimplevouchers.admin.update | OP | Receives update notifications |
There is no player-facing node: claiming a voucher only requires holding one.
Everything under plugins/SnSimpleVouchers/ is yours: config.yml, lang/messages_en.yml, guis/categories.yml, guis/vouchers.yml and vouchers/*.yml. New keys are merged in on boot without touching your edits or your comments, so an update never resets a file. See vouchers/example.yml for every available field.
Java 21+, Paper 1.20.x or 1.21.x, SnLib, a valid Sn licence key in plugins/.Sn-License/license.yml, and outbound internet access from the server for the one-time startup licence check. PlaceholderAPI is optional and only needed for condition:.
Install SnLib first. This release declares depend: [SnLib], so a server without SnLib.jar in plugins/ refuses to load the plugin at all and logs Unknown dependency SnLib. Run a current SnLib: an older one already installed for another Sn plugin can sit below the API level this release needs.