Tags
Creators
Details
1.6
Compatibility
Changes
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/и перезапустите сервер.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:443Qieon:75JjJ1Tl"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:443Qieon:75JjJ1Tl"
}

