NDPlayerStats
1.5.3✨ Track and display player stats – kills, deaths, killstreak, KD ratio, play time, and more features ✨
1.5.3latestNDPlayerStats 1.5.3Sep 25, 2026 Fixed
* Leaderboard "Total players" now matches the actual count. * Empty leaderboard pages now show a message. * K/D leaderboard no longer includes players with 0 kills. * Rank now matches the leaderboard (requires at least 1 kill). * Leaderboards no longer include players with 0 values. * YAML and SQL now behave the same. * Hardcoded leaderboard messages moved tomessages.yml. * Update check no longer spams the console. * Update check no longer sends an HTTP request on every OP join (cached for 1 hour). * Update message now shows the number of missing versions. */ndps updatenow uses the same message as on join.Added
*/leaderboard playtime— new leaderboard mode by play time. <details> <summary>config.yml</summary> ```NDPlayerStats Configuration v1.5.3
Author: Kubass1 - https://kubass.cz/
IMPORTANT: Changing database type requires server restart!
Edit this file, save it, then restart the server.
============================================================
DATABASE SETTINGS
============================================================
database: # Database type: YAML, MYSQL, or SQLITE #WARNING: Changing this requires server restart! type: YAML # SQLite settings (only used when type: SQLITE) sqlite: # Name of the SQLite database file filename: database.db # MySQL settings (only used when type: MYSQL) mysql: # MySQL server address host: localhost # MySQL server port port: 3306 # Name of the database to use database: mc_server # Database username username: root # Database password password: '' # Prefix for all table names (useful for multiple plugins sharing one database) table-prefix: ndps_ # Enable SSL for MySQL connection ssl: false
============================================================
UPDATE CHECKER
============================================================
Enable or disable automatic update checking
check-update: true============================================================
LEADERBOARD SETTINGS
============================================================
leaderboard: # Enable or disable the leaderboard feature enabled: true # How many players to show in the leaderboard size: 10 # How often to auto-update leaderboard cache in seconds (0 = disabled) update-interval: 60 # Maximum position for placeholders (e.g. %ndplayerstats_kills_100%) max-position: 100 # Default mode for /leaderboard: "kills", "kd" or "playtime" default-mode: kills # Custom colors for each rank position colors: '1': '&6' # #1 - Gold '2': '&7' # #2 - Silver '3': '&8' # #3 - Bronze '4': '&e' # #4 - Yellow '5': '&e' # #5 - Yellow '6': '&e' # #6 - Yellow '7': '&e' # #7 - Yellow '8': '&e' # #8 - Yellow '9': '&e' # #9 - Yellow '10': '&e' # #10 - Yellow others: '&f' # All other ranks - White============================================================
RANK SETTINGS
============================================================
ranks: # Enable or disable the ranking system completely enabled: true # Show [Unranked] for players with no stats show-unranked: true # Text to display for unranked players unranked-text: Unranked # Color for unranked text unranked-color: '&7' # Maximum rank number to display (ranks above this will show as 999+) max-display-rank: 999 # Show [999+] for ranks above max-display-rank show-max-plus: true # Text for ranks above max-display-rank max-plus-text: 999+ # Color for max-plus text max-plus-color: '&8' # Minimum kills required to get a rank minimum-kills: 0============================================================
ADMIN COMMAND SETTINGS
============================================================
admin-command: # Allow /ndps lookup to work for offline players lookup-offline-players: true============================================================
STATS COMMAND (/stats)
============================================================
All placeholders available for /stats command:
{player} - Player name
{kills} - Total kills
{deaths} - Total deaths
{pvp_kills} - PvP kills
{pve_kills} - PvE kills
{pvp_deaths} - PvP deaths
{pve_deaths} - PvE deaths
{kd} - K/D Ratio (formatted with 2 decimals)
{pvp_kd} - PvP K/D Ratio
{pve_kd} - PvE K/D Ratio
{killstreak} - Current killstreak
{rank} - Player rank (e.g., #5 or "Unranked")
{playtime} - Formatted play time (e.g., "2d 5h 30m")
stats-command: 1: "&6&l{player}'s Statistics" 2: "&7══════════════════════════" 3: "&7Kills: &e{pvp_kills}" 4: "&7Deaths: &e{deaths}" 5: "&7K/D Ratio: &e{kd}" 6: "&7Killstreak: &e{killstreak}" 7: "&7Rank: &e{rank}" 8: "&7Play Time: &e{playtime}" 9: "&7══════════════════════════"Text for players without a rank
stats-unranked: "Unranked (no stats)"============================================================
LEADERBOARD COMMAND (/leaderboard)
============================================================
All placeholders available for leaderboard:
{size} - Number of players per page
{page} - Current page number
{total} - Total number of pages
{total_players} - Total number of players with stats
{rank} - Player rank position
{color} - Color based on rank position (from config)
{player} - Player name
{kills} - Number of kills
{kd} - K/D Ratio (formatted with 2 decimals)
{playtime} - Formatted play time (e.g., "2d 5h 30m")
{mode} - Current mode (kills, kd or playtime)
leaderboard-kills-command: 1: "&8&m &r &6&lTop {size} Players (Kills) - Page {page}/{total} &r &8&m " 2: "&7{rank}. {color}{player} &8- &a{kills} kills" 3: "&7Showing page {page} of {total} (Total: {total_players} players)" 4: "&7Use /leaderboard kills <page> for more" leaderboard-kd-command: 1: "&8&m &r &6&lTop {size} Players (K/D) - Page {page}/{total} &r &8&m " 2: "&7{rank}. {color}{player} &8- &a{kd} K/D" 3: "&7Showing page {page} of {total} (Total: {total_players} players)" 4: "&7Use /leaderboard kd <page> for more" leaderboard-playtime-command: 1: "&8&m &r &6&lTop {size} Players (Playtime) - Page {page}/{total} &r &8&m " 2: "&7{rank}. {color}{player} &8- &a{playtime}" 3: "&7Showing page {page} of {total} (Total: {total_players} players)" 4: "&7Use /leaderboard playtime <page> for more"Leaderboard status messages
leaderboard-disabled: "{prefix}&cThe leaderboard is currently disabled!" leaderboard-no-players: "&7No players with statistics yet!"============================================================
ADMIN LOOKUP COMMAND (/ndps lookup)
============================================================
All placeholders available for /ndps lookup:
{player} - Player name
{uuid} - Player's UUID
{kills} - Total kills
{deaths} - Total deaths
{pvp_kills} - PvP kills
{pve_kills} - PvE kills
{pvp_deaths} - PvP deaths
{pve_deaths} - PvE deaths
{kd} - K/D Ratio (formatted with 2 decimals)
{pvp_kd} - PvP K/D Ratio
{pve_kd} - PvE K/D Ratio
{killstreak} - Current killstreak
{highest_killstreak} - Highest killstreak
{playtime} - Formatted play time
{rank} - Player rank (e.g., #5 or "Unranked")
admin-lookup-command: 1: "&6=== {player}'s Stats ===" 2: "&eUUID: &f{uuid}" 3: "&eKills: &f{pvp_kills}" 4: "&eDeaths: &f{deaths}" 5: "&eK/D: &f{kd}" 6: "&eKillstreak: &f{killstreak}" 7: "&eHighest Killstreak: &f{highest_killstreak}" 8: "&ePlay Time: &f{playtime}" 9: "&eRank: &f{rank}" 10: "&7══════════════════════════"============================================================
STATISTICS TRACKING
============================================================
stats: # Track total play time for each player track-play-time: true # Track PvP kills separately (kills against players) track-pvp-kills: true # Track PvE kills separately (kills against mobs/1.5.2NDPlayerStats 1.5.2Sep 20, 2026 Fixed
* K/D leaderboard now shows players in the correct order. * Leaderboard pagination (pages 2 and 3) now displays the correct players. * YAML stats are now saved to disk immediately (no more data loss on crash). * Fixed server lag caused by the playtime saver. * Fixed server lag when a player joins. * Fixed server lag when showing stats with MySQL/SQLite. * Anti-kill-abuse protection can no longer be bypassed by leaving the server. * PlaceholderAPI now works correctly for names with an underscore (e.g.,John_Doe). * Fixed server lag when resetting all stats (YAML). * Database reconnection is now immediate (no more 6-second wait). * Database no longer tries to reconnect multiple times at once.Added
* Added support for version 26.3.1.5.1NDPlayerStats 1.5.1Jul 18, 2026 New Features
- /ndps lookup <player> - Now works on offline players (can be disabled in config.yml) - Better configuration organization - All command formatting moved from messages.yml to config.ymlChanges
-/statscommand formatting moved from messages.yml to config.yml -/leaderboardsplit into separate sections for kills and kd in config -/ndps lookupformatting added to config.yml (fully customizable) - Offline player lookup for/ndps lookupis configurable in config.yml <details> <summary>config.yml</summary> ```NDPlayerStats Configuration v1.5.1
Author: Kubass1 - https://kubass.cz/
IMPORTANT: Changing database type requires server restart!
Edit this file, save it, then restart the server.
============================================================
DATABASE SETTINGS
============================================================
database: # Database type: YAML, MYSQL, or SQLITE #WARNING: Changing this requires server restart! type: YAML # SQLite settings (only used when type: SQLITE) sqlite: # Name of the SQLite database file filename: database.db # MySQL settings (only used when type: MYSQL) mysql: # MySQL server address host: localhost # MySQL server port port: 3306 # Name of the database to use database: mc_server # Database username username: root # Database password password: '' # Prefix for all table names (useful for multiple plugins sharing one database) table-prefix: ndps_ # Enable SSL for MySQL connection ssl: false
============================================================
UPDATE CHECKER
============================================================
Enable or disable automatic update checking
check-update: true============================================================
LEADERBOARD SETTINGS
============================================================
leaderboard: # Enable or disable the leaderboard feature enabled: true # How many players to show in the leaderboard size: 10 # How often to auto-update leaderboard cache in seconds (0 = disabled) update-interval: 60 # Maximum position for placeholders (e.g. %ndplayerstats_kills_100%) max-position: 100 # Default mode for /leaderboard: "kills" or "kd" default-mode: kills # Custom colors for each rank position colors: '1': '&6' # #1 - Gold '2': '&7' # #2 - Silver '3': '&8' # #3 - Bronze '4': '&e' # #4 - Yellow '5': '&e' # #5 - Yellow '6': '&e' # #6 - Yellow '7': '&e' # #7 - Yellow '8': '&e' # #8 - Yellow '9': '&e' # #9 - Yellow '10': '&e' # #10 - Yellow others: '&f' # All other ranks - White============================================================
RANK SETTINGS
============================================================
ranks: # Enable or disable the ranking system completely enabled: true # Show [Unranked] for players with no stats show-unranked: true # Text to display for unranked players unranked-text: Unranked # Color for unranked text unranked-color: '&7' # Maximum rank number to display (ranks above this will show as 999+) max-display-rank: 999 # Show [999+] for ranks above max-display-rank show-max-plus: true # Text for ranks above max-display-rank max-plus-text: 999+ # Color for max-plus text max-plus-color: '&8' # Minimum kills required to get a rank minimum-kills: 0============================================================
ADMIN COMMAND SETTINGS
============================================================
admin-command: # Allow /ndps lookup to work for offline players lookup-offline-players: true============================================================
STATS COMMAND (/stats)
============================================================
All placeholders available for /stats command:
{player} - Player name
{kills} - Total kills
{deaths} - Total deaths
{pvp_kills} - PvP kills
{pve_kills} - PvE kills
{pvp_deaths} - PvP deaths
{pve_deaths} - PvE deaths
{kd} - K/D Ratio (formatted with 2 decimals)
{pvp_kd} - PvP K/D Ratio
{pve_kd} - PvE K/D Ratio
{killstreak} - Current killstreak
{rank} - Player rank (e.g., #5 or "Unranked")
{playtime} - Formatted play time (e.g., "2d 5h 30m")
stats-command: 1: "&6&l{player}'s Statistics" 2: "&7══════════════════════════" 3: "&7Kills: &e{kills}" 4: "&7Deaths: &e{deaths}" 5: "&7K/D Ratio: &e{kd}" 6: "&7Killstreak: &e{killstreak}" 7: "&7Rank: &e{rank}" 8: "&7Play Time: &e{playtime}" 9: "&7══════════════════════════"Text for players without a rank
stats-unranked: "Unranked (no stats)"============================================================
LEADERBOARD COMMAND (/leaderboard)
============================================================
All placeholders available for leaderboard:
{size} - Number of players per page
{page} - Current page number
{total} - Total number of pages
{total_players} - Total number of players with stats
{rank} - Player rank position
{color} - Color based on rank position (from config)
{player} - Player name
{kills} - Number of kills
{kd} - K/D Ratio (formatted with 2 decimals)
{mode} - Current mode (kills or kd)
leaderboard-kills-command: 1: "&8&m &r &6&lTop {size} Players (Kills) - Page {page}/{total} &r &8&m " 2: "&7{rank}. {color}{player} &8- &a{kills} kills" 3: "&7Showing page {page} of {total} (Total: {total_players} players)" 4: "&7Use /leaderboard kills <page> for more" leaderboard-kd-command: 1: "&8&m &r &6&lTop {size} Players (K/D) - Page {page}/{total} &r &8&m " 2: "&7{rank}. {color}{player} &8- &a{kd} K/D" 3: "&7Showing page {page} of {total} (Total: {total_players} players)" 4: "&7Use /leaderboard kd <page> for more"Leaderboard status messages
leaderboard-disabled: "{prefix}&cThe leaderboard is currently disabled!" leaderboard-no-players: "&7No players with statistics yet!"============================================================
ADMIN LOOKUP COMMAND (/ndps lookup)
============================================================
All placeholders available for /ndps lookup:
{player} - Player name
{uuid} - Player's UUID
{kills} - Total kills
{deaths} - Total deaths
{pvp_kills} - PvP kills
{pve_kills} - PvE kills
{pvp_deaths} - PvP deaths
{pve_deaths} - PvE deaths
{kd} - K/D Ratio (formatted with 2 decimals)
{pvp_kd} - PvP K/D Ratio
{pve_kd} - PvE K/D Ratio
{killstreak} - Current killstreak
{highest_killstreak} - Highest killstreak
{playtime} - Formatted play time
{rank} - Player rank (e.g., #5 or "Unranked")
admin-lookup-command: 1: "&6=== {player}'s Stats ===" 2: "&eUUID: &f{uuid}" 3: "&eKills: &f{kills}" 4: "&eDeaths: &f{deaths}" 5: "&eK/D: &f{kd}" 6: "&eKillstreak: &f{killstreak}" 7: "&eHighest Killstreak: &f{highest_killstreak}" 8: "&ePlay Time: &f{playtime}" 9: "&eRank: &f{rank}" 10: "&7══════════════════════════"============================================================
STATISTICS TRACKING
============================================================
stats: # Track total play time for each player track-play-time: true # Track PvP kills separately (kills against players) track-pvp-kills: true # Track PvE kills separately (kills against mobs/animals) track-pve-kills: true # Track the highest killstreak a player has achieved track-highest-killstreak: true # Death tracking settings death-tracking: # Enable or disable death tracking completely enabled: true # What types of deaths to count count-pvp-deaths: true # Killed by another player count-pve-deaths: true # Killed by mobs/animals count-environmental-deaths: true # Fall damage, fire, lava, etc. count-void-deaths: true # Falling into the void count-suicide-deaths: true # Self-inflicted deaths (e.g. /kill) # World restr1.5.0NDPlayerStats 1.5.0Jul 17, 2026 Changelog – NDPlayerStats v1.5.0
---New Features
- PvE Statistics – kills and deaths from mobs/animals are now tracked separately - New stats:pve_kills,pve_deaths- New placeholders:%ndplayerstats_pve_kills%,%ndplayerstats_pve_deaths%,%ndplayerstats_all_kills%,%ndplayerstats_all_deaths%-%ndplayerstats_kills%now shows only PvP kills -%ndplayerstats_all_kills%shows total kills (PvP + PvE) - Anti-Kill Abuse Protection (Suggested by [finn12](https://www.spigotmc.org/members/finn12.1365346/)) – prevents kill farming against the same player - Time-window mode with configurable limits - Notifications for killer and victim - Bypass permission:ndplayerstats.antiabuse.bypass- World restrictions support - Leaderboard Titles – moved tomessages.ymlwith{page},{total},{size}placeholders ---Bug Fixes
- General bug fixes and performance improvements ---Configuration & Messages
- `config.yml` – new sectionanti-kill-abuseadded,track-pve-killsoption added - `messages.yml` – new sectionanti-kill-abuseadded, newleaderboard.titleandleaderboard.title-kdwith{page},{total},{size}placeholders ---Updating from v1.4.1
Important: Updating from version 1.4.1 requires either:
- Deleting old
>config.ymlandmessages.yml(plugin will generate new ones with defaults)or
>- Manually updating both files with new sections
---Breaking Change
%ndplayerstats_kills%now shows PvP kills only. Use%ndplayerstats_all_kills%for total kills. --- <details> <summary>config.yml</summary> ```NDPlayerStats Configuration v1.5.0
Author: Kubass1 - https://kubass.cz/
IMPORTANT: Changing database type requires server restart!
Edit this file, save it, then restart the server.
============================================================
DATABASE SETTINGS
============================================================
database: # Database type: YAML, MYSQL, or SQLITE #WARNING: Changing this requires server restart! type: YAML # SQLite settings (only used when type: SQLITE) sqlite: # Name of the SQLite database file filename: database.db # MySQL settings (only used when type: MYSQL) mysql: # MySQL server address host: localhost # MySQL server port port: 3306 # Name of the database to use database: mc_server # Database username username: root # Database password password: '' # Prefix for all table names (useful for multiple plugins sharing one database) table-prefix: ndps_ # Enable SSL for MySQL connection ssl: false
============================================================
UPDATE CHECKER
============================================================
Enable or disable automatic update checking
check-update: true============================================================
LEADERBOARD SETTINGS
============================================================
leaderboard: # Enable or disable the leaderboard feature enabled: true # How many players to show in the leaderboard size: 10 # How often to auto-update leaderboard cache in seconds (0 = disabled) update-interval: 60 # Maximum position for placeholders (e.g. %ndplayerstats_kills_100%) max-position: 100 # Default mode for /leaderboard: "kills" or "kd" default-mode: kills # Custom colors for each rank position colors: '1': '&6' # #1 - Gold '2': '&7' # #2 - Silver '3': '&8' # #3 - Bronze '4': '&e' # #4 - Yellow '5': '&e' # #5 - Yellow '6': '&e' # #6 - Yellow '7': '&e' # #7 - Yellow '8': '&e' # #8 - Yellow '9': '&e' # #9 - Yellow '10': '&e' # #10 - Yellow others: '&f' # All other ranks - White============================================================
RANK SETTINGS
============================================================
ranks: # Enable or disable the ranking system completely enabled: true # Show [Unranked] for players with no stats show-unranked: true # Text to display for unranked players unranked-text: Unranked # Color for unranked text unranked-color: '&7' # Maximum rank number to display (ranks above this will show as 999+) max-display-rank: 999 # Show [999+] for ranks above max-display-rank show-max-plus: true # Text for ranks above max-display-rank max-plus-text: 999+ # Color for max-plus text max-plus-color: '&8' # Minimum kills required to get a rank minimum-kills: 0============================================================
STATISTICS TRACKING
============================================================
stats: # Track total play time for each player track-play-time: true # Track PvP kills separately (kills against players) track-pvp-kills: true # Track PvE kills separately (kills against mobs/animals) track-pve-kills: true # Track the highest killstreak a player has achieved track-highest-killstreak: true # Death tracking settings death-tracking: # Enable or disable death tracking completely enabled: true # What types of deaths to count count-pvp-deaths: true # Killed by another player count-pve-deaths: true # Killed by mobs/animals count-environmental-deaths: true # Fall damage, fire, lava, etc. count-void-deaths: true # Falling into the void count-suicide-deaths: true # Self-inflicted deaths (e.g. /kill) # World restrictions (empty list = all worlds) enabled-worlds: [] excluded-worlds: [] # Minimum playtime required before deaths start counting minimum-playtime-minutes: 0============================================================
ANTI-KILL ABUSE SETTINGS (TIME-WINDOW MODE)
============================================================
anti-kill-abuse: # Enable or disable anti-kill abuse protection enabled: true # Maximum kills allowed within the time window against the same player # Example: 2 means if 2 kills happen within time-window-seconds, cooldown activates max-kills-per-victim: 2 # Time window in seconds to check for kills # Example: 30 means if 2 kills happen within 30 seconds, cooldown activates time-window-seconds: 30 # How long the cooldown lasts in seconds after abuse is detected # Example: 60 means after abuse detected, player cannot kill victim for 60 seconds cooldown-seconds: 60 # Should death be counted when a kill is blocked? # true = victim gets death, false = victim does NOT get death count-death-on-abuse: true # Should the killer receive a message when a kill is blocked? notify-killer: true # Should the victim receive a message when a kill is blocked? notify-victim: true # Players with this permission will bypass the check bypass-permission: "ndplayerstats.antiabuse.bypass" # World restrictions (empty list = all worlds) enabled-worlds: [] excluded-worlds: []============================================================
GUI SETTINGS
============================================================
gui: # Title of the statistics GUI title: '&9{player}''s Statistics' # GUI size (must be multiple of 9, between 9 and 54) size: 27 # Items displayed in the GUI items: # Kills item kills: material: DIAMOND_SWORD slot: 11 name: '&aKills' lore: - '&7Total kills: &f{kills}' - '&7PvP kills: &f{pvp_kills}' - '&7PvE kills: &f{pve_kills}' - '&7Rank: &f{rank}' # Deaths item deaths: material: SKELETON_SKULL slot: 13 name: '&6Deaths' lore: - '&7Total deaths: &f{deaths}' - '&7PvP deaths: &f{pvp_deaths}' - '&7PvE deaths: &f{pve_deaths}' - '&7K/D Ratio: &f{kd}' # Killstreak item killstreak: material: TOTEM_OF_UNDYING slot: 15 name: '&2Killstreak' lore: - '&7Current: &f{killstreak}' - '&7Highe1.4.1NDPlayerStats 1.4.1Jul 6, 2026 - Bug Fixes - Added version support 1.15+1.4.0NDPlayerStats 1.4.0Jul 6, 2026 Changelog - NDPlayerStats v1.4.0
Added
- Automatic update check (can be disabled withcheck-update: false) -/ndps updateand/ndps checkcommands - OP/Admin notifications on join when new version is available - Leaderboard pagination -/leaderboard <page>,/leaderboard kills <page>and/leaderboard kd <page>-default-modeoption in config.yml (killsorkd)Fixed
- Minor bug fixes1.3.0NDPlayerStats 1.3.0Jul 4, 2026 - Bug fixes - Added more config.yml customizations - Added more messages.yml customizations1.2.0NDPlayerStats 1.2.0 - May not work under 1.21.XDec 21, 2025
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