EnesChatToggle — Minecraft chat control
What is EnesChatToggle?
EnesChatToggle is a Paper-compatible (API
Personal mode uses Paper’s modern chat pipeline: when a player turns chat “off” for themselves, they are removed from the
State is not memory-only: SQLite in
Who should download EnesChatToggle?
• Owners who need a fast “mute the world” lever during events, raids, or announcements
• Networks that want consistent
• Projects on Folia that need plugins marked compatible in
• Anyone searching for: Minecraft chat hide plugin, personal chat toggle, server-wide chat lock, Paper 1.21 chat mute, Folia chat plugin, SQLite chat preferences, AsyncChatEvent filter
Complete feature list
Commands
•
•
•
•
Permissions
• Default (no node) — Use
•
•
•
Chat & messages (
• All user-facing strings under
• Colours via
Audio (
•
•
•
• Each block supports
Persistence (
• SQLite stores the set of players with personal chat hidden and the global chat lock flag.
• DELETE journal mode keeps a single
Safety & UX
•
• Global lock: non-bypass senders are cancelled with your
• Personal hide: affected players are removed from viewers without breaking bypass or global rules.
• Tab completion suggests
Compatibility
• Declared
• Intended for Paper, Folia, and Purpur builds that ship Adventure and the Paper chat event API.
Typical player journey (in-game)
1. Player runs
2. Player runs
3. Staff runs
4. Staff runs
5. After editing
Installation
1. Download the
2. Start the server once to generate default
3. Edit
4. Run
Configuration —
Persistence —
The plugin creates and maintains a SQLite database file named
What is EnesChatToggle?
EnesChatToggle is a Paper-compatible (API
1.21+), Folia-supported, and Purpur-friendly Minecraft plugin that gives your server two layers of chat control: a personal toggle so each player can hide incoming chat on their own screen only, and a server-wide chat lock staff can flip for everyone except bypass roles.Personal mode uses Paper’s modern chat pipeline: when a player turns chat “off” for themselves, they are removed from the
AsyncChatEvent audience for other players’ messages—so they keep playing without the HUD filling up, while the rest of the server still sees normal chat. Staff global lock cancels sends from non-bypass players and strips non-bypass viewers from chat delivery, with clear configurable messages when someone tries to speak while the server is locked.State is not memory-only: SQLite in
data.db stores who has personal chat hidden and whether global chat is disabled, with delete journal mode so you only maintain config.yml and a single data.db file in the plugin folder—no -wal / -shm companions. Messages support legacy-style & codes and &#RRGGBB hex colours through the plugin’s Adventure text pipeline.Who should download EnesChatToggle?
• Owners who need a fast “mute the world” lever during events, raids, or announcements
• Networks that want consistent
/chattoggle and /chatglobaltoggle across lobby and game modes• Projects on Folia that need plugins marked compatible in
plugin.yml• Anyone searching for: Minecraft chat hide plugin, personal chat toggle, server-wide chat lock, Paper 1.21 chat mute, Folia chat plugin, SQLite chat preferences, AsyncChatEvent filter
Complete feature list
Commands
•
/chattoggle (/ct) — Toggles whether you see chat; players only for the no-argument form; optional reload with chattoggle.reload.•
/chattoggle reload / /ct reload — Reloads config.yml from disk; sends your configured reload message; plays the reload sound for player executors when enabled.•
/chatglobaltoggle (/cgt) — Toggles server-wide chat lock; requires chattoggle.global.•
/chatglobaltoggle reload / /cgt reload — Same reload behaviour and permission as /ct reload.Permissions
• Default (no node) — Use
/chattoggle / /ct to hide or show chat for yourself.•
chattoggle.reload — Use /chattoggle reload, /ct reload, /chatglobaltoggle reload, or /cgt reload (default group: operators).•
chattoggle.global — Use /chatglobaltoggle / /cgt for the server-wide lock (default: operators).•
chattoggle.bypass — Send and receive chat while global chat is locked (default: operators).Chat & messages (
config.yml)• All user-facing strings under
messages.* (only-players, chat on/off, global on/off, no-permission, plugin-reload, chat-is-off when send is blocked, etc.).• Colours via
& and &#RRGGBB as documented in the default file.Audio (
config.yml)•
sounds.no-permission — Used when a required permission is missing (e.g. reload or global).•
sounds.toggle-command — Used after a successful personal /chattoggle or successful /chatglobaltoggle (toggle only).•
sounds.reload-command — Used after a successful config reload from either command path.• Each block supports
enabled, Bukkit-style sound id (resolved to registry keys), volume, and pitch. Legacy sounds.pling is read as a fallback if older configs omit the new sections.Persistence (
data.db)• SQLite stores the set of players with personal chat hidden and the global chat lock flag.
• DELETE journal mode keeps a single
data.db file alongside config.yml.Safety & UX
•
AsyncChatEvent at HIGHEST priority with respect for prior cancellation.• Global lock: non-bypass senders are cancelled with your
chat-is-off message; viewers without bypass are removed from the event audience.• Personal hide: affected players are removed from viewers without breaking bypass or global rules.
• Tab completion suggests
reload on both commands for accounts with reload permission context where applicable.Compatibility
• Declared
api-version: '1.21' and folia-supported: true in plugin.yml.• Intended for Paper, Folia, and Purpur builds that ship Adventure and the Paper chat event API.
Typical player journey (in-game)
1. Player runs
/chattoggle — chat lines stop appearing for them only; others unchanged.2. Player runs
/chattoggle again — chat visibility returns.3. Staff runs
/chatglobaltoggle — global lock engages; regular players cannot send chat; bypass roles still can.4. Staff runs
/chatglobaltoggle again — global chat returns to normal.5. After editing
config.yml, staff runs /ct reload or /cgt reload — changes apply without a full restart.Installation
1. Download the
EnesChatToggle jar (Paper / Folia / Purpur build as labelled on the resource) and place it in the plugins folder.2. Start the server once to generate default
config.yml and data.db under plugins/EnesChatToggle/.3. Edit
messages.* and sounds.* to match your branding.4. Run
/ct reload or /cgt reload to apply changes without a full restart.Configuration —
config.yml
YAML:
messages:
only-players: "&cOnly players can execute this command!"
chat-is-off: "&#FF0000The chat is currently off!"
plugin-reload: "�FF00Plugin reloaded successfully!"
no-permission: "&cYou don't have permission to execute this command!"
chat-on: "&#FF0000Chat Messages are now off!"
chat-off: "�FF00Chat Messages are now on!"
globaler-chat-off: "&#FF0000The Globaler Chat is now off!"
globaler-chat-on: "�FF00The Globaler Chat is now on!"
sounds:
no-permission:
enabled: true
sound: "ENTITY_VILLAGER_NO"
volume: 0.5
pitch: 1.0
toggle-command:
enabled: true
sound: "BLOCK_NOTE_BLOCK_PLING"
volume: 0.5
pitch: 1.0
reload-command:
enabled: true
sound: "ENTITY_EXPERIENCE_ORB_PICKUP"
volume: 0.5
pitch: 1.0
data.dbThe plugin creates and maintains a SQLite database file named
data.db in the same folder as config.yml. Do not edit it by hand; use in-game commands so rows stay consistent with the live server state.