Skip to content

Mute Module

The Mute Module provides comprehensive player muting functionality to prevent chat spam and harassment.

  • Manual Mutes - Custom duration and reason
  • Template Mutes - Predefined punishment templates
  • Offline Mutes - Mute players who are not online
  • Automatic Unmute - Time-based mute expiration
  • Chat Blocking - Prevent muted players from chatting
  • Command Blocking - Block certain commands for muted players
  • Escalation System - Automatic punishment escalation
  • Mute History - Complete mute tracking
  • Case IDs - Unique identifier for each mute
  • Staff Tracking - Who issued the mute
  • Reason Templates - Predefined mute reasons
  • Staff Notifications - Real-time alerts when muted players attempt to chat

Mute a player with custom duration and reason.

Permission: zenith.mute

Parameters:

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

Examples:

Terminal window
/mute Player123 1h Spam in chat
/mute Player123 permanent Harassment
/mute Player123 30m Inappropriate language

Remove a mute from a player.

Permission: zenith.unmute

Parameters:

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

Examples:

Terminal window
/unmute Player123
/unmute Player123 Appeal accepted

When a muted player tries to send a chat message, staff members with the appropriate permission will receive a real-time notification.

modules/mutes.yml
staff_notifications:
chat_attempt:
enabled: true # Enable/disable chat attempt notifications
message: "&#FF8800{player} &#FF0000tried to chat but is muted &#FFAAAA({duration_left})" # Variables: {player} - Player name, {duration_left} - Remaining mute duration
# Note: Staff members need the permission "zenith.mute.chat.notifications" to receive these notifications
VariableDescriptionExample
{player}Name of the muted playerPlayer123
{duration_left}Remaining mute duration1h 30m

When a muted player tries to chat, staff will see:

Player123 tried to chat but is muted (1h 30m)

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

  • zenith.mute.chat.notifications - Receive notifications when muted players try to chat

You can customize the notification message in the configuration:

staff_notifications:
chat_attempt:
enabled: true
message: "⚠️ {player} attempted to chat while muted! Time remaining: {duration_left}"

To disable chat attempt notifications:

staff_notifications:
chat_attempt:
enabled: false
modules/mutes.yml
enabled: true
settings:
auto-unmute: true
chat-blocking: true
command-blocking: true
case-id-prefix: "MUTE"
max-duration: "365d"
default-duration: "1h"
templates:
spam:
duration: "1h"
reason: "Chat spam"
escalation:
- duration: "15m"
reason: "First offense - Spam"
- duration: "1h"
reason: "Second offense - Spam"
- duration: "1d"
reason: "Third offense - Spam"
harassment:
duration: "2h"
reason: "Harassment"
escalation:
- duration: "30m"
reason: "First offense - Harassment"
- duration: "2h"
reason: "Second offense - Harassment"
- duration: "1d"
reason: "Third offense - Harassment"
PermissionDescription
zenith.mute.useUse mute commands
zenith.muteFull mute access (manual + templates)
zenith.mute.template.onlyTemplate-only access
zenith.mute.template.<name>Access to specific template
zenith.unmuteUnmute players
zenith.mute.notificationsReceive mute notifications
zenith.mute.chat.notificationsReceive chat attempt notifications
permissions:
- zenith.mute: true
- zenith.unmute: true
- zenith.mute.notifications: true
- zenith.mute.chat.notifications: true

What they can do:

  • ✅ Manual mutes with custom duration
  • ✅ Template mutes
  • ✅ Unmute players
  • ✅ Receive mute notifications
  • ✅ Receive chat attempt notifications
CREATE TABLE zn_mutes (
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)
);
POST /zenith/api/mute
Authorization: Bearer your-token-here
{
"player": "Player123",
"reason": "Spam in chat",
"duration": "1h"
}
POST /zenith/api/unmute
Authorization: Bearer your-token-here
{
"player": "Player123",
"reason": "Appeal accepted"
}

Issue: Mute not working

  • Check if module is enabled
  • Verify permissions
  • Check database connection
  • Ensure chat handler is working

Issue: Player can still chat

  • Check mute status in database
  • Verify chat event handler
  • Check for permission bypasses
  • Restart server if needed

Issue: Template not found

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

Enable debug mode for detailed logging:

debug:
enabled: true
console: true
file: true
  • Use MySQL/MariaDB for large servers
  • Enable suppress_hikari_logs for production
  • Regular database maintenance
  • Monitor mute table size
  • Track mute frequency
  • Monitor appeal rates
  • Check template usage
  • Review staff activity

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