▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Плагины/NDPlayerStats
NDPlayerStats

NDPlayerStats

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

Оцените первым
479
1
Все версииNDPlayerStats 1.5.0

NDPlayerStats 1.5.0

Release17.07.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) – 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.


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

Загрузчики

Bukkit
Paper
Purpur
Spigot

Версии игры

1.15–26.2

Загрузок

23

Дата публикации

17.07.2026

Загрузил

ID версии

Главная