Synkai IP Limiter

Limits how many accounts can be linked to a IP, supports Webhooks, and Velocity side commands.

57

Quick challenge

How far can you run before the mobs catch you?

Synkai IP Limiter

Advanced Synkai IP Limiter

A powerful Velocity proxy plugin that prevents multiple accounts from joining your server using the same IP address. Includes account binding, alt-account detection, and Discord webhook notifications.

---

Features

- 🔒 Debug Mode - Restrict concurrent connections per IP address - 🔐 Debug Mode - Bind player accounts to their IP address - 🚫 Debug Mode - Automatically detect and prevent alt accounts - 🔑 Debug Mode - Allow ops and VIPs to bypass restrictions - 📢 Debug Mode - Color code support (&c, &4, etc.) - 🔔 Debug Mode - Get real-time notifications of violations - ⚪ Debug Mode - Configure trusted IPs with custom limits - ⏰ Debug Mode - Set binding duration (never, 1 week, 1 month) - 🐛 Debug Mode - Enhanced logging for troubleshooting

---

Installation

1. Download the latest compiled JAR file from the build directory 2. Place it in your Velocity proxy's `plugins/` directory 3. Restart your Velocity proxy server 4. Configuration file will be auto-generated at `plugins/IPLimit/config.yml`

---

Configuration

Edit `plugins/IPLimit/config.yml` to customize the plugin:

```yaml

IP Limit Configuration

Max players allowed per IP (This limits concurrent sessions for the valid account)

max-players-per-ip: 1

Permission to bypass checks (Ops usually have this)

bypass-permission: "iplimit.bypass"

Message shown when kicked due to IP limit/Binding (Supports Color Codes like &c, &4)

kick-message: "&cYou are not allowed to join with this IP! 1 Account per IP limit."

Message shown when kicked for using an Alt account

alt-kick-message: "&cAlt accounts are not allowed! This IP is bound to another account."

Binding expiration policy (never, 1w, 1m)

binding-expiration: "never"

Discord webhook settings (optional)

discord-webhook-enabled: false discord-webhook-url: "webhookurl here" discord-webhook-username: "Advanced Synkai IP limiter" discord-webhook-embed-color: 16711680

Whitelisted IPs (These IPs bypass all checks)

whitelisted-ips: - "192.168.1.1" - "10.0.0.1"

Optional limits for whitelisted IPs (overrides normal max)

whitelisted-ip-limits: "127.0.0.1": 3

Debug mode (prints more info to console)

debug: false ```

Configuration Options

| Option | Type | Description | Default | |--------|------|-------------|---------| | `max-players-per-ip` | Integer | Maximum players allowed per IP | 1 | | `bypass-permission` | String | Permission node to bypass checks | `iplimit.bypass` | | `kick-message` | String | Message when player hit IP limit | Customizable | | `alt-kick-message` | String | Message for alt accounts | Customizable | | `binding-expiration` | String | Binding duration: `never`, `1w`, `1m` | `never` | | `discord-webhook-enabled` | Boolean | Enable Discord notifications | `false` | | `discord-webhook-url` | String | Discord webhook URL | `webhookurl here` | | `discord-webhook-username` | String | Bot username for webhooks | Advanced Synkai IP limiter | | `discord-webhook-embed-color` | Integer | Embed color (RGB decimal) | 16711680 | | `whitelisted-ips` | List | IPs that bypass all checks | - | | `whitelisted-ip-limits` | Map | Custom limits for specific IPs | - | | `debug` | Boolean | Enable debug console output | `false` |

---

Permissions

| Permission | Description | Default | |-----------|-------------|---------| | `iplimit.bypass` | Bypass IP limit and binding checks | Ops | | `iplimit.admin` | Access admin commands | Ops |

---

Commands

```bash /iplimit [subcommand] ```

Subcommands

- `info` - Show player IP binding information - `reload` - Reload configuration from disk - `unbind <player>` - Remove IP binding for a player - `whitelist <ip>` - Add IP to whitelist - `debug [on|off]` - Toggle debug mode

---

Discord Webhook Setup

To get real-time notifications of IP violations:

1. Create a Discord webhook in your server settings 2. Copy the webhook URL 3. Edit `config.yml`: ```yaml discord-webhook-enabled: true discord-webhook-url: "https://discord.com/api/webhooks/YOUR_WEBHOOK_ID/YOUR_WEBHOOK_TOKEN" ``` 4. Customize the webhook username and embed color as desired 5. Reload the plugin with `/iplimit reload`

---

How It Works

1. Bypass Permission - Player joins with their IP, account is bound to that IP 2. Bypass Permission - ✅ Allowed (logged in again) 3. Bypass Permission - ❌ Kicked (alt account detected) 4. Bypass Permission - ⚠️ Allowed (new IP, rebinding) 5. Bypass Permission - ✅ Always allowed 6. Bypass Permission - ✅ Ops and VIPs bypass all checks

---

Features in Detail

Account Binding

Once a player joins, their account is bound to their IP address. This prevents other accounts from using the same IP.

Binding Expiration

Configure how long bindings remain active: - `never` - Bindings are permanent - `1w` - Bindings expire after 1 week - `1m` - Bindings expire after 1 month

IP Whitelist

Add trusted IPs (proxy, testing, corporate networks) to bypass all checks: ```yaml whitelisted-ips: - "192.168.1.1" - "10.0.0.1" ```

Set custom limits for whitelisted IPs: ```yaml whitelisted-ip-limits: "127.0.0.1": 5 # Allow 5 players from localhost ```

Debug Mode

Enable debug logging to troubleshoot issues: ```yaml debug: true ```

Check console for detailed information about: - Player connections - IP bindings - Permission checks - Webhook requests

---

Troubleshooting

Players Getting Kicked Unexpectedly

1. Check the player's IP: `/iplimit info <player>` 2. Verify whitelisted IPs if needed 3. Check if player has `iplimit.bypass` permission 4. Enable debug mode for more info

Discord Webhook Not Working

1. Verify the webhook URL is correct 2. Check `discord-webhook-enabled: true` 3. Ensure the webhook hasn't been deleted from Discord 4. Check console for error messages with debug enabled

Config Not Updating

1. Use `/iplimit reload` to reload configuration 2. Ensure YAML formatting is valid 3. Check file permissions on config.yml

ADS