Full Changelog - https://github.com/SrCodexStudio/IPDynamic/releases
Folia Support
IPDynamic is now fully compatible with Folia (Paper's multi-threaded regionized server). A single JAR works across Paper, Spigot, Purpur, and Folia
without separate builds.
- Runtime detection of Folia via SchedulerHelper that automatically routes scheduler calls to the correct API
- All Bukkit.getScheduler() calls replaced with Folia-safe alternatives: getAsyncScheduler(), getGlobalRegionScheduler(), and entity.getScheduler()
- Player kicks dispatched on the entity's region thread via runOnEntity() instead of the global main thread
- Removed MCCoroutine Bukkit dispatcher dependency entirely. All coroutines now run on a plugin-owned CoroutineScope(SupervisorJob() + Dispatchers.IO)
that is properly cancelled on disable- Added folia-supported: true to plugin.yml
[2.0.0] - 2026-03-24
Complete Rewrite - Premium Edition
Full Changelog - https://github.com/SrCodexStudio/IPDynamic/releases
This release is a complete ground-up rewrite of IPDynamic. Every file has been redesigned for production-grade quality, performance, and extensibility. The plugin has been upgraded from 13 source files to 78 source files across a clean modular architecture.
Backward Compatible: Existing v1.x databases are automatically upgraded on first startup. No data loss, no manual migration required.
IPDynamic 1.0.0
The Rebirth Update
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
A New Beginning
Dear Community,
First and foremost, I owe you all a sincere apology.
The DEV BUILD version of IPDynamic was... let's be honest, a mess. Poor maintenance, inconsistent updates, bugs that never got fixed, and a codebase that became increasingly difficult to work with. Many of you trusted this plugin with your server's security, and I let you down.
I am truly sorry.
After months of reflection, countless messages from the community asking "Will IPDynamic ever be updated?", and a lot of soul-searching about what went wrong, I made a decision:
IPDynamic deserved better. YOU deserved better.
So instead of patching a broken foundation, I chose to rebuild from the ground up.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Introducing IPDynamic 1.0.0
Not an update. A complete rebirth.
This isn't just a new version. This is what IPDynamic should have been from the start.
What Changed? Everything.
Old DEV Version New 1.0.0 Version JSON files - Slow, prone to corruption SQLite Database - Fast, reliable, professional Synchronous operations - Caused lag spikes Async Coroutines - Zero TPS impact, ever Messy codebase - Hard to maintain Clean Kotlin architecture - Maintainable & extensible OP required - All or nothing Granular permissions - Fine-tuned access control Hardcoded messages - No customization Full messages.yml - Customize everything CIDR notation - Confusing for many Simple OP1/OP2 modes - Easy to understand Basic alt detection - Often inaccurate Smart UUID verification - Accurate results Manual updates - Risk of data loss Auto-adaptive schema - Seamless updates
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Key Features
- SQLite Database
Your data is now stored in a proper database. No more JSON corruption. No more lost records. The database automatically adapts to plugin updates - no manual migration ever needed.- True Async Operations
Built with Kotlin Coroutines from the ground up. Every database query, every GeoIP lookup, every alt check runs asynchronously. Your server's TPS will never be affected.- Granular Permission System
No more "give OP or nothing". Now you can give your moderators access to /ipdy check and /ipdy alts without giving them ban powers. Full control over who can do what.- Complete Message Customization
Every single message in a clean messages.yml file. Customize ban screens, command responses, formats - everything. All in English, ready to translate.- Smarter Alt Detection
Uses both UUID and username verification. Works correctly on both online and offline mode servers. No more false positives.- Flexible IP Banning
Two simple modes anyone can understand:
Code:OP1: 192.168.1.* → Blocks last segment (~256 IPs) OP2: 192.168.*.* → Blocks last 2 segments (~65,536 IPs)- Whitelist with Mojang Verification
When you whitelist a player, we verify their UUID with Mojang's API. Works perfectly even if they change their username.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Important: Migration Notice
This version is NOT compatible with the old DEV version data.
The entire data structure has changed. If you're upgrading from the DEV version:
- Backup your old IPDynamic folder (just in case)
- Delete the old IPDynamic folder from /plugins
- Install the new IPDynamic.jar
- Restart your server
I know losing old data is painful. But trust me - starting fresh with a solid foundation is worth it. The new system will serve you much better in the long run.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Version Support
Minecraft Version Status 1.17.x - 1.21.x Fully Supported 1.13.x - 1.16.x Coming Soon
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
A Promise Moving Forward
I've learned from my mistakes. This time, I'm committed to:
- Regular maintenance - No more abandoning the project
- Proper testing - Before every release
- Community feedback - Your suggestions matter
- Clear communication - You'll know what's happening
IPDynamic is back, and it's here to stay.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Thank You
To everyone who stuck around, who kept asking about updates, who believed this plugin could be better - thank you.
Your persistence pushed me to do this right. This update is for you.
Welcome to the new IPDynamic.
- SrCodex
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
If you appreciate this complete rewrite, please consider leaving a review.
It helps more than you know.
Now the command /ipdynamic alts, not only search the player accounts now you can search for an ip that will show all accounts linked to that ip, also removed the search limit that was by user account or example the account was called SrCodex but if you searched ipdynamic alts srcodex type because it gave an error that did not find the data because the account is registered as SrCodex, well now if you search with upper or lower case letters it should give you the correct data no matter if you put srCODex, it will still give you the correct information.
