Track money, kills, deaths, mobs, blocks, playtime, shop spend/sell, and shards in a database, show category hub and paged top GUIs with optional search and refresh, and open a per-player stats inventory—all configurable, MiniMessage-based, with optional PlaceholderAPI lines for holograms and signs. Paper and Folia 1.21 - 26.x
Support
Report bugs and get support here: https://discord.gg/VvM6k2eBDa
Features
• Folia support – runs on Folia-compatible Paper builds
• Hub & detail GUIs –
gui/leaderboards-gui.yml: category hub, per-stat boards with paging, optional row filler, refresh to reload that board from cache/DB, optional self preview head, optional sign search to filter names (sign line template in search-sign in config.yml)• Stats inventory –
/stats opens gui/stats-gui.yml with per-stat tiles; optional filler background via filler.enabled• SQLite or MySQL – HikariCP pool; WAL SQLite defaults for lighter write contention
• Configurable categories – enable/disable and order for each leaderboard type in
config.yml• Caching & limits – refresh interval, max top entries, compact number formatting for large values
• Vault balance – economy balance is synced into the stats table on an interval for the money leaderboard
• Shop & sell tracking – optional hooks for ShopGUI+ and EconomyShopGUI (buy → money spent, sell → sell revenue); optional PerfSell soft hook for
/sell revenue• PerfShards – optional shard totals sync into the leaderboard database when PerfShards is present
• Vanilla stats sync – periodic pull of vanilla player statistics into the DB (interval and batch size configurable)
• Admin tools – reload, inspect raw stats text, one-shot vanilla-to-DB migration, destructive resets with a short double-confirm window
Placeholders
%perfleaderboards_kills% – your kill count
%perfleaderboards_deaths% – your death count
%perfleaderboards_playtime% – your playtime (formatted)
%perfleaderboards_playtime_seconds% – your playtime in seconds
%perfleaderboards_shards% – your shard balance
%perfleaderboards_mobs_killed% – mobs you have killed
%perfleaderboards_blocks_broken% – blocks you have broken
%perfleaderboards_blocks_placed% – blocks you have placed
%perfleaderboards_money% – your money balance (formatted)
%perfleaderboards_sell% – money earned via /sell
%perfleaderboards_money-spent-on-shop% – money spent in shops
%perfleaderboards_rank_(stat)% – your rank for a category (e.g. rank_kills, rank_deaths, rank_playtime)
%perfleaderboards_top_(category)_(rank)_name% – top player name (e.g. top_kills_1_name)
%perfleaderboards_top_(category)_(rank)_value% – top player value (e.g. top_kills_1_value)
%perfleaderboards_top_(category)_(rank)_uuid% – top player UUID (e.g. top_kills_3_uuid)
Commands
/leaderboards – Open the category hub GUI (perfleaderboards.use)
/leaderboards (category) [page] – Open a specific leaderboard (category id, optional page) (perfleaderboards.use)
/stats – Open your stats GUI (perfleaderboards.use)
/stats (playername) – Open another player’s stats GUI (perfleaderboards.use)
/perfleaderboards reload – Reload config, messages, GUIs, and reconnect the database stack (perfleaderboards.admin)
/perfleaderboards help – Show admin usage (perfleaderboards.admin)
/perfleaderboards stats (player) – Print that player’s stored stats summary in chat (perfleaderboards.admin)
/perfleaderboards migrate stats – Import vanilla statistics into the database for discovered players (perfleaderboards.admin)
/perfleaderboards reset all – Wipe all leaderboard rows after running the same command again within the confirmation window (perfleaderboards.admin)
/perfleaderboards reset player (player) – Reset all stats for one player after confirmation (perfleaderboards.admin)
/perfleaderboards reset player (player) (stat-id) – Reset one stat column for a player after confirmation; (stat-id) matches leaderboard ids such as money, kills, shards (perfleaderboards.admin)
Database
• SQLite
• MySQL
