Tags
Creators
Details
1.4.0
Compatibility
Changes
🔧 Modrinth & CI/CD
- Добавлена полноценная интеграция с Modrinth (Minotaur plugin 2.8.7)
- Явно указаны поддерживаемые версии Minecraft: 1.21 – 1.21.11
- Добавлены лоадеры: Paper, Folia
- Настроена автоматическая публикация через GitHub Actions (
mvn modrinth:publish) - Версия плагина теперь синхронизируется через
${project.version}(Maven filtering)
🐛 Исправления ошибок
⚙️ Core / Concurrency
-
RateLimiter
- Исправлен data race в
AttemptBucket - Потокобезопасность теперь гарантируется через
ConcurrentHashMap.compute - Исправлена логика для невалидных IP (больше не блокируются навсегда)
- Исправлен data race в
-
WebhookNotifier
- Устранён race condition в
maybeLogDropStats - Поле
lastStatLogMillisтеперь используется корректно из worker-потока
- Устранён race condition в
🌐 Network / Proxy
-
IpFilterListener
-
Исправлена логика proxy gate
- Недоверенные прокси теперь всегда блокируются
- Ранее при
ALLOW_ALLмогли проходить без логирования
-
Удалена ошибка, при которой пустой список trusted proxies = доверие всем
-
🧪 Tests
-
IpMathSelfCheck
- Исправлена сортировка диапазонов IP
- Используется
Integer.compareUnsignedвместо signed сравнения
🧾 Logging
-
BetterIpFilterPlugin
- Устранено дублирование
formatDeniedLine
- Устранено дублирование
🚀 Улучшения производительности и кода
-
Ленивая генерация строки deny-лога (если логирование отключено — строка не создаётся)
-
Упрощена логика
onEnable(inline executor setup) -
WebhookNotifierswitchвместо if-chain вescapeJson- Оптимизирован
buildPayload(использует String concat → JDK 21 оптимизирует)
🧹 Рефакторинг
IpStore
-
Убрано дублирование через:
commitResult(...)setUnavailable(...)ensureDataFolder()
-
parseEntryсделанstatic
IpfCommand
- Исправлен порядок валидации аргументов (сначала корректность IP)
- Упрощена логика (меньше вложенности, ранние return)
- Оптимизирован
reloadhandler
IpfTabCompleter
- Используется
List.of(...)вместоArrays.asList(...) filterPrefixсделанstatic
🧠 Поведенческие изменения (важно)
- Недоверенные прокси теперь никогда не пропускаются, независимо от failsafe режима
- Пустой список trusted proxies = никто не доверен (раньше — все доверены)
- Невалидные IP больше не попадают под rate limit
⚠️ Breaking Changes
- Из API удалён метод
hasTrustedForwardedIps - Изменено поведение proxy trust (может потребовать обновления конфигурации)
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:ylqXRH1i:ODBW2mXA"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:ylqXRH1i:ODBW2mXA"
}

