IPDynamic 26.1.2 — Range Lookup & Ban Preview
Range bans are powerful, but a single 192.168.*.* can quietly sweep up dozens of legitimate players. This release lets you see exactly who a range would hit — before you ban it. /ipdy ip now understands wildcards and shows every account inside a range, grouped by country.
⭐ New: Wildcard Range Lookup
/ipdy ip <ip> now accepts trailing wildcards to inspect a whole range instead of a single address:
/ipdy ip 190.1.2.3— single IP → exact lookup (GeoIP + VPN + accounts), unchanged/ipdy ip 190.1.2.*— /24 range (256 IPs) → every account in that block/ipdy ip 190.1.*.*— /16 range (65,536 IPs) → every account across the block/ipdy ip 190.*.*.*— /8 range (16.7M IPs) → every account across the block
Each range lookup reports:
- 📍 The exact range it covers (
190.1.2.0 – 190.1.2.255) - 👥 How many accounts would be affected, across how many distinct IPs
- 🌍 A country breakdown — e.g.
United States: 8,Germany: 4,Chile: 2— so you can spot when a range crosses regions and would catch unrelated players - 🖱️ A clickable, paginated account list — click a name fo its exact lookup
Why it matters: run the range as a lookup first (/ipdy ip 127.0.0.*), read who and what it touches, then decide whether to /ipdy ban. No more blind range bans that collateral-damage real players.
Tip: add a page number to browse long results →
/ipdy ip 190.1.*.* 2
🔒 Security & Reliability
- GeoIP over HTTPS — player IP addresses (PII) are no longer sent to the geolocation provider in cleartext. On by default, configurable.
- Injection-hardened range queries — strict allow-list pattern validation, fully parameterized SQL with
LIKE ... ESCAPE, an exact numeric range
re-check, and a configurable result cap so a broad pattern can - Per-player command cooldown —
/ipdy ipand/ipdy checkare rate-limited per user (console exempt). - Username sanitization — attacker-controlled names on offline-mode / Bedrock servers can no longer inject color or format codes into staff-facing output.
- Safer imports —
/ipdy importvalidates that every ban d range, or CIDR before inserting it. - Graceful shutdown — coroutine teardown is time-bounded, so a stuck GeoIP request can never freeze
/reloador server stop.
🔌 Integrations Now Live
- Public API (
IPDynamicAPIvia BukkitServicesManager) and the PlaceholderAPI expansion (9 placeholders) are now registered and working. Placeholders are served from an async-warmed cache — zero blocking I/O on the main thread.
🧹 Under the Hood
- Unified pagination, de-duplicated IP utilities, dead-code cleanup, and a shared coroutine error handler (commands no longer fail silently). Range lookups are covered by unit tests.
✅ Compatibility
- Minecraft / Paper: 1.17.x – 26.2.x (Spigot supported)
- Folia: supported
- Bedrock (Floodgate / Geyser): supported
- Java: 17 or higher
- PlaceholderAPI: optional
IPDynamic loads on the new 26.x server line (26.1.x / 26.2.x) through Paper's forward compatibility — the same jar keeps working from 1.17 up to the latest release.
📦 Installation
- Download
IPDynamic.jarbelow. - Drop it into your server's
plugins/folder. - Restart. Existing databases upgrade automatically — no data
Run /ipdy help in-game for the full command reference.