
IPDynamic
IPDynamic - Advanced IP Tracking & Alt Detection System for Minecraft Servers
IPDynamic
Advanced IP Tracking & Alt Detection System for Minecraft Servers
Overview
IPDynamic is a powerful security plugin that helps server administrators track player connections, detect alt accounts, and manage IP-based bans with precision.
Built from the ground up with modern technologies, IPDynamic offers zero TPS impact, a SQLite database for reliable data storage, and a granular permission system that gives you full control over staff access.
Features
🔍 IP Tracking
Every player connection is recorded with complete details:
- IP address and country (GeoIP)
- First and last connection timestamps
- Total connection count
- Complete IP history per player
👥 Alt Detection
Intelligently detect alt accounts by analyzing shared IPs:
- Cross-references all player IP histories
- UUID + Username verification for accuracy
- Works on both online and offline mode servers
- View all accounts associated with any IP
🚫 IP Range Banning
Two flexible and easy-to-understand ban modes:
| Mode | Pattern | IPs Blocked |
|---|---|---|
| OP1 | 192.168.1.* | ~256 IPs |
| OP2 | 192.168.*.* | ~65,536 IPs |
- Temporary or permanent bans
- Custom ban reasons
- Automatic expired ban cleanup
- Beautiful disconnect screen for banned players
✅ Whitelist System
Allow trusted players to bypass IP bans:
- Mojang API UUID verification
- Works even if players change usernames
- Add optional reasons when whitelisting
🌍 GeoIP Integration
Automatic country detection for every connection using free GeoIP services.
⚡ Performance Optimized
- SQLite database with WAL mode
- Async operations via Kotlin Coroutines
- In-memory caching for instant lookups
- Zero TPS impact - guaranteed
🎨 Fully Customizable
Every message can be customized in messages.yml:
- Ban screens
- Command responses
- All plugin messages
- Full color code support
🔐 Granular Permissions
Give your staff exactly the access they need:
- 10+ individual permissions
- Per-command access control
- Tab completion respects permissions
Commands
Base command: /ipdynamic (aliases: /ipdy, /ipd)
Information
| Command | Description |
|---|---|
/ipdy check <player> | View complete player profile |
/ipdy history <player> | View connection history |
/ipdy alts <player> | List detected alt accounts |
/ipdy ip <address> | Find accounts by IP |
/ipdy stats | View plugin statistics |
Ban Management
| Command | Description |
|---|---|
/ipdy ban <op1|op2> <ip> [reason] [duration] | Ban an IP range |
/ipdy unban <pattern> | Remove a ban |
/ipdy banlist | View active bans |
Duration examples: 30m, 12h, 7d, 4w (no duration = permanent)
Whitelist
| Command | Description |
|---|---|
/ipdy whitelist add <player> [reason] | Add to whitelist |
/ipdy whitelist remove <player> | Remove from whitelist |
/ipdy whitelist list | View whitelisted players |
Administration
| Command | Description |
|---|---|
/ipdy reload | Reload configuration |
/ipdy help | Display help menu |
Permissions
ipdynamic.* # Full access (default: op)
# Information (for Moderators)
ipdynamic.check # /ipdy check
ipdynamic.history # /ipdy history
ipdynamic.alts # /ipdy alts
ipdynamic.ip # /ipdy ip
# Ban Management (for Admins)
ipdynamic.ban # /ipdy ban
ipdynamic.unban # /ipdy unban
ipdynamic.banlist # /ipdy banlist
# Whitelist Management
ipdynamic.whitelist # /ipdy whitelist (add/remove/list)
# System
ipdynamic.stats # /ipdy stats
ipdynamic.reload # /ipdy reload
Example Setup (LuckPerms)
Moderators - Query access only:
/lp group mod permission set ipdynamic.check true
/lp group mod permission set ipdynamic.history true
/lp group mod permission set ipdynamic.alts true
/lp group mod permission set ipdynamic.ip true
Admins - Full access:
/lp group admin permission set ipdynamic.* true
Installation
- Download
IPDynamic.jar - Place in your server's
/pluginsfolder - Restart your server
- Configure
messages.ymlif desired - Set up permissions for your staff
That's it! The database is created automatically.
Configuration
messages.yml
All plugin messages are customizable:
prefix: "&b&lIPDynamic &8|- "
ban-screen:
lines:
- "&c&lIPDynamic &8|- &fIP Range Ban"
- ""
- "&7Your IP has been banned from this server."
- "&7IP Address: &f{ip}"
- "&7Banned Range: &c{pattern}"
- "&7Reason: &f{reason}"
- "&7Duration: &f{duration}"
commands:
no-permission: "&cYou don't have permission."
player-not-found: "&cPlayer not found in database."
# ... fully customizable
Available Placeholders
| Placeholder | Description |
|---|---|
{player} | Player name |
{ip} | IP address |
{pattern} | Ban pattern |
{reason} | Ban reason |
{banned_by} | Who banned |
{banned_date} | Ban date |
{duration} | Ban duration |
{expires} | Expiration date |
{country} | Country |
{count} | Count (bans, alts, etc.) |
Requirements
| Requirement | Version |
|---|---|
| Minecraft | 1.17.x - 1.21.x |
| Server | Paper or Spigot |
| Java | 17 or higher |
Technical Details
- Language: Kotlin 1.9
- Database: SQLite with WAL mode
- Async: MCCoroutine for Bukkit
- Architecture: Clean, maintainable code
Database
IPDynamic uses SQLite for reliable data storage:
- Automatic schema creation
- Auto-adaptive updates (no manual migration)
- WAL mode for better performance
- All data in
plugins/IPDynamic/ipdynamic.db
Support
- Issues: Report bugs on GitHub
- Questions: Leave a comment or open a discussion
Roadmap
- Support for 1.13.x - 1.16.x
- Discord webhook notifications
- Web management panel
- Data import from other plugins
Protect your server with IPDynamic.
If you find this plugin useful, please consider leaving a review!
