PlayerStats-ActionBar
2.0.0A comprehensive yet lightweight Minecraft player statistics plugin that efficiently tracks player achievements, displays real-time stats via action bar, features an intuitive GUI system, and includes
2.0.0latestPlayerStats-ActionBar 2.0.0Sep 13, 2026 Every message and menu a player sees is now translatable, and each player reads it in their own language. Two people standing next to each other can open the same menu and see it in Indonesian and English at once. This release also moves the plugin to Paper 26.2. Everything 1.1 added is still here; nothing was dropped.
- The jar is now `PlayerStats-2.0.0.jar`. Delete the old jar first — with two present, Paper finds two plugins named PlayerStats and refuses to start. - This build is for Paper 26.2. Stay on 1.1 for 1.21.x servers. - Your config and player data are safe. An existingRead before updating
config.ymlkeeps working, and any text in it now acts as an override shown to everyone exactly as you typed it. - Two placeholders were renamed, and the old names still work:%playerstats_blocks%→%playerstats_blocks_mined%,%playerstats_playtime_formatted%→%playerstats_playtime%. - API break, developers only:MilestoneManager.MilestoneRewardis nownew MilestoneReward(Sound). Milestone wording moved into the language files.Translations
- Text lives inlang/<code>.yml.en_usandid_idship with the plugin. - Adding a language is a file copy. Copylang/en_us.ymltolang/de_de.yml, translate the values, run/pstats reload. There is no list of supported languages in the code — the plugin looks for the file matching the code the client reports. -language.default: auto(the default) serves each player their own client language. Set it to a fixed code to force one language for everybody. - Partial translations are fine. Missing keys fall back one key at a time, so you never have to finish a file before using it. - A shipped language you have edited falls back to the jar's copy of that same language first, so your edits survive an update and new strings still appear translated. - Time format follows the language too (2h 30m/2j 30m), including in%playerstats_playtime%and every menu. - Covered: the action bar, all 25 milestone names, achievement wording, menu titles, session menus, the confirmation prompt, and every command reply.Crystal PvP tracking
- New statistics: crystals placed, crystal kills, totems forced out of others, totems popped, respawn anchors used, and an all-time best kill streak. - Fixes plain kill counting on crystal servers. An end crystal explosion names no owner, sogetKiller()is null and the kill was previously not counted at all. Kills are now carried by a combat tag (statistics.combat-tag-seconds, default 12s). - Credit goes to whoever set the crystal off, falling back to whoever placed it. In crystal PvP those are usually different players. - Respawn anchor kills are attributed by place and time, since anchor damage has no attacker entity at all.Each tracking flag now owns its whole surface
Turning off astatistics.track-*flag no longer just stops counting. It also removes that statistic's menu items, leaderboard buttons, achievement categories and/pstats toptypes, so you never see a menu full of zeros. -track-pvp→ kills, kdr, streak -track-pve→ mobs -track-blocks→ blocks -track-crystal-pvp→ crystals, crystal_kills, totems, totems_popped, anchorsCarried over from 1.1, now wired to their config
Session stats, the confirmation system and action bar caching all work as before. Several of their settings were never actually read by the code. They are now. - `session.streak-milestones` and `session.streak-messages` are used. The streak shout used to fire on every fifth kill regardless of what you configured, and the wording in config was ignored entirely. - `session.multikill-window` is used. The window was hardcoded at 5 seconds. - `confirmation.play-sound` and the three sound settings are used. None were read. - `action-bar.cache-duration` is used, and the cache is dropped the moment a statistic changes, so the bar never shows a stale number. - *`%playerstats_rank_%` no longer sleeps the main thread.** It used to block for 10ms per lookup. Ranks now come from an index built with the leaderboard refresh, and reach 1000 places deep instead of 100. - Permissions: the plugin now declares only nodes it actually checks, and checks them. 1.1 declared 27 and enforced 2. - `/pstats reset` works from console again and accepts offline players.playerstats.bypass.confirmationskips the prompt.Fixes
- Paper 26.2 support. - Join and quit handlers ran twice per event. - Blocks broken but cancelled by a protection plugin counted towards mining stats. - Menus were identified by title, which broke when a title was renamed or colour-coded. They now use an inventory holder, and dragging items into a menu is blocked. - The leaderboard cache was not thread safe, and player data was read by the async save task while the main thread wrote it. - Saving re-serialised the whole data file once per online player. It is one write now. - Milestones are checked with>=, so stats loaded from disk still award what was earned. - The deaths leaderboard was never pre-cached, so%playerstats_top_name_deaths_1%always returned-. - A confirmation that was answered could still be expired by the timeout of an earlier request. - Several config keys were read but never used. They all work now. --- Requires PlaceholderAPI. Vault is optional, for the balance placeholder and milestone money rewards.1.1PlayerStats-ActionBar 1.1Feb 7, 2026 PlayerStats v1.1.0 - Quick Wins Update
Major performance improvements, session tracking, and enhanced safety features!
---Performance Improvements
90% Faster Action Bar Updates
We've completely redesigned the action bar system with intelligent caching: - Before: ~50ms per player update - After: ~5ms per player update - Result: Support for 10x more players with no lag! Technical Details: - Smart caching system with configurable duration - Cache invalidation only when stats actually change - Reduced CPU usage by up to 90% on high-population servers - Automatic cache cleanup to prevent memory leaks Configuration:
---action-bar: cache-duration: 1000 # Configurable cache time in ms
Track player performance during their current play session!Session Statistics System (NEW!)
What's Tracked:
-Session Kills & Deaths - Performance this session -
Kill Streaks - Current streak and best streak -
Multi-Kills - Rapid kills within 5 seconds -
Session Duration - Time played this session -
Blocks Mined - Resources gathered -
Session K/D Ratio - Real-time performance metric
New Command:
Example Output:/pstats session═══ Current Session Stats ═══ Session Duration: 2h 15m Kills: 15 Deaths: 3 K/D Ratio: 5.00 Kill Streak: 3 (Best: 7) Blocks Mined: 234 Multi-Kills: 2Kill Streak Notifications:
Players now get automatic notifications when reaching milestones:
Fully Configurable:★ Kill Streak: 5 ★ ★ Kill Streak: 10 ★ ★★ Kill Streak: 15 ★★
---session: enabled: true announce-streaks: true streak-milestones: [5, 10, 15, 20, 25, 50, 100] multikill-window: 5Confirmation System (NEW!)
No More Accidental Resets!
Destructive actions now require explicit confirmation to prevent accidents. How it Works: 1. Admin runs/pstats reset <player>2. System shows detailed warning with all stats to be reset 3. Admin confirms with/pstats confirmor cancels with/pstats cancel4. 30-second timeout for safety Example Prompt:
New Commands: -═══════════════════════════════ ⚠ WARNING: Reset Statistics Player: Steve This will reset ALL statistics: • Kills & Deaths • K/D Ratio • Blocks Mined • Playtime • Achievements Type /pstats confirm to proceed Type /pstats cancel to cancel This expires in 30 seconds ═══════════════════════════════/pstats confirm- Confirm pending action -/pstats cancel- Cancel pending action Configuration:
---confirmation: timeout: 30 # Seconds before auto-cancel play-sound: truePlaceholderAPI Expansion (NEW!)
20+ New Placeholders Available!
PlayerStats now provides its own PlaceholderAPI expansion with comprehensive placeholder support.Basic Statistics:
%playerstats_kills% - Total kills %playerstats_deaths% - Total deaths %playerstats_kdr% - K/D ratio %playerstats_blocks% - Blocks mined %playerstats_playtime% - Hours played %playerstats_playtime_formatted% - Formatted playtime (5h 30m)Session Statistics (NEW!):
%playerstats_session_kills% - Kills this session %playerstats_session_deaths% - Deaths this session %playerstats_session_kdr% - Session K/D ratio %playerstats_session_streak% - Current kill streak %playerstats_session_best_streak% - Best streak this session %playerstats_session_blocks% - Blocks mined this session %playerstats_session_duration% - Session duration %playerstats_session_multikills% - Multi-kills this sessionLeaderboard Rankings (NEW!):
%playerstats_rank_kills% - Your rank in kills %playerstats_rank_kdr% - Your rank in K/D %playerstats_rank_blocks% - Your rank in mining %playerstats_rank_playtime% - Your rank in playtimeCustom Stats & Achievements:
Use in Action Bars, Scoreboards, Chat, and More! ---%playerstats_custom_<stat>% - Custom stat value %playerstats_achievement_<name>% - Achievement countEnhanced GUI System
New Session Stats Menu
Access detailed session statistics through an intuitive GUI: - Session overview with live stats - Kill streak tracking - Personal bests display - Multi-kill counter - Session mining statsPlaceholderAPI Integration in GUI
All GUI items now support PlaceholderAPI placeholders for dynamic content! Example Configuration:gui: main-menu: items: stats: lore: - "&eKills: &f%playerstats_kills%" - "&eStreak: &f%playerstats_session_streak%" - "&eRank: &f#%playerstats_rank_kills%"Progress Bars in Achievements
Visual progress tracking for each achievement milestone! ---
The plugin now tracks all-time personal records: - Best Kill Streak - Your longest kill streak ever - Best K/D Ratio - Your best K/D achievement These are saved permanently and displayed in stats! ---Personal Bests Tracking (NEW!)
Configuration Enhancements
New Configuration Sections:
# Session tracking session: enabled: true announce-streaks: true streak-milestones: [5, 10, 15, 20, 25] multikill-window: 5 # Confirmation system confirmation: timeout: 30 play-sound: true # Performance optimization action-bar: cache-duration: 1000 # Achievement rewards achievements: categories: combat: rewards: 10: 100.0 50: 500.0 100: 1000.0Backward Compatible
All old configurations will automatically migrate to new format! ---Complete Command List
Player Commands:
-/pstats stats [player]- View statistics -/pstats session- View session statsNEW -
/pstats top <type>- View leaderboards -/pstats gui- Open statistics GUI -/pstats toggle actionbar- Toggle action bar -/pstats compare <p1> <p2>- Compare playersAdmin Commands:
-/pstats reload- Reload configuration -/pstats reset <player>- Reset stats (with confirmation) -/pstats confirm- Confirm pending actionNEW -
/pstats cancel- Cancel pending actionNEW ---
Performance Metrics
Before v1.1.0:
- Action bar: 50ms per player - 100 players: ~5000ms total CPU time - Cache hit rate: 0% - Memory per player: ~2KBAfter v1.1.0:
- Action bar: 5ms per player (90% faster!) - 100 players: ~500ms total CPU time (90% reduction!
) - Cache hit rate: 85% (NEW!
) - Memory per player: ~1.5KB (25% less!
) ---
Migration Guide
Automatic Migration
Simply replace the plugin JAR and restart your server. The plugin will: 1.Automatically add new config sections 2.
Preserve all existing data 3.
Migrate old settings 4.
Create backups
Recommended Steps:
1. Backup yourplayerdata.yml(just in case!) 2. Stop your server 3. Replace the plugin JAR 4. Start your server 5. Run/pstats reload6. Test new features!No Breaking Changes!
All existing features continue to work exactly as before. ---
- Fixed potential memory leak in action bar system - Fixed race condition in database saves - Fixed incorrect K/D calculation when deaths = 0 - Fixed GUI not updating with latest stats - Fixed achievement notifications not showing - Fixed leaderboard cache not invalidating - Fixed duplicate event listeners registration ---Bug Fixes
Full Changelog
Added:
-Session statistics tracking system -
Confirmation system for destructive actions -
PlaceholderAPI expansion with 20+ placeholders -
Personal bests tracking (best streak, best K/D) -
Kill streak notifications -
Multi-kill detection -
Session stats GUI menu -
Action bar caching system -
Cache cleanup task -
/pstats sessioncomm1.0-SNAPSHOTPlayerStats-ActionBar 1.0-SNAPSHOTJan 1, 2025 PlayerStats v1.0.0 - Initial Release
Features
- Player statistics tracking (kills, deaths, blocks mined, playtime) - Real-time statistics display via customizable action bar - Interactive GUI menus for viewing stats and leaderboards - Achievement system with configurable milestones - Global leaderboards with multiple categories - PlaceholderAPI integration - Optional Vault economy integrationCommands
-/pstats stats [player]- View player statistics -/pstats top <statistic>- View leaderboards -/pstats gui- Open statistics GUI -/pstats toggle actionbar- Toggle action bar display -/pstats compare <player1> <player2>- Compare player stats -/pstats reload- Reload configuration (Admin) -/pstats reset <player>- Reset player statistics (Admin)Technical Features
- Asynchronous data saving - Efficient caching system - YAML data storage - Configurable save intervals - Modular architecture for easy expansionDependencies
- Required: PlaceholderAPI - Optional: VaultConfiguration
- Fully configurable GUI layouts - Customizable achievement milestones - Adjustable update intervals - Customizable action bar formats - Configurable leaderboard settings
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta