
NDPlayerStats
✨ Track and display player stats – kills, deaths, killstreak, KD ratio, play time, and more features ✨
Оцените первым
479
1
Список изменений
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)
- New stats:
-
Anti-Kill Abuse Protection (Suggested by finn12) – 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.ymlwith{page},{total},{size}placeholders
Bug Fixes
- General bug fixes and performance improvements
Configuration & Messages
config.yml– new sectionanti-kill-abuseadded,track-pve-killsoption addedmessages.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.
config.yml
# 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-✨-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 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...'
# ============================================================
# STATS COMMAND (/stats)
# ============================================================
# Title when viewing your own stats
stats-your-title: '&6&lYour Statistics'
# Title when viewing another player's stats
stats-other-title: '&6&l{player}''s Statistics'
# Separator line
stats-separator: '&7══════════════════════════'
# Individual stat lines
stats-kills: '&7Kills: &e{kills}'
stats-deaths: '&7Deaths: &e{deaths}'
stats-kd: '&7K/D Ratio: &e{kd}'
stats-killstreak: '&7Killstreak: &e{killstreak}'
stats-rank: '&7Rank: &e{rank}'
stats-playtime: '&7Play Time: &e{playtime}'
# Text for players without a rank
stats-unranked: Unranked (no stats)
# ============================================================
# LEADERBOARD MESSAGES (/leaderboard)
# ============================================================
leaderboard:
# Title of the leaderboard (Kills)
title: '&8&m &r &6&lTop {size} Players (Kills) - Page {page}/{total} &r
&8&m '
# Title of the leaderboard (K/D)
title-kd: '&8&m &r &6&lTop {size} Players (K/D) - Page {page}/{total} &r
&8&m '
# Format for each leaderboard entry
line-format: '&7{rank}. {color}{player} &8- &a{kills} kills'
# Message when leaderboard is disabled
disabled: '{prefix}&cThe leaderboard is currently disabled!'
# Message when no players have stats
no-players: '&7No players with statistics yet!'
# Message showing how many players are displayed
showing-top: '&7Showing top {limit} of {total} players'
# Hint for pagination
page-hint: '&7Use /leaderboard <page> for more'
# ============================================================
# 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}'
# Lookup command
lookup-header: '&6=== {player}''s Stats ==='
lookup-uuid: '&eUUID: &f{uuid}'
lookup-kills: '&eKills: &f{kills}'
lookup-deaths: '&eDeaths: &f{deaths}'
lookup-kd: '&eK/D: &f{kd}'
lookup-killstreak: '&eKillstreak: &f{killstreak}'
lookup-playtime: '&ePlay Time: &f{playtime}'
lookup-rank: '&eRank: &f{rank}'
# 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}'
Файлы
ndplayerstats-1.5.0.jar(413.28 KiB)
ОсновнойМетаданные
Канал релиза
Release
Номер версии
1.5.0
Загрузчики
BukkitPaperPurpurSpigot
Версии игры
1.15–26.2
Загрузок
23
Дата публикации
17.07.2026
