zArrowChat

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 Fuck and fuck both 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:

ModeWhat it does
CENSOR_WORDSReplaces only the matched words with the censor-string. The rest of the message goes through.
BLOCK_MESSAGEStops the whole message. Nothing is sent, and the sender is told their message was blocked.

Filter keys

KeyWhat it controlsDefault
enabledTurn the filter on or offtrue
modeCENSOR_WORDS or BLOCK_MESSAGECENSOR_WORDS
censor-stringText that replaces a censored word****
bypass-permissionPermission that skips the filterzarrowchat.filter.bypass
filtered-wordsThe list of blocked wordsfuck, 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.

On this page