Juggy's Jug of Tools

[Open Assets] Juggy's Jug of Tools 0.7.1


New Features​

  • Name Filter: Players' names are now filtered using the same filters as the Word Filter, and as such it shares the same CVars as the Word Filter's. It comes with CVars specific to it:
    • jug_wordfilter_filternames enables or disables this feature. It is On by default.
    • jug_wordfilter_filternames_punishtype defines how players with offending names should be punished. Options are Kick, Ban, and Quit. It is Quit by default.
      • Word of warning: options other than Quit will have offending players kicked or banned respectively, but their names will show up in the log which may not be safe for your server. Keep this in mind if you're willing to use these options.
  • New Word Filter command added, jug_wordfilter_addword_pattern, that takes a word and a Lua regular expression to match. 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.

New Improvements​

  • Consolidated Word Filter filter types into a single CVar, jug_wordfilter_filtertype, with the following options: No Leet Words, No Spaces, No Leet Words, No Spaces, Whole Words Only and No Leet Words, Whole Words Only.
    • No Spaces is a new filter type that disregards spaces in messages, often commonly used to get over the filter.
    • Due to this change, jug_wordfilter_unleet and jug_wordfilter_wholewordsonly have been removed and the aforementioned options should be used instead.
  • The default Word Filter block list has been made smarter and will block innocent words less often.
  • A new default Word Filter block list will now be used if a Whole Words Only filter type is used, to actually catch words it is supposed to catch.
  • Blocked words that consist of multiple words (for example, "strawberry cake") will now be properly caught if the Whole Words Only filter type is used.

Final Words​

Thank you everyone for your support, reviews, ratings and your reports for 0.7.0! It has made me really motivated to work on this addon and I'm hoping you'll enjoy these small additions, fixes and changes!

Have fun!
Long time no see. Been a long time since I've updated this addon, and I felt the need to do so as the popularity of the game raised, and thus the number of players who wish to verbally grief other players.

Thus, I present to you, 0.7.0 with a vast array of additions, changes, bugfixes, and even a new fancy logo made by Mr. Logan!



First of all, many thanks to Logan (again) for the amazing new icon for Jug of Tools, Lonsfor for the various fixes and RetroStation towards his contributions towards the word filter feature!

New Features​

  • Word Filter: Players' messages will now go through a word filter to prevent them from saying naughty stuff. Can be disabled through jug_wordfilter_enabled Off.
    • Can be changed between various punish types through jug_wordfilter_punishtype (1 = block, 2 = shadowmute, 3 = kick, 4 = ban, 5 = quit). Shadowmutes by default.
    • It comes with a default list with unambiguous bad words to block. Can be disabled through jug_wordfilter_usedefaultbadwordlist Off.
    • New words can be added to the host-made block list with the command jug_wordfilter_addwords. For example: jug_wordfilter_addwords word1 word2 "long word3". Admin/host only.
    • Words can be removed from the host-made block list with the command jug_wordfilter_removewords. For example: jug_wordfilter_removewords word1 word2 "long word3". Admin/host only.
    • Words from the default and custom-made block lists can be listed through the command jug_wordfilter_listwords. Admin/host only.
    • Words that have numbers and other characters will be turned into regular characters if jug_wordfilter_unleet is On for purposes of word filtering. (On by default).
    • The word filter will match whole words only if jug_wordfilter_wholewordsonly is set to On. (Off by default).
    • A taunting sound will be played for players who are kicked, banned or forcequitted if jug_wordfilter_tauntsoundonleave is On (Off by default).
    • Admins are immune to this feature, but it can be toggled off through jug_wordfilter_immunity Off.
    • Thank you Lonsfor for giving me a base to work on and RetroStation for all the wonderful contributions to the word filtering code!
  • Spam Filter: Players' messages will now be automatically muted if they post too quickly. Can be disabled through jug_spamfilter_enabled Off.
    • Can be changed between blocking the message or shadowmuting it through jug_spamfilter_punishtype (1 = block, 2 = shadowmute). Blocks by default.
    • Can be changed how much time players have to wait to post again through jug_spamfilter_spamtime. 35 tics = 1 second. Defaults to 20 tics.
    • Admins are immune to this feature, but it can be toggled off through jug_spamfilter_immunity Off.
  • R9K filter: if a player posts the same message, it will be muted. Can be disabled through jug_r9kfilter_enabled Off.
    • Can be changed between blocking the message or shadowmuting it through jug_r9kfilter_punishtype (1 = block, 2 = shadowmute). Blocks by default.
    • Admins are immune to this feature, but it can be toggled off through jug_r9kfilter_immunity Off.
  • jughelp: Learn what aliases and features you have available to you through typing jughelp through the console. (Thanks for the suggestion, Hannu-Hanhi!)
  • There's now chat commands for rainbow (!rb), PMing (!pm), replying to PMs (!r), muting (!mute), and help (!help).
    • !rb text will rainbowify text! (Assuming jug_rainbow_everyone is On for regular players or have rainbow privileges)
    • !pm [node/name] text will send such text to the player who matches that node or name.
    • !r text replies back to the last person who sent you a PM. No need to keep writing names!
    • !mute player will mute such selected player. (Assuming jug_mute_enabled is On).
    • !help provides help in the chat the same way jughelp provides help in the console.
  • Now you can @ other players like in Discord or Twitter, which will play a sound on their game to catch their attention.
    • This is done through @name in the chat, and partial name matches and node numbers work as well!
    • Can be disabled through jug_at_enabled Off
  • A host or admin's badge (~ or @) can now be disabled through adminbadge.
  • Freeslots may now be counted using freeslotcount. NOTE: It will only give you an accurate count if this addon is loaded first.
  • You can now use the totalmutelist (admin/host only) to see which player has who muted. Type totalmutelist file to write this result to a file (host only). (Thanks for the suggestion, Aqua!)

New Improvements​

  • Targetting now has various beneficial changes:
    • jug_targetting_loose now defaults to On to help with targeting (specially in regards to some dedicated server setups).
    • Targetting nodes no longer require a # before the number, to make it consistent with vanilla (Thanks Lonsfor!).
    • You can now target node 0 (for the purposes of PMing the server or the server doing various effects).
  • Muting and Shadowmuting now works through PMs (sayto). (Thanks for this report, Fl_GUI!)
  • Shadowmuting that happens through the word filter will have such word highlighted in red for admins (Thanks for the suggestion, RetroStation!).
  • Muting is now logged. (Thanks for the suggestion, Aqua!)
  • Now you can >greentext anywhere in a message, instead of only at the start. It also now supports /me and PMs.
  • Fixed HOSTMOD Interop: The last message in a y/n vote, and rtv messages, will now be hidden. (Thanks for this report, AnimeSonic!)
  • Fixed AquaVoting Interop: ++ and -- are now properly muted (Thanks for this report, xyzzy and Finn-Warrior!)


  • jug_logging_shadowmute has been removed - it was redundant since jug_shadowmute_adminread worked the same way.
  • jug_rainbow_everyone has been changed to jug_rainbow_enabled for consistency with other CVars.
  • jug_rainbow_enabled no longer does a global notification to let players know it is on.
  • jug_rainbow_enabled and jug_greentext_enabled are now On by default since they are harmless and fun.


  • Now has an chat overflow handler to prevent chat-related crashes. (Shoutouts to Tyron and TJ Sonic.)
  • Fixed map configs not being able to be disabled (Thanks Lonsfor!)
  • For Kart, /me now works again.
    • In SRB2, this can be toggled off through jug_mechat_enabled, and can then be used with /me message in the chat. (Too many people reported this to count, but thank you!)
  • Refactored some of the chat code - this should prevent chat messages from muted players in exceptional cases from going through. (Thanks for this report, xyzzy and Finn-Warrior!)
    • In the case that a player joins the server during intermission or map voting, chat-related commands and states (shadowmute) will not go through properly or apply until the player loads a map. This is not something I can fix, since the player list is not properly sent to players during these states. In these cases, relevant commands (e.g. playermute) will now give a message to wait until a map is loaded first to prevent confusion as to why these commands are not working. Apologies for this.

Final Words​

Thank you for all of your patience and understanding, and for reporting many bugs and even providing your own code contributions. I hope you all appreciate 0.7.0 as much as I enjoyed working on it.

Have fun!