Перейти к содержимому
Mineforgian

IPDynamic

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

Загрузки
898
Подписчики
2
Обновлён
11 января 2026 г.
Лицензия
Apache-2.0

Опубликован 13 сентября 2024 г.

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 zero TPS impact, a SQLite database 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
OP1 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

  • SQLite database with WAL mode
  • Async operations via Kotlin Coroutines
  • In-memory caching 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

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:

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
Minecraft 1.17.x - 1.21.x
Server Paper or Spigot
Java 17 or higher

Technical Details

  • Language: Kotlin 1.9
  • Database: SQLite with WAL mode
  • Async: 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

  • Issues: 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!

Ченджлог

1.0.0Релиз1.21.9, 1.21.10, 1.21.11 · 11 января 2026 г.

IPDynamic 1.0.0 - The Rebirth Update

A complete rewrite from the ground up.


What's New

This isn't just an update — it's a complete rebuild of IPDynamic with professional architecture, better performance, and features that actually work.


Major Changes

Database System

  • NEW: SQLite database replaces JSON files
  • NEW: WAL mode for better concurrent access
  • NEW: Auto-adaptive schema (automatic updates, no data loss)
  • REMOVED: JSON file storage (prone to corruption)

Performance

  • NEW: Kotlin Coroutines for true async operations
  • NEW: Zero TPS impact - all operations are non-blocking
  • NEW: In-memory caching for bans and whitelist
  • IMPROVED: GeoIP lookups are now fully asynchronous

IP Banning

  • NEW: OP1 mode (192.168.1.*) - blocks ~256 IPs
  • NEW: OP2 mode (192.168.*.*) - blocks ~65,536 IPs
  • NEW: Temporary bans with duration support (30m, 12h, 7d, 4w)
  • NEW: Automatic expired ban cleanup
  • NEW: Custom ban screen for kicked players
  • CHANGED: Replaced CIDR notation with simpler OP1/OP2 system

Alt Detection

  • IMPROVED: Smart detection using UUID + Username verification
  • IMPROVED: Works correctly on both online and offline mode servers
  • FIXED: False positives when same player had different UUIDs

Whitelist System

  • NEW: Mojang API UUID verification
  • NEW: Dual verification (UUID + Username)
  • NEW: Reason field when adding players
  • IMPROVED: Reliable bypass for whitelisted players

Permissions

  • NEW: Granular permission system (10+ permissions)
  • NEW: Per-command permissions for fine-tuned access
  • NEW: Tab completion respects permissions
  • NEW: Help menu shows only available commands
  • CHANGED: No longer requires OP for everything

Configuration

  • NEW: messages.yml - fully customizable messages
  • NEW: Custom ban screen design
  • NEW: Placeholder support ({player}, {ip}, {reason}, etc.)
  • REMOVED: Multiple language files (single English messages.yml)
  • REMOVED: Discord webhook integration (may return in future)

Commands

  • NEW: /ipdy check <player> - Complete player profile
  • NEW: /ipdy history <player> - Connection history
  • NEW: /ipdy alts <player> - Alt account detection
  • NEW: /ipdy ip <address> - Lookup accounts by IP
  • NEW: /ipdy ban <op1|op2> <ip> [reason] [duration]
  • NEW: /ipdy unban <pattern>
  • NEW: /ipdy banlist - View active bans
  • NEW: /ipdy whitelist <add|remove|list>
  • NEW: /ipdy stats - Plugin statistics
  • NEW: /ipdy reload - Reload configuration
  • CHANGED: Command aliases: /ipdy, /ipd

Technical Details

  • Language: Kotlin 1.9
  • Async: MCCoroutine for Bukkit
  • Database: SQLite with JDBC
  • API: Paper API (compatible with Spigot)

Compatibility

Version Status
1.17.x - 1.21.x ✅ Supported
1.13.x - 1.16.x 🔜 Coming Soon

Requirements:

  • Java 17 or higher
  • Paper or Spigot server

Migration Notice

⚠️ This version is NOT compatible with the old DEV version.

The entire data structure has changed. If upgrading:

  1. Backup your old IPDynamic folder
  2. Delete the old IPDynamic folder
  3. Install the new IPDynamic.jar
  4. Restart your server

Permissions

ipdynamic.*           - Full access (default: op)
ipdynamic.check       - /ipdy check
ipdynamic.history     - /ipdy history
ipdynamic.alts        - /ipdy alts
ipdynamic.ip          - /ipdy ip
ipdynamic.ban         - /ipdy ban
ipdynamic.unban       - /ipdy unban
ipdynamic.banlist     - /ipdy banlist
ipdynamic.whitelist   - /ipdy whitelist
ipdynamic.stats       - /ipdy stats
ipdynamic.reload      - /ipdy reload

Known Issues

  • None at this time

What's Next

  • Support for 1.13.x - 1.16.x
  • Discord webhook integration
  • Web panel for management
  • Import tool for old DEV version data

Thank you for using IPDynamic!

If you encounter any issues, please report them on GitHub.

1.4.1Релиз1.20.6, 1.21, 1.21.1 · 21 октября 2024 г.

Java Update

IPDynamic is compatible with Java versions 16 through 22. There is no support for lower versions java 8 or 11, but if you need a lower edition, feel free to contact me on Discord as SrCodex.​

1.4.0Релиз1.20.6, 1.21, 1.21.1 · 30 сентября 2024 г.

Discord Webhook Delete the config.yml or add the option WebhookURL: "" below time-zone.

In the config.yml, you can set up a URL that will notify you when an IP is added to the blacklist (Only op1). Additionally, if a player with a blacklisted IP tries to join the server, the following information will be sent to the appropriate channel:

Username:

IP:

Alts:

Reason for blacklist:

Notification that they attempted to join the server.

For now, only one Discord webhook is supported to notify about attempts to connect with banned IPs, showing the account being used and any alts associated with that IP.

####################################
#    Dynamic IP created by SrCodex
#        Discord Tag SrCodex
#
#####################################


lang: "en" # ru (russian) | cn (chinese) | es (spanish) | en (english) | kr (korea)
time-zone: "America/Los_Angeles" # Default Time Zone WEB: https://timezonedb.com/
WebhookURL: "" # Discord Webhook URL

##########################################################
#          Dynamic IP Penalty Option 2
#         Read this before making changes
# To understand the new Ban OP2 system, you need to read this to get acquainted with what the new feature does. First and foremost, I have fixed an issue that was
# causing massive lag when applying a rank ban with option (OP2), as it was applying nearly 63,000 bans per second, resulting in significant lag.
# Therefore, I have divided the sanctions into 15 parts, with each part applying a ban to 4,392 accounts every 5 minutes. This will make the performance more stable.
# Once the IP range ban for option 2 starts, it will continue unless your server is turned off. So, how long should you wait? Option 2
# will apply a dynamic ban ranging from 0 to 255 on the last two digits, banning nearly 63,000 IPs, and this may take around 3-5 hours to complete.
#
# PERFORMANCE WARNING: The longer you set the ban time, for example, from 5 to 10 minutes, the higher the performance impact, but it will take longer for the ban system
# to apply restrictions to that dynamic IP. However, if you reduce the ban time from 5 minutes to 1 minute, it could cause very high lag and potentially crash the servers.
# If you still experience performance issues with a 5-minute ban, consider increasing the time to better suit your server’s needs.
##########################################################
ban-op2-minutes: 5 # Default 5 minutes
1.3.8Релиз1.20.6, 1.21, 1.21.1 · 23 сентября 2024 г.

You need to delete the config.yml & Message-RU.yml file to obtain the new content.

Improvements:​

Now, when you request account data, it will display the date, time, and the real IP address used to register on the server for the first time. It will also show the last date of activity on the server.

Each disconnection will display the IP address used at the moment of disconnection, including the date and time.

Time Zone​

We have now added a time zone feature that can be modified in config.yml to set the time zone for capturing specific date and time data for an account when they log in for the first time.

Message-RU.yml​

A Russian player named Reizi updated the message in their native Russian language, so you now need to delete the current file to receive the new content.

1.3.7Релиз1.20.6, 1.21, 1.21.1 · 22 сентября 2024 г.

IPDynamic Alts, help command visually updated

We have improved the display of the alt accounts and added a blacklisting system that will show up when requesting account data to check if a previous IP is on the blacklist. Additionally, we enhanced the symbols used in messages.

We also updated the help menu to make it more visually appealing

1.3.6Релиз1.20.6, 1.21, 1.21.1 · 20 сентября 2024 г.

I’ve added an enhancement to retrieve account information, which will now be displayed in a more detailed and well-organized manner.​

1.3.5Релиз1.20.6, 1.21, 1.21.1 · 18 сентября 2024 г.

It is recommended to delete the config.yml to set up the new configuration.

  • Changes and Improvements ​ We have improved the optimization of using op2. Now, after applying a ban, there will be a pause during which mass banning will stop for a period of time while the IPs being blacklisted are processed. This can be customized in the config.yml; I recommend setting it to 5 minutes or more for better performance.

  • If the bans exceed 7000 IPs per second, there will be a random interruption in the banning process to stabilize and process the sanctions.

  • Now, op1 can ban a dynamic IP from 0 to 255 in 2-3 seconds without crashing the server.

  • Additionally, both systems operate on separate threads to prevent saturation of the main thread when applying mass bans, especially when using op2.

1.3.3Релиз1.20.6, 1.21, 1.21.1 · 13 сентября 2024 г.

We've changed the API we used to get information about a player's IP when verifying their account

We’ve added a new feature to the /ipdynamic alts command. As you know, this command filters all IPs that have been used with that account, whether it's from lending the account to a friend or if someone else tries to log in with that account. Every IP is logged.

Now, we've introduced an additional feature: a section called "Connections." This will show you the IPs that the player has been using to log in. This enhancement will help you identify which IP the player uses most frequently, giving you a 90% certainty of their primary IP address.

Example

127.0.0.1 | Alts: 0 | Connections: 15 | Country: Chile <- Here we see that with this IP, the player logged in 15 times, which obviously indicates that it is their main IP.

127.0.0.2 | Alts: 0 | Connections. 3 | Country: Chile <- Here we see that with this IP, the player logged in 3 times, which could be a friend or someone who tried to access their account.

Комментарии

Загружаем…