IPDynamic
IPDynamic - Advanced IP Tracking & Alt Detection System for Minecraft Servers
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!*