Juggy's Jug of Tools is a collection of scripts and features meant to help your server and chat experiences, fully featured and with a lot of customization. It prevents bad actors from spamming, flooding the chat, saying bad words, while also giving fun chat features such as
greentext,
rainbow chat, and @ing other players like on Discord or Twitter.
Features
Word Filter
The
Word Filter prevents players from saying incensing and undesirable words in text chat. It comes with a default filter of unambiguously bad words to do more of the heavy lifting for you, and it's possible to add even more or remove the default filter. It also comes with ways to prevent overcoming the filter as well. Filtered messages due to bad words are echoed back to the user (also known as a shadowmute), and are shown to the host and admins, but no one else will see them, and this behavior can be changed to also block, kick, ban or make the player quit if they trip up the filter.
As a submodule, it also features a
Name Filter that will make players quit their game by default if they have an offending name.
Console Variable | Default Value | Use |
---|
jug_wordfilter_enabled | On | Enables or disables the Word Filter entirely. |
jug_wordfilter_punishtype | ShadowMute | Defines how players should be punished if they trip up the filter. Options
Block - The messaged is blocked from sending and the chatter is asked to use cleaner language.
ShadowMute - The message is echoed back to the user but no one else. Admins can still read the message and see which word tripped up the shadowmute.
Kick - The player is kicked with the reason specifying they said a bad word.
Ban - The player is banned with the reason specifying they said a bad word.
Quit - The player is made to quit the game.
|
jug_wordfilter_immunity | On | Specifies if administrators simply overcome the filter thanks to their status or not. |
jug_wordfilter_usedefaultbadwordlist | On | If enabled, the addon uses an additional banlist with unambiguously bad words to block from the chat. |
jug_wordfilter_filtertype | No Leet Words, No Spaces |
Defines the filter type to use:
No Leet Words : Disregards Leet words (players attempting to get over the filter using numbers and special characters instead of proper characters).
No Spaces : Disregards spaces (players adding spaces over blocked words to get over the filter).
No Leet Words, No Spaces : Both previously aforementioned options enabled.
Whole Words Only : Only considers blocking whole words, instead of partial word matches.
No Leet Words, Whole Words Only : Both previously aforementioned options enabled.
|
jug_wordfilter_tauntsoundonleave | Off | If On, players who are kicked, banned or made quit by the filter will have the server play a sound that acknowledges this happening. |
jug_wordfilter_filternames | On | Defines if the Word Filter will also filter players' names as well. |
jug_wordfilter_filternames_punishtype | Quit | Defines how players should be punished if they have an offending player name. Options are Kick , Ban and Quit . Be warned: options that are not Quit will have their offending names show in the chat. |
Console Command | Use |
---|
jug_wordfilter_addwords | Adds words to the host-made word filter. Multiple can be inputted, and words with spaces can be inputted when surrounded by commas. For example: jug_wordfilter_addwords word1 word2 "long word3" |
jug_wordfilter_addword_pattern | Adds a word to the host-made word filter alongside a Lua string pattern. Expressions that exactly match the banned word will be blocked, whereas anything else will stay unblocked. For example: jug_wordfilter_addword_pattern flower "flowers?" will block flower but not flowers . |
jug_wordfilter_removewords | Removes words from the host-made word filter. Follows the same rules as _addwords . For example: jug_wordfilter_removewords word1 word2 "long word3" |
jug_wordfilter_listwords | List the words within the host-made word filter. If jug_wordfilter_usedefaultbadwordlist is On, then it will also show words from that filter as well. |
Spam and R9K Filters
The
Spam Filter and
R9K Filter prevent players from spamming messages really quickly, and sending the same message over and over, respectively. By default, these messages are blocked and the chatter is told to slow down or say something else, but it can be changed to lead into a shadowmute instead.
Console Variable | Default Value | Use |
---|
jug_spamfilter_enabled | On | Enables or disables the Spam Filter entirely. |
jug_spamfilter_spamtime | 20 | Defines how many tics a player should wait before they can send a message again. 35 tics equals 1 second. |
jug_spamfilter_punishtype | Block | Defines how players should be punished if they trip up the filter. Options
Block - The messaged is blocked from sending and the chatter is asked to use cleaner language.
ShadowMute - The message is echoed back to the user but no one else. Admins can still read the message and see which word tripped up the shadowmute.
|
jug_spamfilter_immunity | On | Specifies if administrators simply overcome the filter thanks to their status or not. |
Console Variable | Default Value | Use |
---|
jug_r9kfilter_enabled | On | Enables or disables the R9K Filter entirely. |
jug_r9kfilter_punishtype | Block | Defines how players should be punished if they trip up the filter. Options
Block - The messaged is blocked from sending and the chatter is asked to use cleaner language.
ShadowMute - The message is echoed back to the user but no one else. Admins can still read the message and see which word tripped up the shadowmute.
|
jug_r9kfilter_immunity | On | Specifies if administrators simply overcome the filter thanks to their status or not. |
Player Muting
If enabled, players can be given the power to
individually mute other players for themselves whose messages they don't like to read. Muting done by players is logged in the host console, and players also have access to a mute list to see whom do they have muted. Admins and the host have access to a master mute list where they can see who has who muted.
Players can mute other players through
playermute name/node
in the console or
!mute name/node
in the chat.
Console Variable | Default Value | Use |
---|
jug_mute_enabled | Off | Specifies if muting individual players is enabled or not. |
jug_mute_immunity | On | Specifies if administrators are immuned to being muted by other players. |
Console Command | Use |
---|
muteplayer | Takes a player name or a node number. It will mute that player so their messages will not show up for them. !mute player/node is a chat text alias that does the same thing. |
mutelist | Displays a list of all the players that have been muted by the player. |
totalmutedlist | Admin only. Displays who has who muted from all the players. If file is passed as a parameter, then the results will be dumped to a mutelist.txt file. |
Shadowmuting
Admins and the host have access to have a certain player's messages echo back to themselves and no one else without their knowledge, known as a
shadowmute. When a player is shadowmuted, they will think their messages are being sent to everybody, but in reality they're only talking to themselves (and only admins and the host are able to read them). It's a powerful tool to prevent certain chatters from causing major trouble without them realizing that they're effectively muted.
Admins and the host can shadowmute players through
shadowmute name/node number
.
Console Variable | Default Value | Use |
---|
jug_shadowmute_immunity | On | Specifies if admins are immune to shadowmuting. |
jug_shadowmute_adminread | On | Specifies if admins and the host can read shadowmuted messages. |
Console Command | Use |
---|
shadowmute | Admin only. Takes a player name or node number. Shadowmutes the player, making their messages echo only back to themselves, and the admins if _adminread is On, but no one else. |
Fun Chat Features
For the players themselves, there's a lot of fun features that this addon adds:
- Greentexting: Add a > anywhere in the message and the following characters will be colored green.
- Rainbow Chat: Use
rainbow text
in the console, or !rb text
in the chat, to color the entire message in rainbows.
- @: Allows to tag and ping players, through
@name/@node
, to make them aware that you're talking to them.
- /me chat: Although not a new feature in Kart, in SRB2 you are now able to textually express actions.
- !pm and !r: These are
sayto
aliases that facilitate sending private messages to other players. !pm player message
will send a message to a player, and players can reply to the most recent person who sent them a PM through !r text
.
- !help: Not sure about what's available to you? Typing
!help
in the chat or jughelp
in the console will show you all that you can do.
Console Variable | Default Value | Use |
---|
jug_greentext_enabled | On | Enables greentexting for all players. Greentexting can be performed by adding the > character and then text afterwards to a message. |
jug_greentext_admins | On | Enables greentexting to admins only. |
jug_rainbow_enabled | On | Enables rainbow chat for all players. Rainbow chat can then be used through rainbow text in the console or !rb text in the chat. |
jug_at_enabled | On | Enables tagging/pinging other players. It can be done in the chat text through @name/node and partial matches also work. |
jug_mechat_enabled | On | Enables /me chat. It can be done in the chat text through /me text to allow performing actions textually in the chat. |
Console Command | Use |
---|
rainbow | Allows players to rainbow chat. !rb text is a chat text alias that does the same thing. |
giverainbow | Admin only. Gives a player the ability to rainbow chat, in cases where jug_rainbow_enabled is off. |
jughelp | Displays a helpful message in the console that shows all possible text aliases. !help is a chat text alias that does the same thing, but instead displays it in the console. |
Map Configuration Files
It's possible to set things to happen through configuration files as soon as a map loads and unloads, by having files named
mapXX.cfg
and
mapXX_end.cfg
in your SRB2(Kart) folder (preferably inside of a folder, to keep it organized).
Console Variable | Default Value | Use |
---|
jug_mapconfigs_enabled | Off | Specifies if map configuration files are enabled or not. If so, it will load from a mapXX.cfg file when the map loads, and mapXX_end.cfg when the map ends. |
Additional Admin Tools
adminbadge
hides the green @ of admin players in the chat to make them unassuming compared to other players. Can be toggled off and on.
forcerespawn
respawns players at the last checkpoint, helpful for when they got stuck and can't get out in any way.
freeslotcount
counts how many freeslots are left for each category, helpful for diagnosing issues related to freeslots. Works more effectively when this addon is loaded first.
forcecolor
forces every player to use a specific color. Why not make everyone green?
General, Interoperability and Other
This addon comes with interoperability with Kart's Hostmod and Aqua's mapvote script so messages are kept hidden, and also comes with the chat overflow fix.
The logging can be disabled and targeting can be made more strict. The CVars for this are as follows:
Console Variable | Default Value | Use |
---|
jug_logging | On | Logs actions done using commands from this addon. |
jug_targetting_loose | On | If On, it'll not consider capitalization for targeting names. |
Credits
JugadorXEI - Main Programmer
Mr. Logan - Created the Jug of Tools icon. Thank you!
Lonsfor - Provided various fixes to earlier versions of this addon and an early word filter. Thank you!
RetroStation - Provided a lot of help regarding the word filter, specially many things related to ChatBlaster. Thank you!
Aqua's Karthouse servers and players - Helped test early versions of the script. Thanks a lot!
Ending
Thank you so much for using my script and let me know if it could be improved in any way, shape or form.
Have fun and enjoy!