Configuration
Every option in config.yml, channels.yml and the other module config files.
All of SlateChat's config files support MiniMessage and MineDown formatting, plus any PlaceholderAPI expansion you have installed. Each module has its own file so you're never staring at options you don't use.
config.yml
Global messages, plus the switches that turn each module on or off.
# Sent when a player lacks permission for a channel or command
no_permission: "<red>You do not have permission!"
# Sent to the sender with how many players saw their message
amount_readed: "<dark_purple><amount> players saw your message!"
no_one: "<red>No one readed your message! :c"
# Console-only / usage messages
players_only: "<red>Only players can execute this command!"
channel_command_usage: "<red>Usage: /ch <channel>"
channel_usage_message: "<red>Usage: /<command> <message>"
channel_changed: "<green>Channel changed to <channelName> - <channelCommand>"
invalid_channel: "<red>Invalid channel!"
plugin_reloaded: "<green>Plugin reloaded."
# Mirror every chat message to console
log_to_console: true
console_log: "[<channel>] %luckperms_prefix%<player>> <message>"
modules:
chatcolor: true # Lets players pick their own chat color with /chatcolor
discordsrv: true # Detect DiscordSRV and bridge channel messages to it
discordsrv_send: false # Also forward Discord -> plugin chat (off by default, avoids duplicates)
focus: true # Let players lock to a default channel with /ch
filter: true # Word filtering (blocked_words / replace)
chatformat:
spam:
enable: false
limit: 10 # Max repeated characters before a message is blocked
message: "<green>Message canceled because contain spam."
flood:
enable: false # Block sending the same message twice in a row
message: "<green>You cannot send a message like the previous message."
lowercase: false # Force messages to lowercase
title_format: false # Force-capitalize the first letter of every messagechannels.yml
Defines every channel. Keys must be unique, and local is the default
channel new players start in — don't remove it.
local:
format: "<yellow>[l] %luckperms_prefix% <yellow><player><blue><bold>> <yellow>%luckperms_suffix%%chat_color%<message>"
command: "l"
enable: true
broadcast: false
radius: 200
restrict: false
actionbar: true
permission: chat.local
global:
format: "&7[g] %luckperms_prefix% %clans_prefix%&7<player>&9&l> &7%chat_color%<message>"
command: "g"
broadcast: true
radius: 0
restrict: false
actionbar: false
permission: chat.global| Key | Meaning |
|---|---|
format | The message format. Supports <player>, <message>, PAPI placeholders and %chat_color% |
command | What /ch <command> matches, alongside the channel's name |
enable | Only used on local — whether the default channel is active |
broadcast | If true, ignores radius and reaches every online player |
radius | Block radius the message reaches when broadcast is false. 0 means same world only |
restrict | If true, only players with permission can use this channel |
actionbar | Show the sender an action bar read receipt for this channel |
permission | Node checked when restrict is true, and reported by /ch tab-completion |
Add as many extra channels as you want under this file, they all support the
same keys as global.
color.yml
Backs the /chatcolor command.
enable_rgb: true # Allow hex colors; disable to only accept legacy codes
clear_keywords:
- "clear"
- "remove"
- "reset"
only_players: "<red>Avaliable only for players!"
no_permission: "<red>You do not have permission!"
no_arg: "<red>Type an color! /chatcolor #<color>"
invalid: "<red>Type an valid hex color! /chatcolor #<color>"
removed: "<green>Your chat color was removed!"
success: "<green>The color of your chat was changed to %chat_color%this<green>."filter.yml
Word filtering. Matching is case-insensitive.
# Censored (replaced with asterisks) wherever they appear
blocked_words:
- "bitch"
- "damn"
# left->right replacement, e.g. every "barney" becomes "swarley"
replace:
- "barney->swarley"focus.yml
Forces players into a channel while they're in specific worlds, regardless
of what they last picked with /ch.
worlds:
- dummy:globalEach entry is world:channel — replace dummy with a real world name and
global with the channel you want enforced there.
