Skip to content

Kick Module

The Kick Module provides enhanced player kicking with custom disconnect screens and comprehensive staff notifications.

  • Enhanced Kicking - Custom disconnect screen for kicked players
  • Case Tracking - Automatic case ID generation for appeals
  • Staff Notifications - Real-time alerts to staff members
  • Custom Messages - Configurable disconnect screen
  • Bypass Protection - Prevents kicking staff members
  • Reason Tracking - Complete audit trail of kick reasons
  • Staff Logging - Who kicked whom and why
  • Time Stamping - Automatic timestamp for all kicks
  • Appeal System - Case IDs for easy appeal tracking
  • IP Support - Tracks IP addresses for kicked players

Kick a player from the server.

Permission: zenith.kick

Parameters:

  • player - Player name to kick
  • reason - Reason for kick (optional)

Examples:

Terminal window
/kick Player123 Inappropriate behavior
/kick Player123
modules/kick.yml
disconnect_screen:
lines:
- "&#FF5555You have been kicked!"
- "&#FFAAAAReason: {reason}"
- "&#AAAAAAKicked by: {staff}"
- "&#AAAAAATime: {time}"
- "&#AAAAAACase ID: {caseid}"
- "&#AAAAAAAppeal at: your-server.com/appeal"
VariableDescriptionExample
{reason}Reason for kickInappropriate behavior
{staff}Staff member who kickedAdmin123
{time}Kick timestamp2025-01-14 15:30
{caseid}Case ID for appealKICK-123
messages:
staff:
kick_success: "&#55FF55Successfully kicked {player}! &#AAFFAAReason: {reason} &#AAAAAACase ID: {caseid}"
kick_failed: "&#FF5555Failed to kick {player}!"
player_not_found: "&#FF5555Player '{player}' not found or not online!"
cannot_kick_self: "&#FF5555You cannot kick yourself!"
cannot_kick_bypass: "&#FF5555You cannot kick {player}! They have kick bypass permission!"
player_already_kicked: "&#FFAA55Player {player} is already being kicked!"
messages:
kick:
player_kicked: "&#FF5555You have been kicked by {staff}! &#FFAAAAReason: {reason} &#AAAAAACase ID: {caseid}"
messages:
notifications:
kick_notification: "&#FFFF55{staff} kicked {player} &#AAAAAA({reason}) &#AAAAAACase ID: {caseid}"
modules/kick.yml
enabled: true
default_reason: "No reason provided"

Customize the disconnect screen to match your server’s style:

disconnect_screen:
lines:
- "&#FF5555You have been kicked!"
- "&#AAAAAAReason: {reason}"
PermissionDescription
zenith.kickKick players
zenith.kick.bypassBypass kick protection
zenith.kick.notificationsReceive kick notifications
permissions:
- zenith.kick: true
- zenith.kick.notifications: true

What they can do:

  • ✅ Kick any player
  • ✅ Receive notifications
  • ❌ Kick staff with bypass permission
Terminal window
/kick Player123 Chat spam

Disconnect screen shows:

Reason: Chat spam
Case ID: KICK-123

The module can automatically kick players under certain conditions:

  • Duplicate accounts (Limiter Module)
  • Suspicious activity (Client Detector Module)
  • Banned player attempts (Ban Module)
CREATE TABLE zn_history (
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,
punishment_type VARCHAR(20) NOT NULL,
reason TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
ip_address VARCHAR(45)
);
-- Get all kicks for a player
SELECT * FROM zn_history
WHERE player_uuid = ?
AND punishment_type = 'KICK'
ORDER BY created_at DESC;

Staff members receive real-time notifications when someone is kicked.

Configuration:

messages:
notifications:
kick_notification: "&#FFFF55{staff} kicked {player} &#AAAAAA({reason}) &#AAAAAACase ID: {caseid}"

Permissions:

  • zenith.kick.notifications - Receive kick notifications
VariableDescriptionExample
{staff}Staff member who kickedAdmin123
{player}Player who was kickedPlayer123
{reason}Kick reasonInappropriate behavior
{caseid}Case IDKICK-123

Issue: Player not kicked

  • Check if player is online
  • Verify permissions
  • Check if player has bypass permission

Issue: Disconnect screen not showing

  • Verify configuration syntax
  • Check for color code errors
  • Ensure module is enabled

Issue: Case ID not generated

  • Check database connection
  • Verify history module is enabled
  • Check table structure

Issue: No notifications received

  • Check zenith.kick.notifications permission
  • Verify notification message is not empty
  • Check staff notification settings

Enable debug mode for detailed logging:

debug:
enabled: true
console: true
file: true
  • Async Operations - All kicks are async
  • Minimal Queries - Single database query per kick
  • Caching - Player data cached to reduce lookups
  • Batch Notifications - Efficient notification system
  • Track kick frequency
  • Monitor staff activity
  • Review common kick reasons
  • Analyze kick patterns

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