Advanced IP Tracking & Alt Detection System for Minecraft Servers
Protect your server from ban evaders and manage player connections like never before.
- โจ Features
- ๐ฅ Installation
- ๐ฎ Commands
- ๐ Permissions
- โ๏ธ Configuration
- ๐๏ธ Database
- ๐ง Technical Details
- ๐ธ Screenshots
- โ FAQ
Track every player connection with detailed information including IP address, country, and timestamps.
Automatically detect alt accounts by analyzing shared IP addresses across your player database.
Powerful IP banning system with two operation modes:
| Mode | Pattern | Example | IPs Affected |
|---|---|---|---|
| OP1 | x.x.x.* |
192.168.1.* |
~256 IPs |
| OP2 | x.x.*.* |
192.168.*.* |
~65,536 IPs |
Allow specific players to bypass IP bans with UUID and username verification via Mojang API.
Automatic country detection for every connection using free GeoIP services.
SQLite database with auto-adaptive schema - your data survives plugin updates seamlessly.
Built with Kotlin Coroutines for non-blocking database operations that won't lag your server.
Full message customization via messages.yml - translate or customize every plugin message.
Fine-grained permission system allowing you to give moderators exactly the access they need.
- Download the latest
IPDynamic.jarfrom Releases - Place the JAR file in your server's
pluginsfolder - Restart your server
- Configure the plugin in
plugins/IPDynamic/
| Requirement | Version |
|---|---|
| Minecraft Server | 1.17.x - 1.21.x |
| Server Software | Paper or Spigot |
| Java | 17 or higher |
Base command: /ipdynamic (aliases: /ipdy, /ipd)
| Command | Description |
|---|---|
/ipdy check <player> |
View complete player profile with IP history and alt accounts |
/ipdy history <player> [limit] |
View player's connection history |
/ipdy alts <player> |
List all detected alt accounts for a player |
/ipdy ip <address> |
Find all accounts that have used a specific IP |
/ipdy stats |
View plugin statistics |
| Command | Description |
|---|---|
/ipdy ban <op1|op2> <ip> [reason] [duration] |
Ban an IP range |
/ipdy unban <pattern> |
Remove an IP ban |
/ipdy banlist |
View all active IP bans |
Duration Examples:
30m- 30 minutes12h- 12 hours7d- 7 days4w- 4 weeks- No duration = Permanent ban
| Command | Description |
|---|---|
/ipdy whitelist add <player> [reason] |
Add player to whitelist |
/ipdy whitelist remove <player> |
Remove player from whitelist |
/ipdy whitelist list |
View all whitelisted players |
| Command | Description |
|---|---|
/ipdy reload |
Reload plugin configuration |
/ipdy help |
Display available commands |
| Permission | Description | Default |
|---|---|---|
ipdynamic.* |
Full access to all commands | OP |
| Permission | Commands | Recommended For |
|---|---|---|
ipdynamic.check |
/ipdy check |
Moderators |
ipdynamic.history |
/ipdy history |
Moderators |
ipdynamic.alts |
/ipdy alts |
Moderators |
ipdynamic.ip |
/ipdy ip |
Moderators |
ipdynamic.ban |
/ipdy ban |
Administrators |
ipdynamic.unban |
/ipdy unban |
Administrators |
ipdynamic.banlist |
/ipdy banlist |
Administrators |
ipdynamic.whitelist |
/ipdy whitelist |
Administrators |
ipdynamic.stats |
/ipdy stats |
Administrators |
ipdynamic.reload |
/ipdy reload |
Administrators |
For Moderators (LuckPerms):
/lp group moderator permission set ipdynamic.check true
/lp group moderator permission set ipdynamic.history true
/lp group moderator permission set ipdynamic.alts true
/lp group moderator permission set ipdynamic.ip true
For Administrators:
/lp group admin permission set ipdynamic.* true
Customize all plugin messages with full color code support:
# Prefix for all messages
prefix: "&b&lIPDynamic &8|"
# Ban screen shown to banned players
ban-screen:
- "&c&lโ IP BANNED โ "
- ""
- "&7Your IP: &f{ip}"
- "&7Matched Pattern: &c{pattern}"
- "&7Reason: &f{reason}"
- "&7Banned by: &f{banned_by}"
- "&7Date: &f{banned_date}"
- "&7Duration: &f{duration}"
- ""
- "&7Contact an administrator if you believe this is an error."
# Duration formats
duration:
permanent: "&cPermanent"
expired: "&aExpired"
# Command messages
messages:
no-permission: "&cYou don't have permission to use this command."
player-not-found: "&cPlayer not found in database."
invalid-ip: "&cInvalid IP address format."
# ... more messages| Code | Color | Code | Color |
|---|---|---|---|
&0 |
Black | &8 |
Dark Gray |
&1 |
Dark Blue | &9 |
Blue |
&2 |
Dark Green | &a |
Green |
&3 |
Dark Aqua | &b |
Aqua |
&4 |
Dark Red | &c |
Red |
&5 |
Dark Purple | &d |
Pink |
&6 |
Gold | &e |
Yellow |
&7 |
Gray | &f |
White |
&l |
Bold | &o |
Italic |
&n |
Underline | &m |
IPDynamic uses SQLite for data storage with automatic schema management.
plugins/IPDynamic/ipdynamic.db
๐ฆ ipdynamic.db
โโโ ๐ players - Player profiles and first connection data
โโโ ๐ connections - Complete connection history log
โโโ ๐ ip_records - IP address records per player
โโโ ๐ ip_bans - Active IP range bans
โโโ ๐ whitelist - Whitelisted players
The database automatically adapts to plugin updates:
- โ Creates missing tables on startup
- โ Adds new columns without data loss
- โ Preserves all existing data during updates
| Technology | Purpose |
|---|---|
| Kotlin 1.9 | Primary language |
| MCCoroutine | Async operations on Bukkit |
| Paper API | Server integration |
| Adventure API | Modern text components |
| SQLite + JDBC | Data persistence |
| Mojang API | UUID verification |
- ๐ In-memory caching for bans and whitelist
- ๐ Async database operations prevent server lag
- ๐ WAL mode for SQLite concurrent access
- ๐ Connection pooling for efficient queries
- ๐ Lazy loading for player profiles
| Server Version | Status |
|---|---|
| 1.17.x | โ Supported |
| 1.18.x | โ Supported |
| 1.19.x | โ Supported |
| 1.20.x | โ Supported |
| 1.21.x | โ Supported |
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ IPDynamic | Player Information โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Username: ExamplePlayer โ
โ UUID: 12345678-1234-1234-1234-1234567 โ
โ First Connection: 01/01/2024 12:00:00 โ
โ Total Connections: 150 โ
โ โ
โ First IP โ
โ Address: 192.168.1.100 โ
โ Country: United States โ
โ โ
โ IP History (3) โ
โ - 192.168.1.100 (First) โ
โ Country: United States โ
โ Connections: 100 โ
โ โ
โ Alt Accounts Detected (2) โ
โ - AltAccount1 โ
โ Shared IP: 192.168.1.100 โ
โ - AltAccount2 โ
โ Shared IP: 10.0.0.50 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โ IP BANNED โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ Your IP: 192.168.1.100 โ
โ Matched Pattern: 192.168.1.* โ
โ Reason: Ban evasion โ
โ Banned by: AdminName โ
โ Date: 01/01/2024 15:30:00 โ
โ Duration: 7d 0h โ
โ โ
โ Contact an administrator if you โ
โ believe this is an error. โ
โ โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
Does this plugin work with offline/cracked servers?
Yes, IPDynamic works with both online and offline mode servers. The whitelist system uses both UUID and username verification to handle UUID differences between modes.
Will my data be preserved after updating the plugin?
Yes! IPDynamic uses an auto-adaptive database schema that preserves all existing data while automatically adding new features.
Does this plugin cause lag?
No. All database operations are performed asynchronously using Kotlin Coroutines, ensuring zero impact on your server's TPS.
Can I use this with Spigot instead of Paper?
Yes, IPDynamic is compatible with both Paper and Spigot servers running version 1.17 or higher.
How accurate is the GeoIP detection?
GeoIP accuracy depends on the free API services used. Country-level detection is generally 95%+ accurate, while city-level may vary.
Can players bypass IP bans with VPNs?
Players can attempt to use VPNs, but you can ban VPN IP ranges using OP2 mode. Consider integrating with anti-VPN plugins for enhanced protection.
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- ๐ซ Issues: GitHub Issues
- ๐ญ Discussions: GitHub Discussions
Made with โค๏ธ by the IPDynamic Team