
PlayerStats API
Lightweight vanilla player statistics via REST API for Paper servers
PlayerStats-API 2.1
release28 марта 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вместо ручного парсинга JSONhandlePlayerByUUIDиhandlePlayerByNameвозвращают полныйplayerEntryс полемonlinelastPathSegmentкорректно обрабатывает пустые сегменты пути
Changed
- Версия плагина: 2.0 → 2.1
getStatsCache()возвращаетCollections.unmodifiableMapвместо прямой ссылки
26.1 - Stability & Performance (1.21.X)
release28 марта 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
- Добавлены логи синхронизации загрузки статистики
PlayerStats API 1.21.x
release23 февраля 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/playerswithlimitandoffsetparameters. Добавлена поддержка пагинации для/moss/playersс параметрамиlimitиoffset.- Returns metadata envelope:
total,limit,offset,players. Возвращает метаданные:total,limit,offset,players. - Deterministic UUID sorting preserved. Сохраняется детерминированная сортировка по UUID.
- Returns metadata envelope:
-
Implemented safe pagination parsing: Реализована безопасная обработка пагинации:
limitdefaults to existing behavior (maxResponsePlayers).limitпо умолчанию =maxResponsePlayers.- Negative
limit→ clamped to 0; oversizedlimit→ clamped to max. Отрицательные значения → 0; слишком большие → до максимума. offsetdefaults 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. Старое поведение сохраняется, если секция не указана.
- Query param form:
-
Implemented strict section-based lookup & validation: Реализован строгий поиск по секции и валидация:
- Dynamic section discovery from loaded stats. Динамическое определение доступных секций.
400response for invalid section.400при некорректной секции.404if stat key is absent in the specified section.404, если stat_key отсутствует в указанной секции.- No fallback when section is explicitly provided. Без fallback при явном указании секции.
🔧 Improvements / Улучшения
-
Added reusable
StatsUtilhelper methods:getStatInSectionsectionHasStatKeygetAvailableStatSections
Добавлены вспомогательные методы
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/и перезапустите сервер.
PlayerStats API 1.21.X
release22 декабря 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 в ленте обновлений).
