Skip to content

Ban Module

The Ban Module provides comprehensive player banning functionality with both manual and template-based systems.

  • Manual Bans - Custom duration and reason
  • Template Bans - Predefined punishment templates
  • IP Bans - Ban player and their IP address
  • Offline Bans - Ban players who are not online
  • Automatic Unban - Time-based ban expiration
  • Ban History - Complete ban tracking
  • Escalation System - Automatic punishment escalation
  • Appeal System - Player appeal management
  • Case IDs - Unique identifier for each ban
  • Staff Tracking - Who issued the ban
  • Reason Templates - Predefined ban reasons
  • Staff Notifications - Real-time alerts when banned players attempt to join

Ban a player with custom duration and reason.

Permission: zenith.ban

Parameters:

  • player - Player name to ban
  • duration - Ban duration (1d, 2h, 30m, permanent)
  • reason - Reason for the ban

Examples:

Terminal window
/ban Player123 1d Cheating detected
/ban Player123 permanent Griefing
/ban Player123 2h Spam

Remove a ban from a player.

Permission: zenith.unban

Parameters:

  • player - Player name to unban
  • reason - Optional reason for unban

Examples:

Terminal window
/unban Player123
/unban Player123 Appeal accepted

Ban a player and their IP address.

Permission: zenith.ipban

Parameters:

  • player - Player name to ban (must be online)
  • duration - Ban duration (optional, defaults to permanent)
  • reason - Reason for IP ban (optional, uses default reason if not provided)

Command Syntax (configurable):

  • If both duration and reason are required: /ipban <player> <duration> <reason>
  • If only duration is required: /ipban <player> <duration> [reason]
  • If only reason is required: /ipban <player> [duration] <reason>
  • If neither is required: /ipban <player> [duration] [reason]

IP banning blocks a specific IP address from connecting to your server. This means that not only the banned player cannot connect, but anyone else using the same IP address (like family members, roommates, or people sharing the same internet connection) will also be blocked.

IP bans should be used in these situations:

  • Severe violations - Cheating, griefing, or harassment
  • Repeat offenders - Players who keep creating new accounts
  • Security threats - DDoS attacks or malicious behavior
  • Spam accounts - Multiple accounts from the same source

First, you need to identify the player you want to ban:

Terminal window
# Check if player is online (required for /ipban)
/ipban PlayerName
# Or check their IP address in logs
# Look for: "Player PlayerName[/IP_ADDRESS:PORT] logged in"

Use the /ipban command with the player’s name:

Terminal window
# Basic IP ban (uses default duration and reason)
/ipban PlayerName
# IP ban with custom duration
/ipban PlayerName 7d
# IP ban with custom reason
/ipban PlayerName "Cheating and griefing"
# IP ban with both duration and reason
/ipban PlayerName 7d "Cheating and griefing"
/ipban PlayerName permanent "Severe harassment"
/ipban PlayerName 30d "Repeated rule violations"

Check that the IP ban was applied:

Terminal window
# The player should be immediately disconnected
# Check ban list or logs to confirm
Terminal window
# Uses default duration and reason from config
/ipban Player123
Terminal window
# Ban for 1 day
/ipban Player123 1d "Spam and harassment"
# Ban for 1 week
/ipban Player123 7d "Cheating detected"
# Ban for 1 month
/ipban Player123 30d "Griefing and toxicity"
Terminal window
# Permanent ban for severe violations
/ipban Player123 permanent "DDoS attacks"
# Permanent ban for repeat offenses
/ipban Player123 permanent "Multiple account creation"
Terminal window
# Uses default duration with custom reason
/ipban Player123 "Custom reason here"
FormatExampleDescription
1m1m1 minute
1h1h1 hour
1d1d1 day
1w1w1 week
1mo1mo1 month
1y1y1 year
permanentpermanentNever expires
Terminal window
# Check if a player is IP banned
/ban PlayerName 1d test
# If they're IP banned, they won't be able to connect
Terminal window
# Unban the player (removes both player and IP ban)
/unban PlayerName Appeal accepted
  1. Verify the violation - Make sure you have clear evidence
  2. Check for shared IPs - Look for other players from the same IP
  3. Consider alternatives - Regular bans might be sufficient
  4. Document the reason - Keep detailed records
  1. Monitor for bypasses - Watch for VPN usage
  2. Check appeals - Review unban requests carefully
  3. Update staff - Inform other moderators
  4. Log everything - Keep detailed ban records
  • VPN usage: Player is using a VPN to change IP
  • Dynamic IP: Their ISP assigned a new IP address
  • Mobile data: Player switched to mobile internet
  • Ban not applied: Check command execution and permissions
  • Shared household: Family member or roommate
  • School/work: Shared internet connection
  • Public WiFi: Multiple people using same network
  • Solution: Use /unban and consider regular ban instead
  • Check permissions: Ensure you have zenith.ban permission
  • Verify command: Make sure syntax is correct
  • Check logs: Look for error messages
  • Module status: Ensure ban module is enabled

When a banned player tries to join the server, staff members with the appropriate permission will receive a real-time notification.

modules/ban.yml
staff_notifications:
join_attempt:
enabled: true # Enable/disable join attempt notifications
message: "&#FF8800{player} &#FF0000tried to join but is banned &#FFAAAA({duration_left})" # Variables: {player} - Player name, {duration_left} - Remaining ban duration
# Note: Staff members need the permission "zenith.ban.join.notifications" to receive these notifications
VariableDescriptionExample
{player}Name of the banned playerPlayer123
{duration_left}Remaining ban duration7d 12h

When a banned player tries to join, staff will see:

Player123 tried to join but is banned (7d 12h)

Staff members need the following permission to receive join attempt notifications:

  • zenith.ban.join.notifications - Receive notifications when banned players try to join

You can customize the notification message in the configuration:

staff_notifications:
join_attempt:
enabled: true
message: "🚫 {player} attempted to join while banned! Time remaining: {duration_left}"

To disable join attempt notifications:

staff_notifications:
join_attempt:
enabled: false
Terminal window
# Use regular ban for less severe cases
/ban PlayerName 7d Cheating detected
Terminal window
# Use predefined templates
/ban PlayerName cheating
/ban PlayerName griefing

The plugin’s escalation system automatically increases punishment severity:

  • First offense: Warning or short ban
  • Second offense: Longer ban
  • Third offense: IP ban or permanent ban
  • Monitor ban appeals
  • Check for VPN usage patterns
  • Track repeat offender statistics
  • Analyze ban success rates
  • Documentation: Always document IP ban reasons
  • Communication: Inform other staff members
  • Reviews: Regular review of IP ban decisions
  • Training: Ensure all staff understand IP ban implications
modules/ban.yml
enabled: true
settings:
auto-unban: true
ip-ban-support: true
case-id-prefix: "BAN"
max-duration: "365d"
default-duration: "7d"
templates:
cheating:
duration: "30d"
reason: "Cheating detected"
escalation:
- duration: "7d"
reason: "First offense - Cheating"
- duration: "30d"
reason: "Second offense - Cheating"
- duration: "permanent"
reason: "Third offense - Cheating"
griefing:
duration: "14d"
reason: "Griefing"
escalation:
- duration: "3d"
reason: "First offense - Griefing"
- duration: "14d"
reason: "Second offense - Griefing"
- duration: "permanent"
reason: "Third offense - Griefing"
PermissionDescription
zenith.ban.useUse ban commands
zenith.banFull ban access (manual + templates)
zenith.ban.template.onlyTemplate-only access
zenith.ban.template.<name>Access to specific template
zenith.unbanUnban players
zenith.ban.notificationsReceive ban notifications
zenith.ban.join.notificationsReceive join attempt notifications
permissions:
- zenith.ban: true
- zenith.unban: true
- zenith.ban.notifications: true
- zenith.ban.join.notifications: true

What they can do:

  • ✅ Manual bans with custom duration
  • ✅ Template bans
  • ✅ IP bans
  • ✅ Unban players
  • ✅ Receive ban notifications
  • ✅ Receive join attempt notifications
CREATE TABLE zn_bans (
id INT PRIMARY KEY AUTO_INCREMENT,
case_id VARCHAR(50) UNIQUE NOT NULL,
player_uuid VARCHAR(36) NOT NULL,
player_name VARCHAR(16) NOT NULL,
staff_uuid VARCHAR(36) NOT NULL,
staff_name VARCHAR(16) NOT NULL,
reason TEXT NOT NULL,
duration VARCHAR(20),
expires_at TIMESTAMP NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
active BOOLEAN DEFAULT TRUE,
template_name VARCHAR(50),
ip_address VARCHAR(45)
);
POST /zenith/api/ban
Authorization: Bearer your-token-here
{
"player": "Player123",
"reason": "Cheating detected",
"duration": "7d"
}
POST /zenith/api/unban
Authorization: Bearer your-token-here
{
"player": "Player123",
"reason": "Appeal accepted"
}

Issue: Ban not working

  • Check if module is enabled
  • Verify permissions
  • Check database connection

Issue: Template not found

  • Verify template exists in configuration
  • Check template permissions
  • Ensure correct template name

Issue: Auto-unban not working

  • Check if auto-unban is enabled
  • Verify database connection
  • Check server time synchronization
  • Use MySQL/MariaDB for large servers
  • Enable suppress_hikari_logs for production
  • Regular database maintenance
  • Monitor ban table size
  • Track ban frequency
  • Monitor appeal rates
  • Check template usage
  • Review staff activity

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