Skip to content

Limiter Module

The Limiter Module detects alt accounts based on IP addresses and enforces limits to prevent account abuse.

  • Alt Detection - Automatically detects accounts sharing the same IP address
  • Alt Limits - Configurable maximum alt accounts per IP (default: 5)
  • IP Limits - Limit different IPs per account (default: 3)
  • Auto-Disconnect - Automatically disconnect players exceeding limits
  • Staff Notifications - Real-time alerts when alt accounts join
  • Check on Join - Automatic checking when players join
  • Cooldown System - Prevents spam checks (30 seconds cooldown)
  • Custom Messages - Configurable disconnect messages
  • IP Tracking - Complete IP history for players
  • First/Last Seen - Track when accounts were first and last seen

View all alt accounts for a player.

Permission: zenith.limiter.alts

Parameters:

  • player - Player name or UUID

Examples:

Terminal window
/alts Player123
/alts 12345678-1234-1234-1234-123456789012

Set alt limit for a specific player.

Permission: zenith.limiter.alt_limits

Parameters:

  • player - Player name or UUID
  • limit - Maximum alt accounts allowed (optional)

Examples:

Terminal window
/altlimit Player123 5
/altlimit Player123 -1 # Unlimited

Set IP limit for a specific player.

Permission: zenith.limiter.ip_limits

Parameters:

  • player - Player name or UUID
  • limit - Maximum different IPs allowed (optional)

Examples:

Terminal window
/iplimit Player123 3
/iplimit Player123 -1 # Unlimited
modules/limiter.yml
enabled: true
alt_detection:
check_on_join: true
check_cooldown: 30
max_alts_shown: 5
show_ip_address: true
show_last_seen: true
alt_limits:
enabled: true
default_max_alts: -1 # -1 = unlimited, 0 = no alts, 1+ = specific limit
disconnect_on_exceed: true
disconnect_message:
- "&#FF6B6B&lALT ACCOUNT LIMIT EXCEEDED"
- "&#FFFFFFYou have reached your maximum allowed alt accounts."
- "&#FFD93DCurrent alts: &#FFFFFF{current_alts}"
- "&#FFD93DMaximum allowed: &#FFFFFF{max_alts}"
ip_limits:
enabled: true
default_max_ips: 3
disconnect_on_exceed: true
disconnect_message:
- "&#FF6B6B&lIP LIMIT EXCEEDED"
- "&#FFFFFFYou have used too many different IP addresses."
notifications:
permission: "zenith.limiter.alts"
message: "&#FF6B6B[Alt Detection] &#FFFFFF{player} &#FFD93Dmay be an alt of: &#FFFFFF{alts}"
sound: "BLOCK_NOTE_BLOCK_PLING"
sound_volume: 0.5
sound_pitch: 1.0
VariableDescriptionExample
{player}Player who was disconnectedPlayer123
{current_alts}Current number of alt accounts5
{max_alts}Maximum allowed alt accounts3
{ip}IP address of the player192.168.1.1
PermissionDescription
zenith.limiter.altsView alt accounts for players
zenith.limiter.bypassBypass alt detection and limits
zenith.limiter.alt_limitsManage alt limits for players
zenith.limiter.ip_limitsManage IP limits for players
permissions:
- zenith.limiter.alts: true
- zenith.limiter.alt_limits: true
- zenith.limiter.ip_limits: true

What they can do:

  • ✅ View alt accounts
  • ✅ Set alt limits
  • ✅ Set IP limits
  • ✅ Receive notifications
  1. Player Joins - When a player joins the server
  2. IP Check - System checks IP address against database
  3. Alt Search - Finds all accounts with the same IP
  4. Notification - Sends notification to staff if alts found
  5. Limit Check - Verifies if alt limit is exceeded
  6. Action - Disconnects player if limit exceeded
  • Limits how many accounts can share the same IP
  • Example: Max 5 accounts per IP
  • Prevents: One person with too many accounts
  • Limits how many different IPs one account can use
  • Example: Max 3 different IPs per account
  • Prevents: Account sharing or VPN abuse
alt_limits:
default_max_alts: 2 # Only 2 accounts per IP
ip_limits:
default_max_ips: 1 # Only 1 IP per account

Best for:

  • High-risk servers
  • Preventing alt abuse
  • Strict security
CREATE TABLE zn_players (
uuid VARCHAR(36) PRIMARY KEY,
username VARCHAR(16),
ip_address VARCHAR(45),
first_seen TIMESTAMP,
last_seen TIMESTAMP,
alt_limit INT DEFAULT -1,
ip_limit INT DEFAULT -1
);
-- Find all players with same IP
SELECT * FROM zn_players
WHERE ip_address = ?
AND uuid != ?
ORDER BY last_seen DESC;

When an alt account joins, staff with appropriate permissions receive a notification.

Configuration:

notifications:
enabled: true
message: "&#FF6B6B[Alt Detection] &#FFFFFF{player} &#FFD93Dmay be an alt of: &#FFFFFF{alts}"

Sound Effects:

sound: "BLOCK_NOTE_BLOCK_PLING"
sound_volume: 0.5
sound_pitch: 1.0

To disable alt detection notifications:

notifications:
message: "" # Empty message = no notification

Issue: Players getting disconnected without reason

  • Check alt limit configuration
  • Verify IP limit settings
  • Check if player bypass is enabled

Issue: Alt detection not working

  • Check if module is enabled
  • Verify check_on_join is true
  • Check database connection

Issue: No notifications received

  • Check zenith.limiter.alts permission
  • Verify notification message is not empty
  • Check sound configuration

Issue: False positives

  • Adjust alt limits to be more lenient
  • Check if VPNs are being used
  • Review IP tracking accuracy

Enable debug mode for detailed logging:

debug:
enabled: true
console: true
file: true
  • Cooldown System - Prevents excessive checks (30 seconds default)
  • Efficient Queries - Indexed IP address column
  • Caching - Results cached to reduce database load
  • Async Operations - All checks are async
  • Track alt detection frequency
  • Monitor limit enforcement
  • Review staff notifications
  • Check for false positives

Need help with the Limiter Module? Join our Discord: https://discord.gg/2qCMn6KHj4