Comprehensive and highly customizable text filtering solution for any type of server!
%textscensor_{filter_identifier}_violation_level%
%textscensor_Replace_violation_level% # for example
Violations:
ALL:
'1':
Event-result:
Type: REMOVE_DETECTED
Priority: 3
Punishments:
- "[LOG | WARNING] '{player_name}' uses restricted symbols: '{emphasized_message}'"
- "[NOTIFY] §7'§c{player_name}§7' uses §crestricted symbols§7: ' {emphasized_message}§7'."
'2':
Event-result:
Type: REMOVE_DETECTED
Priority: 3
Punishments:
- "[LOG | WARNING] '{player_name}' uses restricted symbols: '{emphasized_message}'"
- "[NOTIFY] §7'§c{player_name}§7' uses §crestricted symbolsp§7: '{emphasized_message}§7'."
- "[COMMAND] {command}" # the command will be executed on behalf of the console if SENDER is not specified
- "[COMMAND | {SENDER}] {command}"
# {SENDER} - on whose behalf the command is being executed, can be PLAYER or CONSOLE.
# {command} - command and its parameters.
- "[MESSAGE] {message}"
- "[MESSAGE | BROADCAST] {message}"
# '| BROADCAST '- when specified, sends a message to all players on the server.
# {message} - message.
- "[NOTIFY] {message}"
# {message} - message.
- "[PLAY_SOUND] {sound}"
- "[PLAY_SOUND | VOLUME: {volume}] {sound}"
- "[PLAY_SOUND | VOLUME: {volume} | PITCH: {pitch}] {sound}"
- "[PLAY_SOUND | VOLUME: {volume} | PITCH: {pitch} | BROADCAST] {sound}"
- "[PLAY_SOUND | VOLUME: {volume} | BROADCAST] {sound}"
- "[PLAY_SOUND | PITCH: {pitch} | BROADCAST] {sound}"
- "[PLAY_SOUND | PITCH: {pitch}] {sound}"
- "[PLAY_SOUND | BROADCAST] {sound}"
# {volume} - sound volume.
# {volume} - sound volume.
# {pitch} - tone of the sound.
# '| BROADCAST '- when specified, plays sound to all players on the server.
# {sound} - sound name.
- "[LOG] {message}" # Level.INFO will be used if no level is specified
- "[LOG | {level}] {message}"
# {level} - recording level.
# Possible options: OFF, SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST, ALL.
# {message} - message.
# Welcome to filter configuration :)
# Let's start with basic things:
# Here we have filters - '',
# Possible filter objects: Caps Filler, RegexFilter.
# Emphasize colors - colors to underline words found by the filter.
# Event results - what result will be applied to the triggered event if the filter hit the text.
# Has a format:
# :
# 'violation level': ' : '
# The 'filter check type' types specified in 'event results' section
# will activate the filter for that event.
# The 'event result priority' is used to calculate the final result for the event.
# The lower the priority, the higher the chance that this result will be used in the end.
# If different filters for the same filter check type use the same priority
# for the event result, the result will be selected randomly.
Filters:
Replace:
==: ReplaceFilter
Violations:
CHAT:
'1':
Event-result:
Type: REMOVE_DETECTED
Priority: 2
Emphasizes:
Whitelist:
Start: §9§n
End: §7
Regex-pattern:
- \b(idk)\b:i don't know
Permissions:
Notify: texts.censor.replace.notify
Bypass: texts.censor.replace.bypass
Enabled: true
IP:
==: RegexFilter
Regex-patterns:
Whitelist:
Regex: 127.0.0.1:25565
Flags:
- CASE_INSENSITIVE
Blacklist:
Regex: ((\d+\W{1,5}){2,}\d+)
Flags:
- CASE_INSENSITIVE
Violations:
ALL:
'1':
Event-result:
Type: REMOVE_DETECTED
Priority: 2
Punishments:
- '[LOG | WARNING] ''{player_name}'' publishes unknown ip: ''{emphasized_message}'''
- '[NOTIFY] §7''§c{player_name}§7'' publishes unknown §cip§7: ''{emphasized_message}§7'''
'2':
Event-result:
Type: REMOVE_DETECTED
Priority: 2
Punishments:
- '[LOG | WARNING] ''{player_name}'' publishes unknown ip: ''{emphasized_message}§7'''
- '[NOTIFY] §7''§c{player_name}§7'' publishes unknown §cip§7: ''{emphasized_message}§7'''
Emphasizes:
Whitelist:
Start: §a§n
End: §7
Blacklist:
Start: §c§n
End: §7
Permissions:
Notify: texts.censor.ip.notify
Bypass: texts.censor.ip.bypass
Single-char-replacement: true
Enabled: true
Replacement: '*'
Swear:
==: SwearFilter
Regex-patterns:
Whitelist:
Pattern:
==: RegexPattern
Regex: ({regexes})
Flags:
- CASE_INSENSITIVE
List:
- any_whitelisted_word_can_be_here
Blacklist:
Pattern:
==: RegexPattern
Regex: ({regexes})
Flags:
- CASE_INSENSITIVE
List:
- ((f+)[ua4]+?(c+)?(k+))
- ((b+)[i1]+?(t+)?(c+)?(h+))
Violations:
ALL:
'1':
Event-result:
Type: REMOVE_DETECTED
Priority: 2
Punishments:
- '[LOG | WARNING] ''{player_name}'' uses swear in his messages: ''{emphasized_message}'''
- '[NOTIFY] §7''§c{player_name}§7'' uses §cswear §7in his messages: ''{emphasized_message}§7'''
'2':
Event-result:
Type: REMOVE_DETECTED
Priority: 2
Punishments:
- '[LOG | WARNING] ''{player_name}'' uses swear in his messages: ''{emphasized_message}'''
- '[NOTIFY] §7''§c{player_name}§7'' uses §cswear §7in his messages: ''{emphasized_message}§7'''
Emphasizes:
Whitelist:
Start: §a§n
End: §7
Blacklist:
Start: §c§n
End: §7
Permissions:
Notify: texts.censor.swear.notify
Bypass: texts.censor.swear.bypass
Single-char-replacement: true
Enabled: true
Replacement: '*'
Domain:
==: RegexFilter
Regex-patterns:
Whitelist:
Regex: your-project-domain.com
Flags:
- CASE_INSENSITIVE
Blacklist:
Regex: ([0-9a-z]{2,}\.)+(рус|pф|space|abb|abc|able|ac|aco|ad|adac|ads|ae|aeg|aero|af|afl|ag|art|asia|at|auto|aw|aws|ax|axa|az|ba|baby|band|bank|bar|bb|bbc|bbt|bbva|bcg|bcn|bd|be|beer|best|bet|bf|bg|bh|bi|bid|bike|bing|bio|biz|bj|blog|blue|bm|bms|bmw|bn|bnl|bo|bofa|bom|bond|boo|book|bot|br|bs|bt|buy|buzz|bv|bw|by|bz|bzh|ca|cab|cafe|cal|call|cam|camp|car|care|cars|casa|case|cash|cat|cba|cbn|cbre|cbs|cc|cd|ceb|ceo|cern|cf|cfa|cfd|cg|ch|chat|ci|citi|city|ck|cl|club|cm|cn|com|cool|coop|cr|crs|csc|cu|cv|cw|cx|cy|cyou|cz|dad|date|day|dclk|dds|de|deal|dell|desi|dev|dhl|diet|dish|diy|dj|dk|dm|dnp|do|docs|dog|doha|dot|dtv|duck|duns|dvag|dvr|dz|eat|ec|eco|edu|ee|eg|er|erni|es|esq|eu|eus|fage|fail|fan|fans|farm|fast|fi|fiat|fido|fire|fish|fit|fj|fk|flir|fly|fm|fo|foo|ford|fox|fr|frl|ftr|fund|fyi|ga|gal|game|gap|gb|gbiz|gd|gdn|ge|gea|gent|gf|gg|ggee|gh|gi|gift|gl|gle|gm|gmbh|gmo|gmx|gn|gold|golf|goo|goog|gop|got|gov|gp|gq|gr|gs|gt|gu|guge|guru|gw|gy|haus|hbo|hdfc|help|here|hgtv|hiv|hk|hkt|hm|hn|host|hot|how|hr|hsbc|ht|htc|hu|ibm|icbc|ice|icu|id|ie|ieee|ifm|il|im|imdb|immo|in|info|ing|ink|int|io|iq|ir|is|ist|it|itau|itv|iwc|java|jcb|jcp|je|jeep|jlc|jll|jm|jmp|jnj|jo|jobs|jot|joy|jp|jprs|kddi|ke|kfh|kg|kh|ki|kia|kim|kiwi|km|kn|kp|kpmg|kpn|kr|krd|kred|kw|ky|kz|la|land|lat|law|lb|lc|lds|lego|lgbt|li|lidl|life|like|limo|link|live|lk|loan|loft|lol|love|lpl|lr|ls|lt|ltd|ltda|lu|luxe|lv|ly|ma|maif|man|mba|mc|mcd|md|me|med|meet|meme|men|menu|meo|mg|mh|mil|mini|mint|mit|mk|ml|mlb|mls|mm|mma|mn|mo|mobi|moda|moe|moi|mom|mov|mp|mq|mr|ms|msd|mt|mtn|mtpc|mtr|mu|mv|mw|mx|my|mz|nab|name|navy|nba|nc|ne|nec|net|new|news|next|nf|nfl|ng|ngo|nhk|ni|nico|nike|nl|no|now|np|nr|nra|nrw|ntt|nu|nyc|nz|obi|off|ollo|om|ong|onl|ooo|open|org|ott|ovh|pa|page|pars|pay|pccw|pe|pet|pf|pg|ph|pics|pid|pin|ping|pink|pk|pl|play|plus|pm|pn|pnc|pohl|porn|post|pr|pro|prod|prof|pru|ps|pt|pub|pw|pwc|py|qa|qpon|qvc|raid|re|read|red|reit|ren|rent|rest|rich|rio|rip|ro|room|rs|rsvp|ru|ruhr|run|rw|rwe|sa|safe|sale|sap|sapo|sarl|sas|save|saxo|sb|sbi|sbs|sc|sca|scb|scor|scot|sd|se|seat|seek|ses|sew|sex|sexy|sfr|sg|sh|shaw|shia|shop|show|si|silk|sina|site|sj|sk|ski|skin|sky|sl|sm|sn|sncf|so|sohu|song|sony|soy|spot|sr|srl|srt|st|star|stc|su|surf|sv|sx|sy|sz|tab|talk|tax|taxi|tc|tci|td|tdk|team|tech|tel|teva|tf|tg|th|thd|tiaa|tips|tj|tjx|tk|tl|tm|tn|top|town|toys|tr|trv|tt|tube|tui|tv|tvs|tw|tz|ua|ubs|ug|uk|uno|uol|ups|us|uy|uz|va|vana|vc|ve|vet|vg|vi|xyz|store|vig|vin|vip|visa|viva|vivo|vn|vote|voto|vu|wang|wed|weir|wf|wien|wiki|win|wine|wme|work|wow|ws|wtc|wtf|xbox|xin|xxx|ye|yoga|you|yt|yun|za|zara|zero|zip|zm|zone|zw|online)(:\d*)?
Flags:
- CASE_INSENSITIVE
Violations:
ALL:
'1':
Event-result:
Type: REMOVE_DETECTED
Priority: 2
Punishments:
- '[LOG | WARNING] ''{player_name}'' publishes unknown domain: ''{emphasized_message}'''
- '[NOTIFY] §7''§c{player_name}§7'' publishes unknown §cdomain§7: ''{emphasized_message}§7'''
'2':
Event-result:
Type: REMOVE_DETECTED
Priority: 2
Punishments:
- '[LOG | WARNING] ''{player_name}'' publishes unknown domain: ''{emphasized_message}'''
- '[NOTIFY] §7''§c{player_name}§7'' publishes unknown §cdomain§7: ''{emphasized_message}§7'''
Emphasizes:
Whitelist:
Start: §a§n
End: §7
Blacklist:
Start: §c§n
End: §7
Permissions:
Notify: texts.censor.domain.notify
Bypass: texts.censor.domain.bypass
Single-char-replacement: true
Enabled: true
Replacement: '*'
Special-symbols:
==: RegexFilter
Regex-patterns:
Whitelist:
Regex:
Flags:
- CASE_INSENSITIVE
Blacklist:
Regex: '[^\wA-z!@"''#№$:;%.,<>^*()-=+\|~`{}&§? ]'
Flags:
- CASE_INSENSITIVE
Violations:
ALL:
'1':
Event-result:
Type: REMOVE_DETECTED
Priority: 3
Punishments:
- '[LOG | WARNING] ''{player_name}'' uses restricted symbols: ''{emphasized_message}'''
- '[NOTIFY] §7''§c{player_name}§7'' uses §crestricted symbolsp§7: ''{emphasized_message}§7'''
'2':
Event-result:
Type: REMOVE_DETECTED
Priority: 3
Punishments:
- '[LOG | WARNING] ''{player_name}'' uses restricted symbols: ''{emphasized_message}'''
- '[NOTIFY] §7''§c{player_name}§7'' uses §crestricted symbolsp§7: ''{emphasized_message}§7'''
Emphasizes:
Whitelist:
Start: §a§n
End: §7
Blacklist:
Start: §c§n
End: §7
Permissions:
Notify: texts.censor.special-symbols.notify
Bypass: texts.censor.special-symbols.bypass
Single-char-replacement: true
Enabled: true
Replacement: '*'
Caps:
==: CapsFilter
Caps-maximum-percent: 35
Violations:
ALL:
'1':
Event-result:
Type: REMOVE_DETECTED
Priority: 5
Punishments:
- '[LOG | WARNING] ''{player_name}'' uses CAPS LOCK extensively: ''{emphasized_message}§7'''
- '[MESSAGE] §7You received your §cfirst warning §7for using CAPS LOCK!'
- '[NOTIFY] §7''§c{player_name}§7'' uses §cCAPS LOCK §7extensively: ''{emphasized_message}§7'''
'2':
Event-result:
Type: REMOVE_DETECTED
Priority: 5
Punishments:
- '[LOG | WARNING] ''{player_name}'' uses CAPS LOCK extensively: ''{emphasized_message}§7'''
- '[MESSAGE] §7You received your §csecond warning §7for using CAPS LOCK!'
- '[NOTIFY] §7''§c{player_name}§7'' uses §cCAPS LOCK §7extensively: ''{emphasized_message}§7'''
Message-minimum-length: 5
Emphasizes:
Whitelist:
Start: §a§n
End: §7
Blacklist:
Start: §c§n
End: §7
Permissions:
Notify: texts.censor.caps.notify
Bypass: texts.censor.caps.bypass
Enabled: true
Whitelist:
- ESIC
Forcibly-uppercase-whitelisted-words: false
Remove-mode: SENTENCE_START_WITH_CAPITAL_LETTER
Consider-words-used-in-whitelist-when-calculating-caps-percent: false
Message-end-characters:
- .
- '!'
- '?'