Improvements:
• The GUI has been completely adapted to the current DonutSMP design! (recreate ur plugin files)
New features:
• Optional playtime rewards: grant shards at a configurable interval while players are online (playtime-rewards in config).
• Optional daily login reward with configurable base amount and streak bonus (daily-login); streak stored in database.
• Optional AFK movement check: require players to stand still for X seconds before earning AFK shards (afk-require-no-move-seconds).
• Optional first kill of the day bonus: extra shards for a player’s first PvP kill each day (first-kill-of-day-bonus).
• Admin export/import: /perfshards export [csv|json] and /perfshards import <file> for balance backup and restore.
• Optional sound when gaining shards from AFK, kills, playtime, or daily login (sound-on-gain).
• Config option require-afk-region: when false, all players earn AFK shards everywhere; when true, only in AFK regions (or with gen.everywhere).
• Permission perfshards.gen.everywhere: when require-afk-region is true, players with this permission earn shards everywhere (e.g. for high ranks).
• PlaceholderAPI: added %perfshards_next_daily%, %perfshards_streak%, %perfshards_afk_rate%, %perfshards_top_N%, %perfshards_top_N_name%, %perfshards_top_N_value%.
Improvements:
• gen-nodes config keys now use underscores (e.g. perfshards_gen_5x) instead of dots so YAML does not treat them as nested paths; plugin converts to permission (e.g. perfshards.gen.5x) at runtime.
Bug fixes:
• Shop purchase commands (e.g. perfspawners give) are now executed on the global scheduler so they no longer throw "Dispatching command async" on Folia
• Spawners bought in the Shards shop are now given correctly after the fix above
New features:
• /afk now has a configurable cooldown (default 60 seconds; set to 0 to disable)
• New permissionperfshards.afk.bypassto skip the /afk cooldown (default: op)
• New messageafk-teleport-cooldownwhen the command is used while on cooldown
Bug fixes:
• Leaderboard GUI opening and inventory setup now run on the player’s region on Folia, preventing "wrong region" errors
• PlaceholderAPI expansion no longer errors when the database or leaderboard cache is null (e.g. during disable)
New features:
• Public API for other plugins: get balance, check, take (with callback), and give (with callback) Shards by UUID
• API is registered with Bukkit’s ServicesManager so plugins like PerfWithdraw can integrate without a hard dependency
- added PlaceholderAPI: %perfshards_balance%, %perfshards_balance_formatted%, %perfshards_rank%, %perfshards_leaderboard_N%
- Transaction log with /perfshards history <player>
- Booster system: personal (redeemable items) + global (admin command), multipliers stack
- /perfshards booster give|activate|list|status
- Global booster activation broadcasts to chat with activator name
