Skip to content

StatsPlugin 1.21.x - Release 1.6

Choose a tag to compare

@AREKKUZZERA AREKKUZZERA released this 23 Feb 14:18
· 36 commits to main since this release
019d674

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

  • Added pagination support for /moss/players endpoint 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).
    • Negative limit - clamped to 0, oversized limit - clamped to max.
    • offset defaults to 0, negative values clamped to 0.
      Безопасная обработка пагинации:
    • limit по умолчанию = maxResponsePlayers.
    • Отрицательные значения - 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 not provided.
      Старое поведение сохраняется, если секция не указана.
  • Section-only lookup behavior and validations:

    • Dynamic section discovery from loaded stats.
    • 400 response for invalid section.
    • 404 if stat key is absent in a valid requested section.
    • Only searches the specified section, no fallback to other sections.
      Проверка и поиск по секциям:
    • Динамическое обнаружение секций в загруженных данных.
    • 400 при некорректной секции.
    • 404, если stat_key отсутствует в указанной секции.
    • Поиск только в указанной секции, без fallback.

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

  • Added reusable StatsUtil helpers for cleaner code:

    • getStatInSection - extract stat value from a specific section.
    • sectionHasStatKey - check if section contains a given stat key.
    • getAvailableStatSections - dynamic discovery of valid sections.
      Добавлены утилиты StatsUtil для упрощения кода:
    • getStatInSection - получение значения stat в указанной секции.
    • sectionHasStatKey - проверка, есть ли stat_key в секции.
    • getAvailableStatSections - динамическое определение доступных секций.
  • Improved backward compatibility: old clients continue working without changes.
    Улучшена обратная совместимость: старые клиенты продолжают работать без изменений.

  • Minor internal cleanups and safety checks (no breaking 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 support makes large player lists efficient and usable for dashboards / web UIs.
    Поддержка пагинации делает длинные списки игроков эффективными и удобными для дашбордов и веб-интерфейсов.
  • Explicit section selection solves ambiguity for /moss/top keys (e.g., mined vs used) and enables entity kill leaderboards.
    Явное указание секции решает проблему неоднозначности (mined vs used) и позволяет строить лидерборды по убитым сущностям.
  • This release is intended to be used as-is on all Paper 1.21.x servers.
    Релиз предназначен для использования без пересборки на всех серверах Paper 1.21.x.

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

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