Перейти к содержимому
Mineforgian

PlayerStats API

Lightweight vanilla player statistics via REST API for Paper servers

Загрузки
376
Подписчики
10
Обновлён
24 июня 2026 г.
Лицензия
MIT

Опубликован 22 декабря 2025 г.

PlayerStats API is a lightweight and stable Paper plugin for Minecraft 1.21.x that exposes vanilla player statistics via a simple and efficient HTTP / REST API.

The plugin is designed for external integrations such as web dashboards, analytics services, monitoring tools, and custom frontends.


Features

  • 📊 Reads vanilla player statistics from world/stats/*.json
  • 🧍 Supports online and offline players
  • 🔍 Fetch statistics by UUID or player name
  • 📈 Provides aggregated summaries (playtime, deaths, kills, distance, etc.)
  • 🌐 Built-in HTTP server with REST endpoints
  • ⚡ Data caching for improved performance
  • 🔒 Uses only public Bukkit / Paper API (no NMS, no CraftBukkit)

Compatibility

  • Minecraft / Paper: 1.21.x (1.21, 1.21.1 … 1.21.11)
  • Java: 21
  • Server type: Paper

The plugin is built against the stable Paper API 1.21 branch and is not tied to patch-specific versions, ensuring compatibility across all 1.21.x releases.


Configuration

StatsPlugin uses a simple YAML configuration file to control:

  • HTTP server port
  • Enabling / disabling the web server
  • World path for reading statistics

No rebuild is required after configuration changes.


API Endpoints

Base URL example: http://localhost:8080

🔹 Get all players

GET /players

Returns a list of players with basic summary statistics.


Get player summary by name

GET /players/{playerName}

Example:

GET /players/Notch

Get player summary by UUID

GET /players/uuid/{uuid}

Example:

GET /players/uuid/069a79f4-44e9-4726-a5be-fca90e38aaf5

Get full raw statistics

GET /players/{playerName}/stats

Returns the full vanilla statistics parsed from the stats JSON file.


Endpoint paths may slightly vary depending on configuration and version. Always refer to the project README for the most up-to-date list.


Installation

  1. Download the plugin JAR file
  2. Place it into the plugins/ folder
  3. Start the server
  4. Adjust config.yml if needed

Stability & Safety

  • No usage of NMS or CraftBukkit
  • Safe across all Paper 1.21.x updates
  • Does not embed Paper API into the final JAR
  • Proper resource cleanup on server shutdown

Use cases

PlayerStats API is suitable if you:

  • Build a web-based player statistics dashboard
  • Collect and visualize server analytics
  • Need programmatic access to vanilla statistics
  • Develop external services around your Minecraft server

Screenshots & Examples

TODO

Ченджлог

2.1.3Релиз1.21.9, 1.21.10, 1.21.11 · 24 июня 2026 г.

Added

  • Added local activity history storage in plugins/PlayerStatsAPI/history.json.
  • Added playtime growth tracking based on minecraft:custom/minecraft:play_time.
  • Added activity metadata: first seen, last seen, last join, last quit, last session duration, active-now duration, and recorded playtime delta.
  • Added daily playtime buckets for charting activity by date.
  • Added UTC weekday-hour heatmap buckets for per-player and global activity heatmaps.
  • Added activity API endpoints:
    • GET /moss/activity/<uuid>
    • GET /moss/activity/<uuid>/playtime?limit=100
    • GET /moss/activity/top?window=day|week&limit=10
    • GET /moss/activity/heatmap
    • GET /moss/activity/heatmap/<uuid>
  • Added history.max-points-per-player config option.

Changed

  • Player list and player detail API responses now include a compact activity object when history is available.
  • /moss/top/* and /moss/activity/top now cap requested limits by web.max-top-results.
  • Updated documentation for activity endpoints, history storage, build verification, and release flow.

Fixed

  • Replaced deprecated Paper OfflinePlayer#getLastPlayed() usage with OfflinePlayer#getLastSeen().

Full Changelog: https://github.com/AREKKUZZERA/PlayerStats-API/compare/2.1.2...2.1.3

2.1.2Релиз1.21.9, 1.21.10, 1.21.11 · 25 мая 2026 г.

What's New

  • Added the new admin command /playerstatsapi with aliases /psa and /psapi.
  • Added /psa help, /psa status, /psa reload, and /psa synclog <on|off>.
  • Added config control for [Sync] console logs: stats.log-sync-updates.
  • Added configurable /statstop limits: commands.default-top-limit and commands.max-top-limit.
  • Reworked the default config.yml into clearer stats, commands, and web sections.

Changes

  • [Sync] logs are now disabled by default to avoid console spam.
  • /psa reload and /statsreload now apply config changes at runtime.
  • Older flat config keys are still supported, so existing configs keep working.
2.1.1Релиз1.21.9, 1.21.10, 1.21.11 · 21 мая 2026 г.

Changed

  • Reduced final plugin jar size.
  • Removed unused Maven Shade packaging for a cleaner lightweight jar.
  • Removed Maven descriptor metadata from the final jar.
  • Disabled Java debug metadata in release classes.
  • Updated Palantir Java Format to 2.90.0 for compatibility with the current JDK.

Fixed

  • /statsreload now reports completion after stats reload actually finishes.
  • HTTP server executor is now shut down when the plugin stops.
  • CORS allowed methods now match the API surface: GET, OPTIONS.
2.1Релиз1.21.9, 1.21.10, 1.21.11 · 28 марта 2026 г.

Added

  • /stats <игрок> — сводка статистики: время игры, смерти, прыжки, км, убийства, урон, блоки, крафт
  • /statsreload — принудительная перезагрузка кэша статистики
  • /statsonline — список онлайн-игроков с UUID
  • /statstop <ключ> [лимит] — топ игроков по любому ключу статистики (асинхронно)
  • Tab-complete для /stat, /stats, /statstop
  • Permissions-система для всех команд
  • StatsUtil.totalSection() — суммирование всей секции статистики
  • Web API /moss/summary теперь включает players_online, total_player_kills, total_mob_kills, total_damage_dealt
  • Web API /moss/online теперь возвращает { count, players[] }
  • Web API /moss/top/ теперь включает поле online для каждого игрока
  • Web API /moss/players поддерживает параметр ?stats=true (по умолчанию — без статистики, быстрее)
  • GitHub Actions: автопубликация на Modrinth при push тега v*

Fixed

  • /stat теперь работает с оффлайн-игроками (через кэш и Bukkit.getOfflinePlayer)
  • onlineSet переведён на ConcurrentHashMap.newKeySet() — правильная семантика
  • resolveIntParam больше не принимает отрицательные значения
  • handleSummary использует StatsUtil вместо ручного парсинга JSON
  • handlePlayerByUUID и handlePlayerByName возвращают полный playerEntry с полем online
  • lastPathSegment корректно обрабатывает пустые сегменты пути

Changed

  • Версия плагина: 2.0 → 2.1
  • getStatsCache() возвращает Collections.unmodifiableMap вместо прямой ссылки
2.0Релиз1.21.9, 1.21.10, 1.21.11 · 28 марта 2026 г.

StatsPlugin 1.21.x - Release 2.0

🚀 Improvements

  • Оптимизирован WebServer:

    • удалён дублирующий /top/jumps
    • унифицирован парсинг параметров
    • добавлено поле rank в топах
  • Оптимизирован StatsManager:

    • убран лишний AtomicInteger
    • исправлен кэш онлайн-игроков (retainAll)
  • Оптимизирован StatsUtil:

    • единый Gson
    • унифицирован доступ к stats root
    • добавлены minecraft:killed, minecraft:killed_by

🐛 Fixes

  • Исправлен pom.xml (<n><name>)
  • Удалено дублирование web-port / web.port
  • Убрано дублирование логики лимитов
  • Устранён двойной проход по кэшу

⚠️ Requirements

  • Paper 1.21+

🧠 Internal

  • Упрощена архитектура Web API
  • Снижен overhead загрузки статистики

📊 Logging

  • Добавлены логи синхронизации загрузки статистики
1.6Релиз1.21.9, 1.21.10, 1.21.11 · 23 февраля 2026 г.

StatsPlugin 1.21.x - Release 1.6

✅ Compatibility / Совместимость

  • Paper / Minecraft: 1.21.x (1.21, 1.21.1 … 1.21.11)
  • Java: 21
  • API: Paper API 1.21 (no patch-specific binding / без привязки к патч-версиям)

✨ What’s changed / Что изменилось

  • Added pagination support for /moss/players with limit and offset parameters. Добавлена поддержка пагинации для /moss/players с параметрами limit и offset.

    • Returns metadata envelope: total, limit, offset, players. Возвращает метаданные: total, limit, offset, players.
    • Deterministic UUID sorting preserved. Сохраняется детерминированная сортировка по UUID.
  • Implemented safe pagination parsing: Реализована безопасная обработка пагинации:

    • limit defaults to existing behavior (maxResponsePlayers). limit по умолчанию = maxResponsePlayers.
    • Negative limit → clamped to 0; oversized limit → clamped to max. Отрицательные значения → 0; слишком большие → до максимума.
    • offset defaults to 0; negative values clamped to 0. offset по умолчанию = 0; отрицательные значения → 0.
  • Extended /moss/top/<stat_key> to support explicit section selection. Добавлена поддержка явного указания секции для /moss/top/<stat_key>.

    • Query param form: /moss/top/<stat_key>?section=<section>
    • Path variant: /moss/top/<section>/<stat_key>
    • Legacy behavior preserved when section is not provided. Старое поведение сохраняется, если секция не указана.
  • Implemented strict section-based lookup & validation: Реализован строгий поиск по секции и валидация:

    • Dynamic section discovery from loaded stats. Динамическое определение доступных секций.
    • 400 response for invalid section. 400 при некорректной секции.
    • 404 if stat key is absent in the specified section. 404, если stat_key отсутствует в указанной секции.
    • No fallback when section is explicitly provided. Без fallback при явном указании секции.

🔧 Improvements / Улучшения

  • Added reusable StatsUtil helper methods:

    • getStatInSection
    • sectionHasStatKey
    • getAvailableStatSections

    Добавлены вспомогательные методы StatsUtil для устранения дублирования логики и поддержки динамического поиска по секциям.

  • Improved backward compatibility - existing clients continue working without changes. Улучшена обратная совместимость - существующие клиенты работают без изменений.

  • Minor internal refactoring and safety checks (no breaking API changes). Небольшой рефакторинг и дополнительные проверки безопасности (без ломающих изменений API).


📦 Build details / Информация о сборке

  • Single universal JAR: statsplugin-1.21.x-1.6.jar Универсальный JAR: statsplugin-1.21.x-1.6.jar
  • Built with Java 21 Сборка выполнена под Java 21
  • Maven-based build (mvn clean package) Maven-билд (mvn clean package)

⚠️ Notes / Примечания

  • Pagination significantly improves performance for large servers and makes the API UI-friendly for dashboards and web panels. Пагинация значительно улучшает работу на больших серверах и делает API удобным для веб-интерфейсов.

  • Explicit section selection resolves stat key ambiguity (e.g., mined vs used) and enables entity kill leaderboards. Явное указание секции решает проблему неоднозначных stat_key и позволяет строить топы по убийствам мобов.

  • Fully backward compatible with previous 1.21.x releases. Полностью совместим с предыдущими релизами 1.21.x.


📌 Upgrade / Обновление

  • Replace the old JAR in your plugins/ folder and restart the server. Замените старый JAR в папке plugins/ и перезапустите сервер.
1.5Бета1.21.9, 1.21.10, 1.21.11 · 22 декабря 2025 г.

Вот корректно отформатированная версия для вставки в Modrinth changelog (с правильными переносами, разделителями и Markdown-структурой):


StatsPlugin 1.21.x — Release 1.5

✅ Compatibility / Совместимость

  • Paper / Minecraft: 1.21.x (1.21, 1.21.1 … 1.21.11)
  • Java: 21
  • API: Paper API 1.21 (no patch-specific binding / без привязки к патч-версиям)

✨ What’s changed / Что изменилось

  • Switched to the stable Paper 1.21.x API branch to ensure compatibility across all 1.21 patch versions. Переход на стабильную ветку Paper API 1.21.x для корректной работы на всех патч-версиях 1.21.

  • Removed any dependency on patch-specific Paper builds. Убрана зависимость от конкретных патч-сборок Paper.

  • Verified plugin startup and runtime on multiple Paper 1.21.x versions. Проверен запуск и корректная работа плагина на нескольких версиях Paper 1.21.x.

  • API usage is strictly limited to public Bukkit / Paper APIs (no NMS, no CraftBukkit). Используется только публичный Bukkit / Paper API (без NMS и CraftBukkit).


🔧 Improvements / Улучшения

  • Improved overall build stability and forward compatibility within the 1.21.x lifecycle. Повышена стабильность сборки и долгосрочная совместимость в рамках линейки 1.21.x.

  • Ensured a clean shaded JAR without embedding Paper API classes. Проверено, что итоговый JAR не содержит классов Paper API.

  • Minor internal cleanups and safety checks (no breaking changes). Небольшие внутренние улучшения и проверки без изменения публичного API плагина.


📦 Build details / Информация о сборке

  • Single universal JAR: statsplugin-1.21.x-1.5.jar Универсальный JAR: statsplugin-1.21.x-1.5.jar

  • Built with Java 21 Сборка выполнена под Java 21

  • Maven-based build (mvn clean package) Maven-билд (mvn clean package)


⚠️ Notes / Примечания

  • This release is intended to be used as-is on all Paper 1.21.x servers. Релиз предназначен для использования без пересборки на всех серверах Paper 1.21.x.

  • No configuration changes are required when upgrading from previous 1.21 builds. Изменения в конфигурации при обновлении не требуются.


📌 Upgrade / Обновление

  • Replace the old JAR in your plugins/ folder and restart the server. Замените старый JAR в папке plugins/ и перезапустите сервер.

Если хочешь, могу сделать версию с более «продающей» подачей (чтобы релиз выглядел сильнее на Modrinth в ленте обновлений).

Комментарии

Загружаем…