Sueta

ProVouchers

1.5.0

Create vouchers with a powerful ecosystem of integrations, built to help your server stand out.

·Plugin
  1. 1.5.0latestv1.5.0last week
    Added
    - command-aliases in config.yml sets the extra names for /voucher (default vouchers). [] registers none; /voucher itself always works.
    Changed
    - /voucher no longer registers /pv, which PlayerVaults uses. Add pv to command-aliases to keep it. - Aliases for /voucher and /stash are trimmed and lower-cased; blank entries, entries containing spaces, and duplicates are ignored. - Activity metrics (redemptions, blocked duplicates, condition denials, Stash activity) report the count since the previous report instead of a running session total, so they no longer climb with server uptime. - effects.sound keys are checked at /voucher reload: a key that is not a valid sound key fails its voucher or code file instead of failing at redeem, and upper-case keys now play. - Storage takes queries only once its schema upgrades have finished. Opening storage is retried a few times over about 15 seconds, so servers sharing a database that start together both come up. If it still fails, everything that needs storage stays unavailable until it is fixed, instead of running against a half-upgraded database. - Published for Minecraft 26.2 and 26.3. The plugin still runs on 26.1 or newer. - /voucher doctor reports what metrics are actually doing: which providers started, the FastStats SDK version, whether it submits metrics, and whether error reports are sent. It previously showed only the metrics.enabled switch, which says nothing about a provider that failed to start or a server that opted out of FastStats. - The API documentation now states that VoucherPreRedeemEvent and VoucherRedeemEvent also fire for a Stash claim, where the item id is null, and that cancelling the pre-redeem event returns the claimed entries to the Stash. - Updated FastStats to 0.30.2, which anonymizes Discord webhook URLs in error reports.
    Fixed
    - A broken third-party plugin no longer stops ProVouchers from enabling. Checking for an integration searches every plugin on the server, so a plugin that failed to enable and had its jar closed made that check throw. The integration now counts as absent, with a warning naming the class, and a provider that cannot be built is skipped the same way. - Stash: claiming a card no longer deletes vouchers delivered after the menu was opened. Each delivery is stored on its own and the menu combines matching ones into one card, so a claim takes exactly the deliveries on that card. - Stash: concurrent deliveries of the same voucher no longer multiply later deliveries. - Stash: a claim interrupted by a logout restores its rewards, including a logout while the claim is still reaching storage, and Claim all no longer restores rewards that another claim already took. - Soulbound and crafting-station protection now also block number-key swaps, offhand swaps, and bundle placement into containers and stations. - Cooldowns can no longer be skipped by redeeming right after joining, or after moving between servers that share a database, before the player's stored cooldowns have loaded. Until they load, vouchers with a cooldown reply that they could not be verified and loading retries; while storage is unavailable, those vouchers stay unavailable rather than ignoring stored cooldowns. - Use limits (max-uses and uses-per-player) on vouchers and codes are reserved in storage before any reward is granted, so players redeeming at the same moment, on one server or on several sharing a database, can no longer exceed a limit, and simultaneous uses are no longer undercounted. - Logging out while a voucher or code is being verified no longer uses it up without a reward. An item voucher stays in the inventory until its reward is delivered, and a redeem that cannot be delivered gives back its use and does not mark a stamped voucher as redeemed. - Redeeming several copies of a voucher in quick succession can no longer grant extra rewards before its cooldown or use limit applies: while one redeem of a voucher is being verified, further clicks on that voucher are ignored. - A stamped voucher is no longer removed as a duplicate when storage failed while its unfinished redeem was being undone. Undoing it is retried, and until it succeeds the voucher replies that it could not be verified. - A voucher given to a player who logs out before it arrives is queued in their Stash, or logged when the Stash is disabled, instead of being lost. Player command and item: @name rewards that could not be delivered because the player logged out are logged. - A redeem effect that fails, such as a sound that cannot play, no longer stops the rest of a batch open or Stash claim from being granted. - A voucher icon or reward that uses a player head no longer fails with an internal error when its skin lookup fails immediately, such as for an unknown player name. - Redeems, Stash claims, and gives still in progress when the server stops are settled before storage closes: uses and anti-dupe claims are given back, Stash entries are put back, and undelivered gives are queued in the Stash.
    Migration
    - Use limits are counted in a new provouchers_use_totals table, created and filled from the recorded uses on first start. - Update every server that shares a database at the same time. An older version running alongside this one does not count uses in the new table, so global limits could be exceeded, and it can multiply Stash deliveries, because this version stores each delivery as its own row.
    6 downloads
  2. 1.4.0v1.4.0Jun 16, 2026
    Added
    - The Stash: virtual, itemless vouchers a player claims from a menu with /stash. A claim runs the voucher through the normal redeem pipeline (its conditions and effects), with no cooldown or use limit, and the entry is removed atomically so a reward is claimed at most once and never lost. - /voucher stashgive <player> <id> [amount] [argument]: queue a voucher in a player's Stash, for an online player or any who has joined before. - VoucherService.stash(uuid, id, amount): queue a virtual voucher from the API, for online or offline players. - stash.overflow: stash: a give that does not fit a player's inventory queues the remainder in their Stash instead of dropping the items. - stash.expire-after: Stash entries can lapse after a duration, swept automatically, with a live countdown on each card. - A join notification reports waiting rewards, a Claim all button takes everything at once, and stash.command-aliases / stash.title / stash.rows tune the menu. - discord reward: posts to a Discord webhook, given as an inline URL or an @name from the voucher's own discord-webhooks map. A named webhook is either a URL (the reward supplies the message) or a { url, payload } whose JSON payload template (embeds, username, ...) is rendered with placeholders resolved. Put it in a random-rewards set to announce only rare hits.
    Changed
    - redeem.left-click-preview now defaults to false. The left-click reward preview is experimental and unfinished, so it is opt-in until it is complete; servers that set the key explicitly are unaffected. - Updated FastStats to 0.26.1, HikariCP to 7.1.0, and the MariaDB JDBC driver to 3.5.9.
    Fixed
    - Shutdown is now best-effort: if one teardown step fails (for example a class that cannot load after the plugin jar was replaced under a running server), the remaining steps, including storage cleanup, still run.
    79 downloads
  3. 1.3.0v1.3.0Jun 14, 2026
    Added
    - Item appearance: voucher icons and defined items can carry enchantments, damage (durability), unbreakable, an armor trim, an item-model (1.21.4+), hide-tooltip, and a dye color (a named color, #RRGGBB, or r,g,b) on leather armor, potions, and maps. - enabled on vouchers and codes: set false to keep one loaded but refuse redeems. Distinct from a voucher's display-only unredeemable. - effects on codes: a sound and/or firework played to the redeemer on a successful code redeem, the same block vouchers use. - soulbound: bind a voucher to its holder so it cannot be dropped, stored, or traded. true enables every restriction, or toggle block-drop, block-containers, and bind-on-pickup individually. - auto-give.first-join in config.yml: grant listed vouchers the first time a player joins. - /voucher import <source>: import another voucher plugin's configuration into ProVouchers files. CrazyVouchers is built in (modern and legacy vouchers and codes); every key with no equivalent is reported, never silently dropped. - redeem.confirm-style: gui: two-step confirmation can use a clickable GUI instead of the chat prompt. - /voucher giveall [permission]: restrict a mass give to players holding a permission.
    14 downloads
  4. 1.2.0v1.2.0Jun 12, 2026
    Added
    - playtime, item, and advancement conditions. Playtime takes a duration ("2h"), item checks the inventory without consuming, advancement checks a completed advancement key. - active-from: vouchers and codes can start at a date, date-time, or instant. A plain date activates at the start of that day. - max-uses and uses-per-player on vouchers: persistent global and per-player redemption caps (-1 = unlimited, the default). Batch open caps at the remaining allowance and refunds the rest. - /voucher resetuses <id> [player]: clears the recorded use counters for a voucher or code. - cooldown.tiers in config.yml: permission-based cooldown multipliers via provouchers.cooldown.<tier>. The lowest held tier wins; 0 removes the cooldown. - xp reward type: "xp: 500" gives points, "xp: 30 levels" gives levels. The amount accepts %random%. - effects.firework: a firework on redeem with named or hex colors, a shape, and a flight power. Deals no damage. - items: map: define decorated items (name, lore, glow, custom or skull bases, model data) once and grant them with "item: @<name>". - /voucher fromhand <id>: captures the held item as a new voucher behind a confirm GUI. The preview is rebuilt from the serialized data, so the item shown is exactly what the voucher will give. - Bundled translations: German, French, Spanish, Polish, Danish, and Dutch ship alongside English. Players see their client language automatically.
    Changed
    - Updated FastStats to 0.26.0.
    19 downloads
  5. 1.1.0v1.1.0Jun 11, 2026
    Added
    - Localization: all plugin messages moved to lang/<code>.yml. Players see their client language when a matching file exists, otherwise locale.default. English fills in any missing keys. - two-step-authentication: redeeming requires a second click within redeem.confirm-window-seconds. Prompt overridable per voucher. - Reward preview: left-click a held voucher to see its loot and chances before redeeming. Controlled by redeem.left-click-preview. - /voucher doctor: prints version, server, Java runtime, storage backend and pool state, content counts, detected integrations, locale, and metrics. - /voucher reload <id>: reloads a single voucher or code file. A file that fails to parse keeps its loaded version. - Vouchers can no longer be used as crafting ingredients or placed into anvils, grindstones, smithing tables, looms, cartography tables, stonecutters, or brewing stands. - effects.sound: plays a sound on redeem, written as "key [volume] [pitch]". Silent during batch open. - %random:min-max:name%: a named roll resolves once per redeem and repeats the same value wherever the name is reused, so a reward can give an amount and announce that same amount. - %expiry%: renders the voucher's expiry in its name or lore as in 30d, on 2026-12-31, or never. - expiry accepts plain dates (2026-12-31, valid through the end of that day in server time) and zone-less date-times, alongside durations and ISO-8601 instants. - redeem.batch-open-quiet: batch open skips per-item messages, titles, and sounds. - anti-dupe.notify.enabled: toggles staff duplicate alerts. The alert message supports {world}.
    Changed
    - Placeholders are now %player%, %arg%, and %random:min-max%. The curly forms still work but are deprecated; /voucher reload warns when a file uses them. - Updated FastStats to 0.25.2.
    Fixed
    - Stackable vouchers from separate gives now stack with each other. The give time is stamped only when a relative expiry needs it.
    14 downloads
  6. 1.0.0v1.0.0Jun 10, 2026
    The first standalone release. ProVouchers no longer needs the Strata library: scheduling, text rendering, storage, the GUI, conditions, metrics, and every integration (Vault, LuckPerms, ItemsAdder, Oraxen, Nexo, HeadDatabase, WorldGuard) now ship inside the plugin. It installs as a single jar and runs on Paper, Folia, and Purpur 26.1+. 0.6.0 was never published; its work is included here.
    Added
    - Standalone install: one jar, no Strata. The connection pool and JDBC drivers are downloaded by Paper's library loader on first start. - Database storage on SQLite out of the box, or MySQL, MariaDB, or PostgreSQL for shared and networked setups. - Admin preview GUI (/voucher preview): a paginated browser of every loaded voucher. Right-click to give yourself one, left-click for a per-voucher info menu. - Batch open (batch-open: true): shift-right-click a stack to redeem all of it at once. Needs a stackable voucher with no cooldown. - Full-fidelity custom items: a voucher or reward item can be a serialized item that preserves enchants, name, lore, model data, attributes, and other components exactly. - Duplicate warning lore (anti-dupe.warning.enabled / anti-dupe.warning.text): mark a returned duplicate with a lore line to deter resale scams. - Dynamic tokens (%player%, {player}, {arg}, {random:min-max}) now resolve in a voucher's display name and lore, not just in rewards.
    Changed
    - Anti-dupe is now opt-in per voucher through a stackable flag (default true). A stackable voucher stacks freely and is not dupe-tracked. Setting stackable: false stamps each item with a unique id, recorded once on redeem, so duplicates are caught and those items do not stack. This replaces the old always-on batch/nonce scheme and fixes the stacking complaints. - The redeem event exposes a single uid in place of batchId and nonce. - Custom item references resolve strictly: a provider:id reference is served only by that provider, and an unknown provider prefix now fails at load instead of silently falling through.
    Migration
    - The schema upgrades in place on first start: a used-voucher table is added and the old stamp table is dropped. A pre-1.0.0 install is detected and its recorded schema version carried over, so migrations are not re-run. Vouchers minted before the upgrade redeem as ungoverned (they carry the old data, not a uid).
    13 downloads
  7. 0.5.0v0.5.0Jun 8, 2026
    Added
    - Command help menu: /voucher and /voucher help show a clickable, permission-filtered list of every subcommand with its syntax. - Comprehensive tab completion across /voucher: voucher ids on give/giveall, predefined amounts (1, 16, 32, 64), and online players. Codes are intentionally never suggested, so loaded code values are not leaked. - Usage metrics: configuration-shape charts (reward, condition, and item-provider distributions, count buckets, feature adoption, and which integrations are installed) and runtime counters (redemptions, voucher vs. code split, duplicates blocked, condition denials, and the most-granted reward), reported through bStats and FastStats and governed by the existing metrics.enabled switch. - Token amounts for item rewards: item: GOLD_INGOT {random:1-3} is resolved at redeem time, the same way currency already worked. - Optional integration dependencies declared in the plugin manifest (Vault, MiniPlaceholders, Nexo, Head Database) so server load order reflects every integration ProVouchers can use.
    Changed
    - Standardized command output: a consistent ProVouchers » prefix, a single palette, and uniform error, success, and usage messages across /voucher. - Requires Strata 0.10.0+ (previously 0.9.0+) for the new command-suggestion API.
    Fixed
    - Item reward amounts containing a token (such as {random:1-3}) no longer fail to load; they are now accepted and resolved at redeem time. - Giving a voucher to a target that matches no online player now reports a clear error instead of throwing. - Removed two no-op trailing argument slots from /voucher give and /voucher giveall. [0.5.0]: https://github.com/alazso/provouchers/releases/tag/v0.5.0
    15 downloads
  8. 0.4.0ProVouchers 0.4.0Jun 7, 2026

    ProVouchers 0.4.0

    Added
    - Persistent cooldowns: voucher cooldowns are now stored in the database and reloaded when a player joins, so they survive restarts. On a network sharing one database, a cooldown applies across all servers. - Player-head and custom-skull voucher items via a new item.skull block, with four sources: texture (base64), url, name, and uuid. Texture and URL are stable and need no lookup; name and UUID resolve a skin asynchronously. - HeadDatabase (Arcaniax) heads are supported through the existing custom: field and item: reward (for example custom: "headdatabase:7129"). - Public developer API: a new provouchers-api artifact (so.alaz.provouchers:provouchers-api) exposing a VoucherService (query vouchers and codes, programmatic give) through Bukkit's services manager. - Redeem events for other plugins: cancellable VoucherPreRedeemEvent and VoucherCodePreRedeemEvent to veto a redemption, and non-cancellable VoucherRedeemEvent and VoucherCodeRedeemEvent fired after a successful redeem.
    Changed
    - Now requires Strata 0.9.0 or newer (adds the ItemsAdder/Oraxen/Nexo/HeadDatabase item hooks and the vanilla skull builder used above). - Item creation is now fully asynchronous, so skull sources that resolve a skin from Mojang never block the server.
    Developer
    - provouchers-api is published to https://repo.alaz.so/releases. Add it as a compileOnly dependency; the runtime classes ship inside the plugin. - See the new Developer API documentation at https://alaz.so/provouchers/docs/developers.
    12 downloads
  9. 0.3.0ProVouchers 0.3.0-betaJun 6, 2026
    14 downloads

Similar projects

Plugin →