ProVouchersСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачать
ВЕРСИИ (9)
release
v1.5.0
1.5.019 окт. 2026 г.16Minecraft: 26.1, 26.1.1, 26.1.2, 26.2, 26.3folia, paper, purpur
Что нового
### 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.
release
v1.4.0
1.4.016 июн. 2026 г.81Minecraft: 26.1, 26.1.1, 26.1.2folia, paper, purpur
Что нового
### 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.
release
v1.3.0
1.3.014 июн. 2026 г.18Minecraft: 26.1, 26.1.1, 26.1.2folia, paper, purpur
Что нового
### 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.
release
v1.2.0
1.2.012 июн. 2026 г.21Minecraft: 26.1, 26.1.1, 26.1.2folia, paper, purpur
Что нового
### 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.
release
v1.1.0
1.1.011 июн. 2026 г.16Minecraft: 26.1, 26.1.1, 26.1.2folia, paper, purpur
Что нового
### 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.
release
v1.0.0
1.0.010 июн. 2026 г.13Minecraft: 26.1, 26.1.1, 26.1.2folia, paper, purpur
Что нового
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`).
beta
v0.5.0
0.5.08 июн. 2026 г.19Minecraft: 26.1, 26.1.1, 26.1.2folia, paper, purpur
Что нового
### 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
beta
ProVouchers 0.4.0
0.4.07 июн. 2026 г.14Minecraft: 26.1, 26.1.1, 26.1.2folia, paper, purpur
Что нового
## 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.
beta
ProVouchers 0.3.0-beta
0.3.06 июн. 2026 г.16Minecraft: 26.1, 26.1.1, 26.1.2folia, paper, purpur