Filter.txt and FilterRename.txt
Two text files with different behaviors:
- Filter.txt censors chat messages. Matched substrings are replaced in place with asterisks before the message is relayed to other players. The message is never blocked.
- FilterRename.txt blocks renames. If a requested new name contains any listed substring, the rename is rejected outright.
File Location#
Data/Util/Filter.txt
Data/Util/FilterRename.txt
Both loaded once at GameServer startup. Changes require a restart.
Format#
//Label
word1
word2
end
Terminated by end. Comment lines start with //. One forbidden substring per line. Entries containing spaces or brackets must be quoted, for example "[gm]".
Semantics#
- Substring match, case-sensitive.
adminmatchesadminandsuperadminbut notAdminorADMIN. List variants explicitly if you need case coverage. - Filter.txt is applied to the message body of: public chat, whisper, cross-server global whisper, and
/post. Party (~), guild (@), and Gens ($) messages are routed through the same public-chat handler, so they are also censored. Slash commands other than/postare not censored. - Filter.txt censors by overwriting the matched substring with
*characters of equal length; the rest of the message is delivered unchanged. - FilterRename.txt is checked by the rename command handler. A match cancels the rename and notifies the player.
Capacity And Entry Length#
| File | Max entries | Max entry length |
|---|---|---|
Filter.txt | 500 | 15 characters |
FilterRename.txt | 100 | 10 characters |
Entries longer than the per-file cap are truncated when stored, so the runtime only ever matches the first N characters of a label.
Differences from BadSyntax.txt (DataServer-side):
- BadSyntax runs at character and guild creation. Filter.txt runs on chat at runtime. FilterRename.txt runs on rename at runtime.
- All three use substring matching. Filter.txt and FilterRename.txt are case-sensitive.
- Filter.txt censors (message still sent). FilterRename.txt and BadSyntax.txt reject the action.
Cross-File Dependencies#
| Filter | Also check |
|---|---|
| Character name creation | DataServer BadSyntax.txt |
| Chat command gates | Command.dat / Command.xml |
| Rename command | Command.dat rename settings |
Common Issues#
- Short word over-censors -
adturnsshadowintosh**owandpaladinintopal**in. Use longer explicit strings - Casing bypass -
adminblocked butAdminallowed. The filter is case-sensitive; list every case variant you care about - Leet-speak bypass -
adminblocked butadm1nallowed. There is no normalization - Filter silently unset - missing
endterminator; the parser drops the whole file - Rename text looks censored instead of blocked - rename goes through FilterRename.txt only; Filter.txt does not apply to rename input