NoSwearing
Overview
This plugin prevents swearing on bukkit minecraft servers. It monitors chat messages, signs, /me commands, private messages, custom made items using anvil, books, and nicknames for restricted words in the config file. Offenders are stored in the config file. You can configure the plugin to kick or ban on the final warning.
This plugin uses regular expressions for words.
Features
Monitors
- Player chats
- Signs
- Private messages
- Items named with the Anvil
- Book text and titles
- Manual warnings
- Mute players for a configured time frame after swearing.
Flags
- Ignore OPs from any checks.
- Censor messages by replacing the restricted word with another, including player name (%name%).
- Words that are abused are also logged to show frequency.
- Block words like "d$%n", "d a m n", and "@$$" with the advanced option.
- Block single character words and check for swears using a queue for players who like to swear using separate lines.
- Additionally you can remove vowels from words to compare what players are writing.
- Numbers are removed during checks to thwart things like "da1mn".
- Patterns are checked for words like "dddaaaammmnnnnn". This would be flagged.
- Can censor using a random replacement word.
- Can run custom commands instead of kicking a player.
Allowances
- Standard word conventions such as apostrophes are permitted within certain restraints. "I'm", "don't", "you're" will not be flagged, while "cr'ap" would be flagged.
- Websites are allowed.
- & colors are not flagged.
- Symbols "-" and "_" are allowed in specific patterns.
- Online usernames are not flagged.
- Allow list is used to enable words with symbols like "o_O".
History
The reason that I wrote this was because I have been finding signs all over my server with restricted words and couldn't find a plugin that checked signs. I decided not to stop there and that is why this plugin restricts swearing in more than just chat.
Usage
Example:
- To block hell but not hello, the plugin understands hell!o as matching hell but not hello.
- Word borders are understood as /b. borders can only be at the beginning or end of a word.
- /i is used to ignore words for the removeVowels option.
Commands
- /ns warnings - View your current warnings
- /ns report - Report the last flagged word for owners review
- /ns info - View plugin info
- /ns add <word> - Add a word to the banned list
- /ns allow <word> - Add a word containing symbols to the symbols allowed list.
- /ns exempt <player> - Stop issuing warnings to specified player
- /ns notexempt <player> - Remove player for exempt list and continue issuing warnings
- /ns review - View all the words users flagged for review
- /ns remove <word> - Remove players request to review word
- /ns removeall - Remove all player requests for reviewing words
- /ns clear <player> - Remove warnings player has received
- /ns delete <word> - Remove a word from the banned words list
Permissions
- - ns.add
- - ns.allow
- - ns.exempt
- - ns.notexempt
- - ns.review
- - ns.remove
- - ns.remove
- - ns.clear
- - ns.delete
Configuration
Configuration file information Youtube review
Source Code
Source Download
Comments
Please give me input, thank you.
My website: http://www.graphicport.net
My server: http://minecraft.graphicport.net
do we have to set this up by ourselfs because most of the stuff has nothing for me
Does this still works without bugs in 1.7? If not when is an update coming?
I had to remove it. it conflicts with [SCS] Simplecomammndsigns plugin. Its good otherwise
@ManBeastPigDev
You can use the allow command for this. /ns allow o_o. Otherwise if people notice _ isn't flagged, they will take advantage of it.
The plugin should allow usernames of online players.
I like it. Only issue i have is when players use _ in words. Even if they are not swears they get flagged.
They often do O_O or sometimes legitimate uses like usernames etc. If it didnt flag those if they're not a swear match that would be nice.
@xavierarmadillo
I can not reproduce this. Are you adding words to the file while the server is running? If so, that would be the problem. Either make the word list when the server is not running or use /ns add to add words. Are you using the newest version?
@Kolgrath
Thats interesting. I don't have any of those problems on my own server. I will have to look into it to see what the issue is.
@xavierarmadillo
I have the perms set up and I get the message when I use the command on either console or in-game.
It also resets my words.yml file each time I reboot the server.
@Kolgrath
Do you have perms for those commands, or are you running them in console?
Figured out what it was. We have a rulebook I wrote that every player gets. It has words like "assume" and "assassin" in it. Because of the way the word was set up: /bass it was catching it and punishing me as the book's author.
However /ns delete is not working either. Gives message "Symbols are not flagged. No need to allow words containing symbols" and does not remove the word from the list.
Also had another weird issue.
2013-09-11 10:55:29 [SEVERE] [NoSwearing256] [BOOK]Tecumseh4645: ASS ASS ASS 2013-09-11 10:55:29 [INFO] §eKolgrath left the game.
Someone else swore in their book, yet it kicked me with the warning instead.
UPDATE: Nobody is writing in books, it's just doing this at random. Just happened again: 11:08:05 [SEVERE] [NoSwearing256] [BOOK]JerryRoberts1: ASS ASS ASS
And it kicks me, even though I had nothing to do with it.
Filter is working well, except we're having a couple of issues.
/ns clear <player> isn't working. Won't remove the warnings. It just comes back with "Symbols are not flagged. No need to allow words containing symbols" and doesn't remove the warnings.
/ns allow does not add the word to the allow list and comes back with the same message.
@nima0042
Depends on how the word file is setup. If it has /bass then only words that start with ass will be caught. /b means that it is the word boundary and can be at beginning or end of word. So /bass/b will only catch ass exclusively. ass/b will catch anything ending in ass, like glass.
Just a question: If a player wrote "glass" would it block the message cause it contained the word ass, or would the plugin recognize that it's a word? :)
@Underestimate
Yup no problem.
Looks good might try it out
@CarrotNubbin
Change your ass to /b/iass/b maybe?
/b is a border, so it means its the start or end of word. /b in front and at end means the word will not be contained. But then it causes issues like asshole wont be caught. so then oyu might have to add /basshole too.
I've got this in my config somewhere: noWarn: - Assume - ASSUME - assume
And this in the beginning of my worlds.yml
Allow: - Assume - ASSUME - assume
Yet it still doesn't let me say "Assume"...
@xavierarmadillo Thanks for the helps, you fixed it... But I added "Assume" to the allowed-words list... but players still can't type it without it censoring the "ass" part. It also prevents me from using ":<" and weird things like that.
But it's working great otherwise!
EDIT: The message was: ''<:' IS NOT ALLOWED WITHING PLATZ>:FL' is not an allowed word. This is a warning!
I've been getting quite a few of these messages from sentences containing "<" or ">" or "^" and stuff like that... as well as color codes.
Is it possible to make it so upon a user using a word on the blacklist, that the message isn't sent at all?