CurseBan
Current Version: 1.3.2.1
Recommended Build: 1.3.2-R1 (Craftbukkit build - 2377)
IMPORTANT: With 2.3.1b, matching has been changed. Please see the release notes for additional information
About
What is this?
Ever had a player flaming constantly? Or maybe you want to have a family-friendly server? Or you want to stop people from asking for diamonds? Now you don't have to worry about that anymore: CurseBan allows you to add "stalk words" - Whenever a player mentions one of them, he gets kicked. At the same time, the plugin keeps track of a "curse value" for every stalked words. This curse value is added to the players point count every time he uses such a word. You can define commands that should be executed once a user reaches a certain threshold, and a cooldown to remove points.
How does it work?
Every curse/banned word is assigned a certain point value. Every time a player uses one of these words, the word's point value is added to that players total count. Then, the command associated with that total value is executed. If none is associated, the next lowest is executed.
Commands, Permissions and Examples
Commands
- /cb - Displays help
- /cb list - Lists the current stalk words
- /cb add [word] <threshold> - Adds the word with that ban threshold to the list. If no threshold is given, 5 is used
- /cb remove [word] - Removes that word from the list
- /cb pardon [player] - Sets that player's kick count to 0 (Note: Will not unban if he has been banned)
- /cb pardon-all - Sets the kick count of all players to 0( Note: Will not unban if they have been banned)
- /cb save - Save all files to the disk. Handle with care, this will overwrite and changes made to the files that have not yet been reloaded.
- /cb set value [curse] [value] - Sets the curse point value of the curse
- /cb set matching [curse] [matchtype] - Sets the matching for this curse (Allowed: default, default-ignorecase, literal, literal-ignorecase, regex, regex-all-lower)
- /cb set kick [message] - Sets the default kick message
- /cb set command [value] [command] - Sets the command to be executed whenever a player reaches or passes value
- /cb listpoints [player] - displays points for a specific player (case sensitive)
Permission nodes
(Note that any node can be represented by its parent node - You can use cb.admin.* instead of typing in every node one by one)
- cb.admin.ignore - You won't get kicked for cursing
- cb.admin.pardon.all - Will set the kick count of all players back to zero. Will not unban them
- cb.admin.pardon.single - Will pardon single player. Also no unban
- cb.admin.add - Add curses to the list
- cb.admin.remove - D'uh
- cb.admin.save - Allows to save files
- cb.admin.set.value - Allows to set the curse points value of a banned word
- cb.admin.set.matching - Allows to set matching for a word
- cb.admin.set.kick - Allows to set the default kick message
- cb.admin.set.command - Allows to set a new or existing command to be executed when a point value is reached
- cb.list - Allows to see a list of all stalked curses
Example Usages
- Stop cursing: /cb add shit
- Stop people from typing in ALL CAPS: /cb add r:[A-Z]{3} will kick for 3 or more consecutive uppercase letters
- Give people diamonds if they say "supercalifragilistic": /cb add i:supercalifragilistic 9000, in the config file, put 9000: give %name% diamond 64;cb pardon %name%
Examples
/cb add shit - The list now contains the word shit, with default value 5
/cb list -> "[shit]"
/cb add fuck 10 - The list now contains the word fuck, with a value of 10
/cb list -> "[shit, fuck]"
/cb set command 0 kick %name% - Kicks a player whenever he swears and has more than 0 points (Basically, always) (Note that %name% is a variable used to represent the player's name)
/cb set command 10 jail %name% - Jails a player whenever he swears and has more than 10 points
Player A joins...
A: "This server is shit!" -> "shit" has a value of 5 -> A now has 5 points -> 0 < 5 < 10, so the "kick" command is executed
A rejoins...
A: "What the fuck, man?" -> "fuck" has a value of 10 -> A now has 15 points -> 10 < 15, so the "jail" command is executed
All this can also be done by editing the yaml files created in /plugin/CurseBan - see this page for more information: http://dev.bukkit.org/server-mods/curseban/pages/how-to-use-the-yml-files/
Misc
ToDo
- Add the ability to tell the player their bad word they said using %word% (You'd be able to add this to the jail sign (IE - Swearing: 'shit' ))
- Stop the server from overwriting files saved to the server by the server owner after a restart.
Changelog
v1.3.2.1:
- Changed version number to reflect current MC version it is configured for. (1.3.2) with additional build number for this (.1)
- Fixed issue 18 and 20 for issues with PlayerChatEvent (essentially replaced this even with AsycPlayerChatEvent) This seems to have resolved this issue, but I'm not entirely sure to be honest. Please report any issues you find to the ticket system. Do not post here.
Note this version will NOT work with tekkit servers. Use version 2.5.0 for Tekkit version 3.1.2.
v 2.5.0: -First release by new project owner GokouZWAR
- Fixed points being added to players instead of taking them away over time.
- Added console tracking for player's points so you can see when the system takes away player points, and how much was removed and when.
- Updated for Craftbukkit 1.2.5 - R4
- Added a few things on this page (commands that were missing, comments, and old missing revision information)
v 2.4.0: - (don't know if all these were added but I found these on the update page, possibly things he wanted added or had fixed in this version, not entirely sure. They were marked 2.4 so I'm going with this as the last updates. -GokouZWAR)
- (Hopefully) Fixed config not being saved on shutdown
- Fixed /cb set matching setting the wrong option
- Added: Logging to save methods
- Added: Reload command (/cb reload <all/config/curse/count>). Permission node: cb.admin.reload (alternatively, permission for one file only can be given by cb.admin.reload.<file>)
- Added: List command (/cb listpoints [player] - Player is optionally, omitting it will display all). Permission node: cb.admin.listpoints
- Added: Config option "save": Determines how files should be saved, in addition to the shutdown save:
- always: Save every file whenever it is modified
- config: Save the config file when modified
- curse: Save the curse file when modified
- count: Save the count file when modified
- Multiple options are possible: "save: config,curse"
v 2.3.3:
- Update to CraftBukkit 1.2.5-R1.0 (Phew, finally)
- Extended logging to include the message in which the word was found.
v 2.3.2:
- Updated to R6/1.2.3-R01
- Removed any deprecated API
- Included new matching, see release notes for more information
v 2.3.0:
- Added variable for the config file: %points% is replaced by the number of points the player has
- Implemented http://dev.bukkit.org/server-mods/curseban/tickets/8-log-chat-entry/ : Added "log-actions" option to the config file (default: true). This logs: The name of the player, the word that triggered the filter, the commands issued in return and the points of the player.
v 2.2.10:
- Moved the always-kick check behind any executed commands - This should fix bug #6 (http://dev.bukkit.org/server-mods/curseban/tickets/6-still-wont-ban-no-obvious-errors-tho/) which caused the plugin to not perma-ban people
v 2.2.9:
- Updated to 1.1-R3
v 2.2.8:
- Security patches
v 2.2.7:
- Command lists are now separated by both ";" and " ;"
- Version number displayed on startup and shutdown
v 2.2.6:
- Fixed Bug #2 (#3, #4): NullPointerException in onClientChat
v 2.2.5:
- Changed indenting of the .yml files
v 2.2.4:
- Fixed null-pointer-exception after using /cb pardon-all
- Added support for multiple commands
- Added /cb save
v 2.2.3:
- Updated to MC 1.0.* / CB 1.0.1-R1
v 1.2.3:
- Added cooldown (See: "How to use the .yml files")
- Added command: /cb set literal [curse] [true/false]
- Added permission node: cb.admin.set.literal
v 1.2.2 (Final and beta release notes merged):
- Updated to RB 1337
- Rework of the curse punishment system
- Switched everything to Yaml
- Added literal matching: A * in front of the word if using ingame commands, or the "literal-match" option in the Curses.yml
- Fixed Curses not being loaded properly (If you already added curses, but they arent showing up ingame, rename "Curse Point Value.yml" to "Curses.yml"
- Custom commands possible
v1.1.2:
- Updated to RB 1317
- Hopefully fixed PEX issue
- Skipped v1.1.1, derp
v1.1.0:
- Updated to RB 1240
v1.0.0:
- First release
Contact
Ticket here or contact me on www.mcnations.net. Email: administrator at mcnations Dot Net. Latest version in use will be on server.mcnations.net:25599 - running Tekkit.
Is there a way to match literally by default? Or an easier way? It will be very tedious to go through a hundred disallowed words to add "/b" before and after it. My previous chat filter plugin did that by specifying the type of match such as "literal".
If you're looking for a replacement curse filter check out http://dev.bukkit.org/bukkit-plugins/pwnfilter/
Sorry guys but no there will not be anymore updates at this time for curseban. I've moved on to planetside 2 and I have shut down my minecraft server. If I ever bring my server back up again I will make an update for it.
Curseban works with 1.4.6-R0.1!
@strontkever
This is due to the introduction of the AsyncPlayerChatEvent method in 1.3
("Cannot kick player from asynchronous thread!")
Just needs something simple in the plugin that passes the player value out to a method to kick/ban them.
hello,
I am trying to add it to my server but do not know how to.
Please can you help me.
Thank you
happens everytime if a player hits a curse count limit, uses this cfg:
also, the "say ..." part when it should tempban did already stop working for me like since 1.3, not a biggy though, but now it doesnt do anything...
im also using essentials which i think controls tempban command, but it works fine directly..
I can't help unless you provide all the information. This doesn't tell me anything. Submit a ticket with a full server log and ill see what I can do. Replicate the issue as well. If it happens once in a year I can live with that. If it happens once a day then we might have something to look at. As it is right now I am no longer playing minecraft so I really don't plan to do much else with this project and the original owner is long gone it seems.
2012-11-27 18:01:39 [INFO] Error: Cannot kick player from asynchronous thread!
happend since one of the latest bukkit builds
Feature request
Please enable this to work on /msg and /whisper as well.
Also - is there a way I can stop the word from being shown? eg. it out?
Thanks.
I'm real sorry his is taking so long but the primary reason I've been lagging behind is I've been waiting for tekkit to update to the latest versions so I can properly test with mine. I also just recently lost my job and I have gotten a new one and in transition here getting up I speed on things. I used I do a lot of my plugin work and server maintance at work during downtime. As of late I just haven't had that time available.
Boreeas I haven't been able I check to see if it's that simple yet. From what I've heard it is not that simple because of the changes in the event. If you want to give it a shot please send me what you change from your code you gave me and I'll apply my change again and I'll release whatever we have after that. Maybe that'll help some. My change I made was not that complicated anyway.
We got the dreaded MC 1.3 Void on login problem and were forced to update to Bukkit-1.3.2-R0.1-5-g14140d6-b2361. After that we started hard crashes two or three times a day. I removed Curseban (gasp!) and the crashes stopped. Please, please can this be fixed?? I'll even rent time on a commercial server (Beastnode) for you if you like. Or we can try out a fix on our server. I would just really like to get this fixed.
@gokou
just get anothrr server for plugin testing like i did for my plugins so i can test for people not using tekkit
Lately the offending words have been showing up in the MC client. The person gets the penalty 90% of the time, but the players still see the curse word.
Just switching from PlayerChatEvent to AsyncPlayerChatEvent is not enough?
@paulj1x
Sorry guys I've been waiting for Tekkit to get a release version that I can use to test it with 1.3 but they're so far behind now I doubt it will be available till the beginning of October it seems. I'm going to have to find another method to go about this I guess. I don't like releasing software I cannot test out myself before releases. I can local test it but it won't do it justice locally. I prefer to have my users test it on my server first before giving it out to the general public. It also allows for me to see how well it plays with other mods or plugins that I use at least so I can make sure it will not conflict with other stuff.
@GokouZWAR
When do you think you'll be able to fix Curseban? My server.log grows so fast with all of the Curseban error messages I have to delete it every few days or my server crashes! The error messages make the console fairly useless. Also it doesn't seem to catch every swear, maybe only 90%. I've just done a search and I think this is the best plugin against swearing so I hope that it gets fixed soon.
still, can u check if the plugin might cause lag or fix those thingies?
since 1.3 has his tickrate problems and i cant just ditch this plugin can we :)
@paulj1x
For reference to anyone coming here to view the plugin, the 1.2.5 R4 release version will not work fully with CB 1.2.5 R5 or higher properly. It will operate but it's using older tech. You will see error messages in your console. They SHOULD be ok to ignore. If it does not operate as described then please let me know. As soon as I can get my development environment setup properly I'll be able to get this updated for 1.3.1. I'm mainly waiting on minecraft forge to update their stuff to 1.3.1 and allow MC Port Central to make an update to their stuff so I can migrate my server up to 1.3.1 for proper testing. One of the major downsides to running a tekkit server unfortunately is how many hands the base minecraft code has to change through before it gets updated. If only minecraft would allow for mods and plugins by default so the guys here at bukkit and those at MC Port Central wouldn't have to do so much crap to get it updated.
This is the nature of major releases from mojang tho. When we went from 1.1 to 1.2 we had the same issues.
Thanks for picking up the plugin!!
There seems to be a serious problem with the last few bukkit builds, was fine up until the last maybe 6 builds, I've posted a ticket. Thanks you help.