
Better IP Filter
Lightweight and fast IP whitelist filter for Paper 1.21.x.
Автор: AREKKUZZERA2586обновлён 13 сент. 2026 г.
УправлениеУтилиты
Описание
Better IP Filter
Better IP Filter is a lightweight and efficient IP whitelist plugin designed for Minecraft Paper servers. It performs early IP validation during the login process and blocks connections from non-whitelisted IP addresses with minimal performance impact.
The plugin is intentionally minimalistic and focused on reliability, performance, and ease of use.
✨ Features
- IP whitelist filtering on player join
- Early connection check using
AsyncPlayerPreLoginEvent - Extremely lightweight and fast
- Toggleable filtering without server restart
- IPv4 validation
- Persistent storage (
ips.yml) - No external dependencies
- Fully compatible with LuckPerms (Bukkit permissions)
⚙️ How It Works
- Player IP is checked before the player fully joins the server
- Allowed IPs are stored in memory for O(1) lookup
- If the IP is not whitelisted, the connection is denied immediately
- Designed to add no noticeable overhead even on busy servers
🧾 Commands
| Command | Description |
|---|---|
/ipf add <ip> | Add an IP to the whitelist |
/ipf remove <ip> | Remove an IP from the whitelist |
/ipf list | Show all whitelisted IPs |
/ipf on | Enable IP filtering |
/ipf off | Disable IP filtering |
🔐 Permissions
| Permission | Description |
|---|---|
betteripfilter.admin | Full access |
betteripfilter.add | Add IPs |
betteripfilter.remove | Remove IPs |
betteripfilter.list | View whitelist |
betteripfilter.toggle | Enable / disable filter |
Permissions are standard Bukkit permissions and work seamlessly with LuckPerms.
Галерея
Последние версии
Все версии →release
Better IP Filter 1.4.5
1.4.513 сент. 2026 г.27Minecraft: 26.1, 26.1.1, 26.1.2, 26.2bukkit, paper, purpur, spigot
Что нового
- Added support for Paper/Minecraft 26.2
release
Better IP Filter 1.4.5
1.4.513 сент. 2026 г.14Minecraft: 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9bukkit, paper, purpur, spigot
Что нового
- Added support for Paper/Minecraft 26.2
release
Better IP Filter 1.4.4
1.4.422 июн. 2026 г.35Minecraft: 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9bukkit, paper, purpur, spigot
Что нового
### Added
- Added `/ipf check <ip>` to show whether an IP is allowed and which whitelist entry matches it.
- Added `/ipf addtemp <entry> <duration> [note]` for temporary in-memory whitelist entries.
- Added optional notes for permanent whitelist entries via `/ipf add <entry> [note]`.
- Added deny counters to `/ipf status` for not-whitelisted, proxy, rate-limit, and failsafe denies.
- Added tab completion for new commands and temporary durations.
- Added README proxy setup examples for standalone Paper, trusted proxy, Velocity, and invalid empty `PROXY_GATE`.
### Changed
- `/ipf add` and `/ipf remove` now report normalized whitelist entries in command responses.
- `/ipf list` now shows one entry per line with optional note and temporary expiration details.
- Updated plugin metadata and documentation for the new commands.
- Bumped version to `1.4.4`.
### Security
- Hardened webhook destination validation by resolving webhook hosts before sending and blocking local/private DNS results when `webhook.allow-local-addresses` is `false`.
### Compatibility
- No IPv6 support added in this release.
- Existing `ips.yml` list format remains compatible.
- Temporary entries are memory-only and do not survive server restarts.
release
Better IP Filter 1.4.3
1.4.322 мая 2026 г.37Minecraft: 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9bukkit, paper, purpur, spigot
Что нового
### Security
- Hardened webhook URL validation.
- Localhost and private literal IPv4 webhook targets are now blocked by default.
- Added `webhook.allow-local-addresses` for trusted local webhook relays.
- Sanitized denied log fields to prevent unsafe control characters in log output.
- Improved JSON escaping for webhook payloads.
### Config
- Reworked `config.yml` comments to make proxy, failsafe, rate limit, logging, and webhook settings easier to understand.
- Added clearer safety notes for `DENY_ALL`, `PROXY_GATE`, denied logs, and webhook payloads.
- Added a warning when `PROXY_GATE` is enabled with an empty trusted proxy list.
### Optimization
- Cached the global filtering enabled flag during config load instead of reading config on every login check.
**Full Changelog**: https://github.com/AREKKUZZERA/Better-IP-Filter/compare/1.4.2...1.4.3
release
Better IP Filter 1.4.2
1.4.220 мая 2026 г.11Minecraft: 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9bukkit, paper, purpur, spigot
Что нового
### Fixed
- Added validation for unsafe config values.
- Invalid `failsafe.mode` now falls back to `DENY_ALL`.
- Invalid `proxy.mode` now falls back to `DIRECT`.
- Restricted denied log file names to safe plain file names.
- Webhook URLs now reject user-info and fragments.
release
Better IP Filter 1.4.1
1.4.127 апр. 2026 г.17Minecraft: 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9bukkit, paper, purpur, spigot
Что нового
### Fixed
- Fixed IPv4 parsing edge case where `128.0.0.0` could be treated as invalid because it collided with the internal invalid sentinel.
- Fixed IP checks for signed Java `int` boundary values, including addresses in the `128.0.0.0+` range.
- Fixed webhook handling so invalid webhook URLs no longer risk breaking the async notifier worker.
### Improved
- Added safer IPv4 parsing API internally.
- Improved CIDR validation coverage for `/0`, `/16`, `/32`, and high-range IPv4 addresses.
- Improved default `config.yml` readability with clearer sections, examples, and security warnings.
- Prevented binary resources such as PNG files from being Maven-filtered during builds.
### Added
- Added JUnit 5 test setup.
- Added regression tests for IPv4 parsing, CIDR math, rate limiting with edge IPs, and webhook URL validation.
### Security
- Documented sensitive denied-log behavior in config comments.
- Clarified `PROXY_GATE`, Velocity forwarding, and `ALLOW_ALL` failsafe risks.
**Full Changelog**: https://github.com/AREKKUZZERA/Better-IP-Filter/compare/1.4.0...1.4.1
release
Better IP Filter 1.4.0
1.4.028 мар. 2026 г.19Minecraft: 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9bukkit, paper, purpur, spigot
Что нового
### 🔧 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 (больше не блокируются навсегда)
* **WebhookNotifier**
* Устранён race condition в `maybeLogDropStats`
* Поле `lastStatLogMillis` теперь используется корректно из worker-потока
#### 🌐 Network / Proxy
* **IpFilterListener**
* Исправлена логика **proxy gate**
* Недоверенные прокси теперь **всегда блокируются**
* Ранее при `ALLOW_ALL` могли проходить без логирования
* Удалена ошибка, при которой пустой список trusted proxies = доверие всем
#### 🧪 Tests
* **IpMathSelfCheck**
* Исправлена сортировка диапазонов IP
* Используется `Integer.compareUnsigned` вместо signed сравнения
#### 🧾 Logging
* **BetterIpFilterPlugin**
* Устранено дублирование `formatDeniedLine`
---
### 🚀 Улучшения производительности и кода
* Ленивая генерация строки deny-лога (если логирование отключено — строка не создаётся)
* Упрощена логика `onEnable` (inline executor setup)
* `WebhookNotifier`
* `switch` вместо if-chain в `escapeJson`
* Оптимизирован `buildPayload` (использует String concat → JDK 21 оптимизирует)
---
### 🧹 Рефакторинг
#### IpStore
* Убрано дублирование через:
* `commitResult(...)`
* `setUnavailable(...)`
* `ensureDataFolder()`
* `parseEntry` сделан `static`
#### IpfCommand
* Исправлен порядок валидации аргументов (сначала корректность IP)
* Упрощена логика (меньше вложенности, ранние return)
* Оптимизирован `reload` handler
#### IpfTabCompleter
* Используется `List.of(...)` вместо `Arrays.asList(...)`
* `filterPrefix` сделан `static`
---
### 🧠 Поведенческие изменения (важно)
* Недоверенные прокси теперь **никогда не пропускаются**, независимо от failsafe режима
* Пустой список trusted proxies = **никто не доверен** (раньше — все доверены)
* Невалидные IP больше не попадают под rate limit
---
### ⚠️ Breaking Changes
* Из API удалён метод `hasTrustedForwardedIps`
* Изменено поведение proxy trust (может потребовать обновления конфигурации)
beta
Better IP Filter 1.3.0
1.3.027 мар. 2026 г.18Minecraft: 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9bukkit, paper, purpur, spigot
Что нового
# Better IP Filter 1.21.X (1.3.0)
## 🚀 Improvements
* Обновлён `plugin.yml` для Paper `1.21.11`
* Упрощён парсинг IPv4
* Улучшена логика `IpStore`
* Добавлен rollback при неудачных `add()` / `remove()`
* Улучшены сообщения конфигурации и валидации
* Невалидные `trusted-forwarded-ips` теперь пропускаются с предупреждением
* Команды и kick-сообщения переведены на Adventure `Component`
## 🐛 Fixes
* Исправлен критический баг `Ipv4.INVALID = -1`
* `INVALID` заменён на `Integer.MIN_VALUE`
* Исправлена обработка IP с отрицательным `int`-представлением
* Исправлен edge-case для `255.255.255.255`
* Исправлена работа `IntHashSet` при удалении элементов из probe-chain
* Убран deprecated `ChatColor`
* Убран `@SuppressWarnings("deprecation")`
* `ipStr` в listener теперь всегда без порта
* Исправлен `canMerge` для `0xFFFFFFFF`
## 🧪 Tests
* Добавлен `testBroadcastIpNotInvalid`
* Добавлен `testIntHashSetTombstone`
## ⚠️ Requirements
* Paper **1.21+**
## 🧠 Internal
* `isValidIp` переименован в `isValidEntry`
* `switch` обновлён до expression switch
* `Collectors.toList()` заменён на `.toList()`
beta
Better IP Filter 1.2.0
1.2.027 янв. 2026 г.32Minecraft: 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9bukkit, paper, purpur, spigot
Что нового
## **1.2.0 – Correctness & QoL Update**
### 🔐 Security & Correctness
* Fixed and hardened **proxy mode behavior**
* Enforced **trusted proxy validation** for Bungee / Velocity setups
* Added explicit deny reason for untrusted proxy connections
* Clarified proxy handling (relies on Paper / proxy forwarding)
### ⚙️ QoL & Control
* Added `/ipf status` — live plugin diagnostics
* Added `/ipf reload` — reload config and whitelist without restart
* Improved command feedback for add/remove operations
* Safer, readable output for `/ipf list`
### ⚡ Performance
* Reduced rate-limiter cleanup overhead under high load
* Preserved fully async, non-blocking login checks
### 📦 Compatibility
* Fully compatible with **1.1.x**
* No config changes required (new options have safe defaults)
* Paper **1.21.x** · Java **21+**
beta
Better IP Filter 1.1.0
1.1.018 янв. 2026 г.26Minecraft: 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9bukkit, paper, purpur, spigot
Что нового
## **1.1.0**
**Security & Reliability Update**
* Added proxy-aware IP handling (Bungee / Velocity)
* Implemented connection rate limiting (anti-bruteforce)
* Added fail-safe mode for whitelist loading failures
* Added support for CIDR blocks and IP ranges
* Added audit logging for denied connections
* Added optional webhook notifications for security events
**Compatibility:** Paper 1.21–1.21.11 · Java 21+
