IPDynamic

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

769

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!*

ADS