All versions
1.5.1
Release
NDPlayerStats 1.5.13 months ago 599
Compatibility
Minecraft: Java Edition
26.2
26.1.x
1.21.x
1.20.x
1.19.x
1.18.x
1.17.x
1.16.x
1.15.x
Platforms
Bukkit
Paper
Purpur
Spigot
Changes
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
/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
config.yml
# 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 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}'
- '&7Highest: &f{highest_killstreak}'
# Player info item (head)
info:
material: PLAYER_HEAD
slot: 4
name: '&e{player}'
lore:
- '&7Click to refresh'
- ''
- '&7Play Time: &f{playtime}'
# ============================================================
# PLACEHOLDERAPI SETTINGS
# ============================================================
placeholderapi:
# Enable or disable PlaceholderAPI support
enabled: true
# Notify OPs when PlaceholderAPI is enabled/disabled
notify-ops: true
# ============================================================
# PERFORMANCE SETTINGS
# ============================================================
performance:
# Cache statistics for better performance
cache-stats: true
# How long to keep cached data in seconds
cache-ttl: 300
# How often to auto-save statistics to disk in seconds
save-interval: 300
# Use asynchronous operations to avoid lag
async-operations: true
# ============================================================
# NOTES
# ============================================================
# š“ SERVER RESTART REQUIRED FOR:
# - Changing database type (YAML/MySQL/SQLite)
# - Changing database connection settings
#
# ā
Can be reloaded with /ndps reload:
# - All other settings including death tracking, ranks,
# leaderboard, GUI, performance, anti-kill-abuse
# - All text messages in messages.yml
messages.yml
# ============================================================
# NDPlayerStats Messages
# All messages can be customized. Use & for color codes.
# Placeholders: {prefix}, {player}, {count}, etc.
# ============================================================
# ============================================================
# PREFIX
# ============================================================
# This prefix is used in all messages that contain {prefix}
prefix: "&8[&6NDStats&8] &r"
# ============================================================
# COMMAND MESSAGES
# ============================================================
# Message shown when a player doesn't have permission
no-permission: "{prefix}&cYou don't have permission to use this command!"
# Message shown when a command is used by console but requires a player
player-only: "{prefix}&cThis command can only be used by players!"
# Message shown when a player is not found
player-not-found: "{prefix}&cPlayer &e{player} &cnot found!"
# Message shown when a command is used incorrectly
usage: "{prefix}&cUsage: &7{usage}"
# ============================================================
# STATS RESET MESSAGES
# ============================================================
# Message when a player's stats are reset
stats-reset: "{prefix}&aStatistics for &e{player} &ahave been reset!"
# Notification sent to the player when their stats are reset
stats-reset-notify: "&cYour statistics have been reset by an administrator."
# Broadcast message when all stats are reset
stats-all-reset: "&cAll player statistics have been reset by an administrator."
# Success message when all stats are reset
stats-all-reset-success: "&aSuccessfully reset statistics for &e{count} &aplayers!"
# Error message when resetting all stats fails
stats-all-reset-error: "&cFailed to reset all statistics: {error}"
# Warning message before resetting all stats
stats-all-reset-warning: "&c&lWARNING: This will reset ALL player statistics!"
# Second warning line
stats-all-reset-warning2: "&cThis action cannot be undone!"
# Confirmation prompt for resetting all stats
stats-all-reset-confirm: "&eType &6/resetstatsall confirm &eto reset all stats"
# Message when resetting all stats using SQL
stats-all-reset-sql: "&eResetting all statistics using SQL..."
# ============================================================
# GUI MESSAGES (/statsgui)
# ============================================================
gui:
# Message when opening GUI for another player
opening: "{prefix}&aOpening statistics for &e{player}..."
# Message when refreshing the GUI
refreshed: "&aStatistics refreshed!"
# Message when a player is offline
player-offline: "&cPlayer {player} is not online. Use /stats instead."
# ============================================================
# ANTI-KILL ABUSE MESSAGES
# ============================================================
anti-kill-abuse:
# Message shown to killer when kill is blocked
# {victim} = name of the victim
killer-message: "{prefix}&cYou have killed {victim} too many times! Kill not counted."
# Message shown to victim when kill is blocked
# {killer} = name of the killer
# {death} = "counted" or "not counted" (based on count-death-on-abuse config)
victim-message-death-counted: "{prefix}&aKill blocked! You were killed too many times by {killer}. Death counted."
victim-message-death-not-counted: "{prefix}&aKill and death blocked! You were killed too many times by {killer}."
# ============================================================
# ADMIN COMMAND MESSAGES (/ndps)
# ============================================================
admin:
# Success message after reload
reloaded: "{prefix}&aConfiguration reloaded!"
# Error message during reload
reload-error: "&cError during reload: {error}"
# Help menu
help-header: "&6=== NDPlayerStats Admin ==="
help-reload: "&e/ndps reload &7- Reload config"
help-lookup: "&e/ndps lookup <player> &7- Lookup player stats"
help-info: "&e/ndps info &7- Show plugin info"
help-help: "&e/ndps help &7- Show this help"
help-update: "&e/ndps update &7- Check for updates"
help-note: "&cNote: Database type changes require server restart!"
update-checking: "&eChecking for updates..."
update-failed: "&cFailed to check for updates. Check console for details."
# Info command
info-header: "&6=== NDPlayerStats Info ==="
info-version: "&eVersion: &f{version}"
info-author: "&eAuthor: &f{author}"
info-database: "&eDatabase: &f{database}"
info-ranks: "&eRanks: &f{ranks}"
info-papi: "&ePlaceholderAPI: &f{papi}"
# Unknown command
unknown-command: "&cUnknown command. Use /ndps help"
# Database change warnings
db-change-warning: "&cDatabase type changed from {old} to {new}!"
db-change-restart: "&cDatabase type changes require server restart!"
db-change-using: "&eUsing {current} until server restart."
# ============================================================
# PLACEHOLDERAPI MESSAGES
# ============================================================
# Message when PlaceholderAPI support is enabled
papi-enabled: "&a[NDStats] PlaceholderAPI support enabled!"
# Example placeholder usage
papi-example: "&7Use %ndplayerstats_kills%, %ndplayerstats_pvp_kills%, %ndplayerstats_pve_kills%"
# ============================================================
# DATABASE CONNECTION ERROR MESSAGES
# ============================================================
# Message when database connection fails
db-failed: "&c[NDStats] Failed to connect to database!"
# Message to check console for details
db-check-console: "&cCheck console for details."
# Message showing the configured database type
db-config-type: "&eConfig database type: {type}"
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:1ixlThbk:DjXf8Na3"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:1ixlThbk:DjXf8Na3"
}

