HomeJavaModsBungeeChatFilter
BungeeChatFilter
SectionHeader_Description.png

Bungee Chat Filter is a BungeeCord plugin designed to monitor, filter and edit a players chat before it even makes it to the server. BCF matches regular expressions against the players messages and performs specified actions on the message depending on what the server owner has specified in the config.


SectionHeader_Features.png



SectionHeader_Setup.png

  1. Download BungeeChatFilter.jar
  2. Place the jar into your BungeeCord plugins folder
  3. Run BungeeCord
  4. Edit the generated config to your liking
  5. Use the reload command /bfreload in the Bungeecord console or in game if you have permissions.


SectionHeader_Permissions.png

Permissions are to be set via BungeeCord


SectionHeader_Config.png

Code (Text):

##########################################
##                                      ##
##      Bungee Chat Filter Config       ##
##                 v1.7                 ##
##########################################

#Monitor commands - Monitor commands send by the players as chat
Monitor Commands: true

#Commands - The list of commands that the plugin will monitor
Commands:
    - msg
    - message
    - m
    - tell
    - whisper
    - w
    - g
    - global
    - s
    - l
    - local
    - url
    - website
    - hub
    - shop
    - broadcast

#AntiSpam - Will use the minimum chat delay to force players to wait *1500ms or what ever you specified between messages
AntiSpam: true
AntiRepeat: true
#Minimum-Chat-Delay - The time in miliseconds a player must wait between messages
Minimum-Chat-Delay: 1500
Minimum-Repeat-Delay: 60000
#Messages sent to the player in chat when they are blocked by AntiSpam or AntiRepeat
AntiSpamMessage: &cPlease do not spam
AntiRepeatMessage: &cPlease do not spam

#Rules - Groups of rules which monitor the chat
#rules:
#   rulename:                       - the name of the rule.
#       regex:                      - the string regex that the rule will check for.
#       ignores:                    - If the message contains a value that matches ignore then none of the actions will be performed.
#       permission:                 - the permission required to bypass this rule.
#       actions:                    - here is the list of actions the rule will perform if matched.
#           deny: true              - this will deny the message and cancel the event.
#           message: <message>      - this will send a message <message to the player. (Supports Placeholders, see below)
#           kick: <message>         - this will kick the player with the <message>. (Supports Placeholders, see below)
#           alert: <message>        - this will send the <message> to all players connected to the proxy server. (Supports Placeholders, see below)
#           remove: true            - this will remove any matches from the player's message.
#           replace:                - this will replace the matched word with a random word from the list below. (Supports Placeholders, see below)
#               - word1
#               - word2
#           lower: true             - this will change any matches into lowercase.
#           pcommand: (command)     - Proxy command, this will cause the player to send the (command) to the proxy server. Do not include a /. (Supports Placeholders, see below)
#           scommand: /(command)    - Server command this will cause the player to send the (command) to their current server. You must include a /. (Supports Placeholders, see below)
#           ccommand: (command)     - Console command, this will cause the proxy server console to execute the (command). Do not include a /. (Supports Placeholders, see below)
#                                      Note that there is currently no way to execute a command as the current server console.

#Placeholders                       - These placeholders can be used in any action strings.
#
# {player}                          - Replaced with the display name of the player sending the message
# {message}                         - Replaced with the original message as sent by the player
# {arguments}                       - Intended for use with commands, this will be replaced by all of the arguments following the first word of the player's message.
#                                       (for example a player sending "/send Zedwick Hello!" will return "Zedwick Hello!" in place of {arguments})

rules:

#Filters the word fuck and replaces it with a random word from the list
    swearfilter1:
        regex: (?i)(f+u+c+k+|f+u+k+|f+v+c+k+|f+u+q+)
        actions:
            replace:
                - fudge
                - frack
                - funk
                - fork

#Filters the list of swear words below and replaces them with a random word from the list. Uses a list as the regex
#The first item has (?i)(cunt to make the generated regex case insensitive.  The last item must end with a )
    swearfilter2:
        regex:
            - (?i)(cunt
            - whore
            - fag
            - slut
            - queer
            - bitch
            - bastard
            - dick
            - gay)
        actions:
            replace:
                - lovely
                - sweetie
                - sexy

#Filters the word nigger and denys the chat even while kicking the player and alerting the server why the player was kicked
    swearfilter3:
        regex: "n[^a]gg+(a|er|uh)"
        actions:
            deny: true
            alert: "{player} has been kicked for racism"
            kick: "You have been kicked for racism"

#Replaces the word bloodsplat with a coloured word if they have permission for colours and a chat plugin on the server that supports colors.
    colorReplace:
        regex: "bloodsplat"
        actions:
            replace:
                - "&cBloodsplat"
                #Will only work if the player has permission for colors on the servers chat plugin.


#when a player asks for op they will instead say one of the following from the list and be sent a message
    askforOP:
        regex: "(?i).*give me op.*|.*can i have op.*"
        actions:
            replace:
                - Can you please ban me
                - I use xray!
            message: '&cPlease don''t ask for OP'

#When the player uses 4 or more letters in a row all in caps lock then the message will be changed to lowercase
    CAPSPAM:
        regex: (\p{Lu}|\s){4,}
        actions:
            lower: true

#Removes magic, bold and italics from the players chat when they dont have the bungeefilter.antiformatbypass permission.
    AntiFormatText:
        regex: '&[k-o]'
        permission: bungeefilter.antiformatbypass
        actions:
            remove: true
            message: '&cYou do not have permission to use Format text'

#Removes color from the chat unless the player has the bungeefilter.colorbypass permission
    AntiColorText:
        regex: "&[0-9 a-f]"
        permission: bungeefilter.colorbypass
        actions:
            remove: true
            message: '&cYou do not have permission for colors'

#Assumes all IP addresses are advertising and all URLs that do not include this server's name are advertising
    AntiAdvertising:
        regex: (^.*([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}).*$)|(^.*((mc|play)\.(.*)\.(com|net))|((.+)\.(.*(mine|craft).*)\.(com|net)).*$)
        ignores: (^.*minecraftserver.*$) |(^.*minecraftserver2.*$)
        actions:
            kick: '&cNo advertising other servers.'
            deny: true

#When a player uses the command /hub they will instead cast the command /server hub to the proxy. Denies the command so /hub isnt also sent
    CommandShortcut:
        regex: /hub
        actions:
            pcommand: /server hub
            deny: true

#When a player uses the command /shop they will instead send a command to the server they are on /warp shop.
    CommandShortcut2:
        regex: /shop
        actions:
            scommand: /warp shop
            deny: true

#Creates a proxywide broadcast command !bungeefilter.broadcast means the player needs the permission for the check to work
    CreateCommand:
        regex: /broadcast
        permission: "!bungeefilter.broadcast"
        actions:
            alert:
            - ''
            - '&5[Broadcast] &a{player}&f: {arguments}'
            - ''
            deny: true

#Shortcut for website URL can use either /url or /website
    CreateCommand2:
        regex: (/url)|(/website)
        actions:
            message: "&l&6[Check it out]&3 This server's website is &6www.minecraftserver.com"
            deny: true
 
SectionHeader_Notes.png

Bungee Chat Filter originally by Bloodspat who discontinued work on it in 2013, I have decided to take on maintaining it as I actively use it on my own server. Reporting issues and suggested features are welcome, as are contributors, over on Github.

Thanks to pwnfilter for a few of their regex rules

Source: https://github.com/zedwick/BungeeChatFilter
Issues: https://github.com/zedwick/BungeeChatFilter/issues

Plugin details

Read from the plugin's own plugin.yml.

Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

BungeeChatFilter is a free Minecraft Java mod. Compatible with Minecraft 1.8, 1.9, 1.10, 1.11 and newer. Downloaded 1,494 times (via Spigot). Download it and open it directly in the game.

Explore more