Sueta

NDPlayerStats

1.5.3

✨ Track and display player stats – kills, deaths, killstreak, KD ratio, play time, and more features ✨

·Plugin
  1. 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 to messages.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 update now 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/
    214 downloads
  2. 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.
    44 downloads
  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.yml
    Changes
    - /stats command formatting moved from messages.yml to config.yml - /leaderboard split into separate sections for kills and kd in config - /ndps lookup formatting added to config.yml (fully customizable) - Offline player lookup for /ndps lookup is 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 restr
    593 downloads
  4. 1.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 to messages.yml with {page}, {total}, {size} placeholders ---

    Bug Fixes

    - General bug fixes and performance improvements ---

    Configuration & Messages

    - `config.yml` – new section anti-kill-abuse added, track-pve-kills option added - `messages.yml` – new section anti-kill-abuse added, new leaderboard.title and leaderboard.title-kd with {page}, {total}, {size} placeholders ---

    Updating from v1.4.1

    Important: Updating from version 1.4.1 requires either:
    - Deleting old config.yml and messages.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}' - '&7Highe
    39 downloads
  5. 1.4.1NDPlayerStats 1.4.1Jul 6, 2026
    - Bug Fixes - Added version support 1.15+
    98 downloads
  6. 1.4.0NDPlayerStats 1.4.0Jul 6, 2026

    Changelog - NDPlayerStats v1.4.0

    Added
    - Automatic update check (can be disabled with check-update: false) - /ndps update and /ndps check commands - OP/Admin notifications on join when new version is available - Leaderboard pagination - /leaderboard <page>, /leaderboard kills <page> and /leaderboard kd <page> - default-mode option in config.yml (kills or kd)
    Fixed
    - Minor bug fixes
    27 downloads
  7. 1.3.0NDPlayerStats 1.3.0Jul 4, 2026
    - Bug fixes - Added more config.yml customizations - Added more messages.yml customizations
    32 downloads
  8. 1.2.0NDPlayerStats 1.2.0 - May not work under 1.21.XDec 21, 2025
    295 downloads

Similar projects

Plugin →