26.1.2latestIPDynamic 26.1.2 — Range Lookup & Ban Previewlast week 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 ip and /ipdy check are 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 import validates 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 /reload or server stop.
Integrations Now Live Public API (IPDynamicAPI via Bukkit ServicesManager) 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.jar below. 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.
1.0.0IPDynamic 1.0.0Jan 11, 2026 IPDynamic 1.0.0 - The Rebirth Update
A complete rewrite from the ground up.
---What's New
This isn't just an update — it's a complete rebuild of IPDynamic with professional architecture, better performance, and features that actually work. ---Major Changes
Database System
- NEW: SQLite database replaces JSON files - NEW: WAL mode for better concurrent access - NEW: Auto-adaptive schema (automatic updates, no data loss) - REMOVED: JSON file storage (prone to corruption)Performance
- NEW: Kotlin Coroutines for true async operations - NEW: Zero TPS impact - all operations are non-blocking - NEW: In-memory caching for bans and whitelist - IMPROVED: GeoIP lookups are now fully asynchronousIP Banning
- NEW: OP1 mode (192.168.1.*) - blocks ~256 IPs - NEW: OP2 mode (192.168.*.*) - blocks ~65,536 IPs - NEW: Temporary bans with duration support (30m, 12h, 7d, 4w) - NEW: Automatic expired ban cleanup - NEW: Custom ban screen for kicked players - CHANGED: Replaced CIDR notation with simpler OP1/OP2 systemAlt Detection
- IMPROVED: Smart detection using UUID + Username verification - IMPROVED: Works correctly on both online and offline mode servers - FIXED: False positives when same player had different UUIDsWhitelist System
- NEW: Mojang API UUID verification - NEW: Dual verification (UUID + Username) - NEW: Reason field when adding players - IMPROVED: Reliable bypass for whitelisted playersPermissions
- NEW: Granular permission system (10+ permissions) - NEW: Per-command permissions for fine-tuned access - NEW: Tab completion respects permissions - NEW: Help menu shows only available commands - CHANGED: No longer requires OP for everythingConfiguration
- NEW:messages.yml- fully customizable messages - NEW: Custom ban screen design - NEW: Placeholder support ({player}, {ip}, {reason}, etc.) - REMOVED: Multiple language files (single English messages.yml) - REMOVED: Discord webhook integration (may return in future)Commands
- NEW:/ipdy check <player>- Complete player profile - NEW:/ipdy history <player>- Connection history - NEW:/ipdy alts <player>- Alt account detection - NEW:/ipdy ip <address>- Lookup accounts by IP - NEW:/ipdy ban <op1|op2> <ip> [reason] [duration]- NEW:/ipdy unban <pattern>- NEW:/ipdy banlist- View active bans - NEW:/ipdy whitelist <add|remove|list>- NEW:/ipdy stats- Plugin statistics - NEW:/ipdy reload- Reload configuration - CHANGED: Command aliases:/ipdy,/ipd---Technical Details
- Language: Kotlin 1.9 - Async: MCCoroutine for Bukkit - Database: SQLite with JDBC - API: Paper API (compatible with Spigot) ---Compatibility
| Version | Status | |---------|--------| | 1.17.x - 1.21.x |Supported | | 1.13.x - 1.16.x |
Coming Soon | Requirements: - Java 17 or higher - Paper or Spigot server ---
Migration Notice
This version is NOT compatible with the old DEV version. The entire data structure has changed. If upgrading: 1. Backup your old IPDynamic folder 2. Delete the old IPDynamic folder 3. Install the new IPDynamic.jar 4. Restart your server ---
Permissions
---ipdynamic.* - Full access (default: op) ipdynamic.check - /ipdy check ipdynamic.history - /ipdy history ipdynamic.alts - /ipdy alts ipdynamic.ip - /ipdy ip ipdynamic.ban - /ipdy ban ipdynamic.unban - /ipdy unban ipdynamic.banlist - /ipdy banlist ipdynamic.whitelist - /ipdy whitelist ipdynamic.stats - /ipdy stats ipdynamic.reload - /ipdy reloadKnown Issues
- None at this time ---What's Next
- [ ] Support for 1.13.x - 1.16.x - [ ] Discord webhook integration - [ ] Web panel for management - [ ] Import tool for old DEV version data --- Thank you for using IPDynamic! If you encounter any issues, please report them on GitHub.1.4.1IPDynamic 1.4.1Oct 21, 2024 Java Update
IPDynamic is compatible with Java versions16through22. There is no support for lower versions java8or11, but if you need a lower edition, feel free to contact me on Discord asSrCodex.1.4.0IPDynamic 1.4.0Sep 30, 2024 Discord Webhook Delete the config.yml or add the option WebhookURL: "" below time-zone. In the config.yml, you can set up a URL that will notify you when an IP is added to the blacklist (Only op1). Additionally, if a player with a blacklisted IP tries to join the server, the following information will be sent to the appropriate channel: Username: IP: Alts: Reason for blacklist: Notification that they attempted to join the server. For now, only one Discord webhook is supported to notify about attempts to connect with banned IPs, showing the account being used and any alts associated with that IP.#################################### # Dynamic IP created by SrCodex # Discord Tag SrCodex # ##################################### lang: "en" # ru (russian) | cn (chinese) | es (spanish) | en (english) | kr (korea) time-zone: "America/Los_Angeles" # Default Time Zone WEB: https://timezonedb.com/ WebhookURL: "" # Discord Webhook URL ########################################################## # Dynamic IP Penalty Option 2 # Read this before making changes # To understand the new Ban OP2 system, you need to read this to get acquainted with what the new feature does. First and foremost, I have fixed an issue that was # causing massive lag when applying a rank ban with option (OP2), as it was applying nearly 63,000 bans per second, resulting in significant lag. # Therefore, I have divided the sanctions into 15 parts, with each part applying a ban to 4,392 accounts every 5 minutes. This will make the performance more stable. # Once the IP range ban for option 2 starts, it will continue unless your server is turned off. So, how long should you wait? Option 2 # will apply a dynamic ban ranging from 0 to 255 on the last two digits, banning nearly 63,000 IPs, and this may take around 3-5 hours to complete. # # PERFORMANCE WARNING: The longer you set the ban time, for example, from 5 to 10 minutes, the higher the performance impact, but it will take longer for the ban system # to apply restrictions to that dynamic IP. However, if you reduce the ban time from 5 minutes to 1 minute, it could cause very high lag and potentially crash the servers. # If you still experience performance issues with a 5-minute ban, consider increasing the time to better suit your server’s needs. ########################################################## ban-op2-minutes: 5 # Default 5 minutes1.3.8IPDynamic 1.3.8Sep 23, 2024 You need to delete the
Improvements: Now, when you request account data, it will display the date, time, and the real IP address used to register on the server for the first time. It will also show the last date of activity on the server. Each disconnection will display the IP address used at the moment of disconnection, including the date and time. Time Zone We have now added a time zone feature that can be modified in config.yml to set the time zone for capturing specific date and time data for an account when they log in for the first time. Message-RU.yml A Russian player named Reizi updated the message in their native Russian language, so you now need to delete the current file to receive the new content.config.yml&Message-RU.ymlfile to obtain the new content.1.3.7IPDynamic 1.3.7Sep 22, 2024 IPDynamic Alts, help command visually updated
We have improved the display of the alt accounts and added a blacklisting system that will show up when requesting account data to check if a previous IP is on the blacklist. Additionally, we enhanced the symbols used in messages. We also updated the help menu to make it more visually appealing1.3.6IPDynamic 1.3.6Sep 20, 2024 I’ve added an enhancement to retrieve account information, which will now be displayed in a more detailed and well-organized manner.1.3.5IPDynamic 1.3.5Sep 18, 2024 It is recommended to delete the
- Changes and Improvements We have improved the optimization of using op2. Now, after applying a ban, there will be a pause during which mass banning will stop for a period of time while the IPs being blacklisted are processed. This can be customized in the config.yml; I recommend setting it to 5 minutes or more for better performance. - If the bans exceed 7000 IPs per second, there will be a random interruption in the banning process to stabilize and process the sanctions. - Now, op1 can ban a dynamic IP from 0 to 255 in 2-3 seconds without crashing the server. - Additionally, both systems operate on separate threads to prevent saturation of the main thread when applying mass bans, especially when using op2.config.ymlto set up the new configuration.1.3.3IPDynamic 1.3.3Sep 13, 2024 We've changed the API we used to get information about a player's IP when verifying their account We’ve added a new feature to the /ipdynamic alts <player> command. As you know, this command filters all IPs that have been used with that account, whether it's from lending the account to a friend or if someone else tries to log in with that account. Every IP is logged. Now, we've introduced an additional feature: a section called "Connections." This will show you the IPs that the player has been using to log in. This enhancement will help you identify which IP the player uses most frequently, giving you a 90% certainty of their primary IP address. Example127.0.0.1 | Alts: 0 | Connections: 15 | Country: Chile<- Here we see that with this IP, the player logged in 15 times, which obviously indicates that it is their main IP.127.0.0.2 | Alts: 0 | Connections. 3 | Country: Chile<- Here we see that with this IP, the player logged in 3 times, which could be a friend or someone who tried to access their account.
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta