2 releases, newest first.
{rango} now resolves PlaceholderAPI for the redeeming player. A rank whose display-name is itself a PlaceholderAPI token - display-name: '%snrankperks_prefix%' - reached chat as literal text at both places the rank name is rendered. Both are fixed:
messages.redeem-broadcast): the announcement had no player to resolve against. The plain broadcast delivers with a null viewer, and a player-bound expansion placeholder has no answer for a null requester, so the token survived verbatim. The announcement now names the redeeming player as the broadcast subject (SnLib 1.34.0): PlaceholderAPI resolves against them once and every recipient sees their value.message: lines: PlaceholderAPI ran on the configured lines first and {player} / {rango} were spliced in afterwards, so a token carried by the display name was inserted after the PAPI pass. The pairs now travel into the config read ahead of PlaceholderAPI (order: locals, then PAPI), so a display name that is a token resolves in the private message too.display-name accepting PlaceholderAPI is now documented in config.yml, the README and the GitBook page.
Built against SnLib 1.34.0, API level 21. The plugin refuses to enable on an older SnLib and says so in the console with the API level handshake message - update SnLib.jar first (a full restart, never a /reload).
A one-time, rank-based reclaim system built on SnLib. Every entry under ranks: names a Vault
permission group; a player who belongs to that group can redeem that rank's reward exactly
once, ever. /reclaim redeems every qualifying unclaimed rank at once.
SnLib.jar in plugins/. Updating SnLib always needs a full restart, never a reload.plugins/.Sn-License/license.yml (bundle mode), not in the
plugin's own folder - a server already running another bundle plugin needs nothing new.| Command | Description |
|---|---|
/reclaim (/rc) | Redeem every reclaim you have available |
/reclaim reset <player> | Wipe a player's claims so they can claim again |
/reclaim enable | Enable redemptions globally |
/reclaim disable | Disable redemptions globally (season lock) |
/reclaim status | Show whether redemptions are enabled |
/reclaim reload | Reload the configuration |
/reclaim help | Paginated, permission-filtered help |
/reclaim debug | Toggle runtime debug output |
The admin subcommands are deliberately NOT nested under /reclaim admin, so macros, signs and
console scripts keep working.
| Permission | Default | Description |
|---|---|---|
snreclaim.use | true | Redeem your available reclaims |
snreclaim.admin | OP | Parent node: grants every admin action below |
snreclaim.admin.reset | OP | /reclaim reset <player> |
snreclaim.admin.manage | OP | /reclaim enable, disable |
snreclaim.admin.status | OP | /reclaim status (read-only, grantable on its own) |
snreclaim.admin.reload | OP | /reclaim reload |
snreclaim.admin.debug | OP | /reclaim debug |
snreclaim.admin.update | OP | Receive update notifications |
config.yml holds redeem.*, join-notify.*, database.*, command.aliases and the
ranks: table. SnLib merges new keys in on boot and preserves your values and comments; no
config-version key exists. The ranks: section is owner-extensible: entries you delete
stay deleted.command.aliases adds aliases. It cannot take away /rc, which plugin.yml registers
at load time.lang/messages_en.yml. Set lang: in config.yml to load a
different lang/messages_<code>.yml.database.file, default data.db) in the table
snreclaim_claims. database.type: mysql is supported.snreclaim.admin.update./reclaim and /reclaim reset report their failure paths instead of answering with silence.