BadWords
DO NOT INSTALL / UPGRADE TO VERSION 1.5 (or above) OF BADWORDS UNLESS YOU ARE RUNNING CRAFTBUKKIT 1.7 OR GREATER
An auto censor plugin that enables you to stop worrying about players swearing on your server. The number of warnings can be specified, as can the action that is taken once the warnings are expired (kick or ban).
For Portuguese speaking users, user AbsintoJPl has very kindly provided a video tutorial for Badwords. Thanks AbsintoJ!
Features:
- Individual words or entire phrases supported
- Regular expression support
- Banned words can be substituted for less offensive words
- Admin can define how many warnings players get
- Admin definable punishment (kick or ban)
- Case insensitive matching
- Only whole words or phrases are matched (i.e. "the" would not match in "tether")
- Admin can define who gets notified of profanities
- Nominated players (and op) can be ignored by BadWords
What's new?
- New to 1.52 - Hopefully fixed async kicking bug (Tickets 31, 33 & 34)
- New to 1.52 - Added UUID support (when you first start this version it will migrate your config file to using UUIDs instead of usernames)
- New to 1.52 - Added "reload" command to reload BadWords config
- New to 1.52 - Added "ignore.op" config option which makes BadWords ignore swearing by ops
- New to 1.52 - Added ability to tell BadWords to ignore swearing by nominated players
- New to 1.52 - Added optional auto-update of plugin
- New to 1.52 - Added "update" command to update plugin (if available)
- New to 1.52 - Added "banreason" config option
- New to 1.41 - Fixed bug in warning timestamps
- New to 1.40 - Added functionality that unbans a player when their warnings are reset
- New to 1.40 - Fixed bug that broke update checking enabling/disabling
- New to 1.40 - Fixed bug in "warnings" that would give remaining warnings for non-existant players
- New to 1.40 - Fixed bug preventing commands from being issued on the console
- New to 1.31 - Update checking can now be disabled
- New to 1.30 - Warnings can now be reset by an op
- New to 1.30 - Warnings can be configured to expire after a set time
- New to 1.24 - Fixed bug causing players to be warned of remaining warnings, when warnings -1 was set in config
- New to 1.23 - Fixed bug causing sporadic exception when adding or delete word from banned list in game
- New to 1.22 - Banned words can now be substituted for less offensive words
- New to 1.22 - Changed command from /bw to /badw to avoid collisions with other plugins (e.g. ButtonWarp)
- New to 1.2 - Various admin commands now available in game (see details below)
- New to 1.2 - Log censored messages
- New to 1.2 - Server logs and Ops are now notified when an update to BadWords is available
- New to 1.2 - Permission support
Is "timeout: 168" really hours and not minutes?
Awesome plugin but ..
When i ban a word like: santa people can always say it as: Santa , sAnta , SANTA , etc .. Maybe you could do something about it? :)
Thanks anyways! -Stan
@ChuckHunky
Basically he wants you to make it easier to type.
so instead of \w*?poop\w*?
he could do something like \*poop\* or simply *poop* (people tend to like it easy)
maybe you could find a way that when people use something like *poop* your plugin converts it and reads the * as \w*?
I can see what you have done though, and though it may not be simple for most server owners, it is very flexible, and as you said very powerfull
Edit: I suggest you put that link in the description for future reference.
@PapiDimmi
Well if you want to just ban words then just add those words to the config file as shown in the first example in the "Example word definitions" section above. For more complicated matches, I needed some syntax for defining word patterns and regular expressions are widely used and seemed the obvious choice. They're not as hard as they look, and they're very powerful, have a look here: http:www.vogella.com/articles/JavaRegularExpressions/article.html
@UnUltima23
It should be case insensitive, are you saying it is not?
@PapiDimmi
You do not need to use the regular expressions, see the simple match example in "Example word definitions" above
Make is non-case sensitive please
I'm really glad SOMEONE is standing up for whats right!!! Thanks!!!
@ChuckHunky
I dont know what you have fixed :) But it didn't fix the reset of amounts and the one when ban: false and kick: false in action it still kicks.
But i think you will figure it out ;)
Thanks!
I've not been able to replicate the problem some people are having with errors when a user is being kicked, but some have reported it so it's clearly a problem. I've created what I'm hoping is a fix, could someone who has this problem test it for me please? I've uploaded the new version (it's still marked as v1.25 at the moment) to the following URL:
http://dl.dropbox.com/u/134176/BadWords.jar
I'd be very grateful if you could test this and let me know if the problem is fixed
Thanks!
@mds818
OK, I've created a ticket and will hopefully get to the bottom of it soon. Thanks for letting me know :)
@marciopol
This is already an outstanding enhancement ticket, hopefully coming soon! Thanks for your feedback :)
@marciopol
Haha! Nice idea! Its not to harmful to.
Hey. Cool plugin, but could you add option, to strike swearing people with lightning?
@ChuckHunky
(I am using 1.4.5)
It does't reset, it stays on 0 even after server restart.
Also, when i have ban: false and kick: false in action it still kicks me.
Thanks for your good work!
@mds818
They should be reset when the person is kicked/banned, are you not seeing this behaviour?
Hello, love your plugin!!
Can the warnings be reseted when it gets to 0? I am using it as kick.
Thanks for your work!
aaand a command to adjust someone's warnings manually :)
This also seriously needs a reload...
Also is there a way to just replace the word in the sentence instead of the whole word?
ALSO
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:341)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:24)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:459)
at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:919)
at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:858)
at net.minecraft.server.Packet3Chat.handle(Packet3Chat.java:44)
at net.minecraft.server.NetworkManager.i(NetworkManager.java:208)
at net.minecraft.server.NetworkManager.c(NetworkManager.java:344)
at net.minecraft.server.NetworkReaderThread.run(SourceFile:93)
Caused by: java.lang.IllegalStateException Cannot kick player from asynchronous thread!
at org.bukkit.craftbukkit.entity.CraftPlayer.kickPlayer(CraftPlayer.java:219)
at org.bukkit.craftbukkit.entity.CraftPlayer.kickPlayer(CraftPlayer.java:214)
at uk.co.warmlight.andrew.BadWords.ServerChatPlayerListener.onPlayerChat(ServerChatPlayerListener.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:339)
... 10 more
I need exempt because I swear even if other people aren't allowed to :(