Word filter
Censor or block chat messages that contain listed words, with leetspeak-aware matching.
The word filter checks public chat against a list of words you set. When it finds a match, it either replaces the word or blocks the whole message. You choose which. The filter is set up in filter.yml.
How matching works
The matcher is built to catch common ways players dodge a filter. It is:
- Case-insensitive, so
Fuckandfuckboth match. - Leetspeak-aware, so common letter-to-number swaps are caught.
- Punctuation-aware, so letters split by punctuation are still caught.
Players with zarrowchat.filter.bypass skip the filter entirely.
Modes
The mode key picks what happens on a match:
| Mode | What it does |
|---|---|
CENSOR_WORDS | Replaces only the matched words with the censor-string. The rest of the message goes through. |
BLOCK_MESSAGE | Stops the whole message. Nothing is sent, and the sender is told their message was blocked. |
Filter keys
| Key | What it controls | Default |
|---|---|---|
enabled | Turn the filter on or off | true |
mode | CENSOR_WORDS or BLOCK_MESSAGE | CENSOR_WORDS |
censor-string | Text that replaces a censored word | **** |
bypass-permission | Permission that skips the filter | zarrowchat.filter.bypass |
filtered-words | The list of blocked words | fuck, shit, bitch |
Example config
# filter.yml
enabled: true
mode: "CENSOR_WORDS"
censor-string: "****"
bypass-permission: "zarrowchat.filter.bypass"
filtered-words:
- "fuck"
- "shit"
- "bitch"To block whole messages instead of censoring words, set mode to BLOCK_MESSAGE. After editing, run /zarrowchat reload.
The blocked-message notice shown to the sender lives in messages.yml under filter.blocked. See Messages.