Sueta

IPDynamic

26.1.2

IPDynamic - Advanced IP Tracking & Alt Detection System for Minecraft Servers

·Plugin
  1. 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.
    4 downloads
  2. 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 asynchronous
    IP 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 system
    Alt 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 UUIDs
    Whitelist System
    - NEW: Mojang API UUID verification - NEW: Dual verification (UUID + Username) - NEW: Reason field when adding players - IMPROVED: Reliable bypass for whitelisted players
    Permissions
    - 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 everything
    Configuration
    - 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 reload
    ---

    Known 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.
    502 downloads
  3. 1.4.1IPDynamic 1.4.1Oct 21, 2024

    Java Update

    IPDynamic is compatible with Java versions 16 through 22. There is no support for lower versions java 8 or 11, but if you need a lower edition, feel free to contact me on Discord as SrCodex.​
    141 downloads
  4. 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 minutes
    126 downloads
  5. 1.3.8IPDynamic 1.3.8Sep 23, 2024

    You need to delete the config.yml & Message-RU.yml file to obtain the new content.

    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.
    78 downloads
  6. 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 appealing
    57 downloads
  7. 1.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.​
    70 downloads
  8. 1.3.5IPDynamic 1.3.5Sep 18, 2024

    It is recommended to delete the config.yml to set up the new configuration.

    - 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.
    73 downloads
  9. 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. Example 127.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.
    75 downloads

Similar projects

Plugin →