IPDynamic
Claim this plugin
This plugin was imported from Spiget and is currently unclaimed.
Plugin Information
Description
๐ Table of Contents
- โจ Features
- ๐ฅ Installation
- ๐ฎ Commands
- ๐ Permissions
- โ๏ธ Configuration
- ๐๏ธ Database
- ๐ง Technical Details
- ๐ธ Screenshots
- โ FAQ
โจ Features
๐ IP Tracking
Track every player connection with detailed information including IP address, country, and timestamps.
๐ฅ Alt Account Detection
Automatically detect alt accounts by analyzing shared IP addresses across your player database.
๐ซ IP Range Banning
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 |
โ Whitelist System
Allow specific players to bypass IP bans with UUID and username verification via Mojang API.
๐ GeoIP Integration
Automatic country detection for every connection using free GeoIP services.
๐พ Persistent Storage
SQLite database with auto-adaptive schema - your data survives plugin updates seamlessly.
โก Async Operations
Built with Kotlin Coroutines for non-blocking database operations that won't lag your server.
๐จ Customizable Messages
Full message customization via messages.yml - translate or customize every plugin message.
๐ Granular Permissions
Fine-grained permission system allowing you to give moderators exactly the access they need.
๐ฅ Installation
- Download the latest
IPDynamic.jarfrom Releases - Place the JAR file in your server's
pluginsfolder - Restart your server
- Configure the plugin in
plugins/IPDynamic/
Requirements
| Requirement | Version |
|---|---|
| Minecraft Server | 1.17.x - 1.21.x |
| Server Software | Paper or Spigot |
| Java | 17 or higher |
๐ฎ Commands
Base command: /ipdynamic (aliases: /ipdy, /ipd)
๐ Information Commands
| 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 |
๐ซ Ban Management
| 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
โ Whitelist Management
| 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 |
โ๏ธ Administration
| Command | Description |
|---|---|
/ipdy reload |
Reload plugin configuration |
/ipdy help |
Display available commands |
๐ Permissions
Master Permission
| Permission | Description | Default |
|---|---|---|
ipdynamic.* |
Full access to all commands | OP |
Individual Permissions
| 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 |
Example Permission Setup
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
โ๏ธ Configuration
๐ messages.yml
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
๐จ Color Codes
| 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 |
Strike |
๐๏ธ Database
IPDynamic uses SQLite for data storage with automatic schema management.
Database Location
plugins/IPDynamic/ipdynamic.db
Tables Structure
๐ฆ 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
Auto-Adaptive Schema
The database automatically adapts to plugin updates:
- โ Creates missing tables on startup
- โ Adds new columns without data loss
- โ Preserves all existing data during updates
๐ง Technical Details
Built With
| 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 |
Performance Optimizations
- ๐ 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
Version Compatibility
| Server Version | Status |
|---|---|
| 1.17.x | โ Supported |
| 1.18.x | โ Supported |
| 1.19.x | โ Supported |
| 1.20.x | โ Supported |
| 1.21.x | โ Supported |
๐ธ Screenshots
Player Check
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ 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 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
Ban Screen
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โ 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. โ
โ โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โ FAQ
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.
Yes! IPDynamic uses an auto-adaptive database schema that preserves all existing data while automatically adding new features.
No. All database operations are performed asynchronously using Kotlin Coroutines, ensuring zero impact on your server's TPS.
Yes, IPDynamic is compatible with both Paper and Spigot servers running version 1.17 or higher.
GeoIP accuracy depends on the free API services used. Country-level detection is generally 95%+ accurate, while city-level may vary.
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.
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ค Contributing
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
๐ฌ Support
- ๐ซ Issues: GitHub Issues
- ๐ญ Discussions: GitHub Discussions
Minecraft Plugin Badges
Use these badge images in docs, README files, or forum posts.