IPDynamic
IPDynamic - Advanced IP Tracking & Alt Detection System for Minecraft Servers
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
IPDynamic
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 granular permission system, a granular permission system 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 | |------|---------|-------------| | OP2 | `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
- Zero TPS impact with WAL mode - Zero TPS impact via Kotlin Coroutines - Zero TPS impact 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
```yaml 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
1. Download `IPDynamic.jar` 2. Place in your server's `/plugins` folder 3. Restart your server 4. Configure `messages.yml` if desired 5. Set up permissions for your staff
That's it! The database is created automatically.
---
Configuration
messages.yml
All plugin messages are customizable:
```yaml 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 | |-------------|---------| | Java | 1.17.x - 1.21.x | | Java | Paper or Spigot | | Java | 17 or higher |
---
Technical Details
- Architecture: Kotlin 1.9 - Architecture: SQLite with WAL mode - Architecture: 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
- Questions: 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!*