Punishment
Punishment provides server staff with basic commands to moderate and keep the server in order. From warning to banning, Punishment has a range of helpful features to deal with players depending on the offence they make.
- Bukkit - view plugin on bukkit.org
- Spigot - view plugin on spigot.org
- Sponge - view plugin on spongepowered.org (coming soon)
- Punishment Discord Server - need quick support or have a suggestion? Come pop by!
- Punishment Source Code - fork, pull, clone, everything you need is here!
- Punishment Plugin Metrics - all those snazzy statistics!
Features
- Warning - Warn a player with a custom message. Warning a player will send them the custom message as a formal warning.
- Muting - Mute a player with a custom duration. Muting a player prevents them from sending chat messages. The player will remain muted upon disconnecting and re-connecting to the server.
- Freezing - Freeze a player with a custom duration. Freezing a player prevents them from moving, breaking blocks, placing blocks, interacting with the world, and running chat commands. The player will remain frozen upon disconnecting and re-connecting to the server.
- Jailing - Jail a player in a custom location with a custom duration. Jailing a player prevents them from breaking blocks, placing blocks, interacting with the world, and running chat commands. The player will remain jailed upon disconnecting and re-connecting to the server.
- Kicking - Kick a player with a custom message. Kicking a player will disconnect them from the server and display to them the custom message.
- Banning - Ban a player with a custom duration and message. Banning a player will disconnect them from the server and display to them the custom message, as well as prevent them from re-connecting to the server until the duration has expired or they have been manually unbanned. Banning supports SQLite and MySQL databases.
- Notes - Staff members can create, delete, view, and manage custom player notes to help keep track of players long-term.
- Tickets - Players can create support tickets that will be displayed to all online staff members. Staff members can claim, delete, view, and manage these tickets to help handle player support.
- Command Immunity - Prevent your Admins and higher ranks from being punished by lower ranks.
- Command Logging - Tired of searching through your server.log for things? All Punishment commands that are issued are logged under punishment.log for easy access.
- Language File - Completely customise almost all messages and colour codes within Punishment.
Installation
Drag and drop Punishment.jar into your servers plugin directory.
Configuration
View the default configuration here.
Commands
View the list of available commands here.
Permissions
View the list of available permissions here.
Language
Want to help translate Punishment and make it available in all languages? Simply grab the English lang.yml and upload your translated version to pastebin.com. Your help will be greatly appreciated!
Updates
Punishment will automatically search and notify you of any updates upon server start. If you wish to disable this feature, set the following Punishment config.yml setting: 'updates: false'
Metrics
Punishment utilises Metrics to collect useful information and sends it to mcstats.org. If you wish to disable this feature, set the following Punishment config.yml setting: 'metrics: false'
Planned Features
- /muteall, /freezeall, /kickall commands.
- IP bans.
- Improved /banimport to import bans from popular Bukkit plugins files/databases as well as import vanilla Bukkit bans.
- /banexport to export your bans to vanilla Bukkit bans as well as export a simple uuid list.
- Banned words and phrases.
- Add a 'strike' feature for staff members to give to players according to what offence they make. Strikes will accumulate and certain console commands can be run depending on the strike amount.
- Admin/Staff GUI menu.
- Config section to allow Punishment commands to be manually disabled.
- Command aliases to avoid conflicts with other plugins.
- Time parameter limits to avoid excessive punishment lengths.
@PangeaCake @TheDreamJay
Been pretty busy, I will be fixing/re-writing things soon, thanks for your patience!
his server is running CraftBukkit version git-Bukkit-1.7.2-R0.2-b2974jnks (MC: 1.7.2) (Implementing API version 1.7.2-R0.2) [15:36:11] [Server thread/ERROR]: Could not load 'plugins\Punishment.jar' in folder 'plugins' org.bukkit.plugin.InvalidPluginException: java.lang.UnsupportedClassVersionError: net/dkcraft/Punishment/Main : Unsupported major.minor version 51.0 at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:184) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:308) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:231) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at org.bukkit.craftbukkit.v1_7_R1.CraftServer.loadPlugins(CraftServer.java:255) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at org.bukkit.craftbukkit.v1_7_R1.CraftServer.<init>(CraftServer.java:233) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at net.minecraft.server.v1_7_R1.PlayerList.<init>(PlayerList.java:63) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at net.minecraft.server.v1_7_R1.DedicatedPlayerList.<init>(SourceFile:14) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at net.minecraft.server.v1_7_R1.DedicatedServer.init(DedicatedServer.java:126) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:424) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] Caused by: java.lang.UnsupportedClassVersionError: net/dkcraft/Punishment/Main : Unsupported major.minor version 51.0 at java.lang.ClassLoader.defineClass1(Native Method) [?:1.6.0_01] at java.lang.ClassLoader.defineClass(Unknown Source) [?:1.6.0_01] at java.security.SecureClassLoader.defineClass(Unknown Source) [?:1.6.0_01] at java.net.URLClassLoader.defineClass(Unknown Source) [?:1.6.0_01] at java.net.URLClassLoader.access$000(Unknown Source) [?:1.6.0_01] at java.net.URLClassLoader$1.run(Unknown Source) [?:1.6.0_01] at java.security.AccessController.doPrivileged(Native Method) [?:1.6.0_01] at java.net.URLClassLoader.findClass(Unknown Source) [?:1.6.0_01] at org.bukkit.plugin.java.PluginClassLoader.findClass0(PluginClassLoader.java:80) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:53) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] at java.lang.ClassLoader.loadClass(Unknown Source) [?:1.6.0_01] at java.lang.ClassLoader.loadClass(Unknown Source) [?:1.6.0_01] at java.lang.ClassLoader.loadClassInternal(Unknown Source) [?:1.6.0_01] at java.lang.Class.forName0(Native Method) [?:1.6.0_01] at java.lang.Class.forName(Unknown Source) [?:1.6.0_01] at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:173) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks] ... 9 more [15:36:11] [Server thread/INFO]: Preparing level "Void" [15:36:11] [Server thread/INFO]: Preparing start region for level 0 (Seed: -949956571556574917)
Any news on the re-write? No rush, just curious. Awesome plugin by the looks of it! Is this on Github?
Also, it'd be cool if you could have like some way to see previous punishments and maybe notes from admins like "may have griefed" etc.
I dunno.
Edit: just saw the "Todo" section, ignore my suggestion.
A full re-write of this plugin will be started soon. It's something I've wanted to do for a while, and it should finally include a lot of the features listed under the to-do section.
temp muting and banning also custom ban message? Please???
@WarblesGaming
SQLite will be coming first before MySQL. Unfortunately, I'm not all that into coding anymore, so this idea will probably never happen.
You should put a MySQL database in it... I run a network and that would be really cool :)
Working on a UUID fix for CraftBukkit 1.7.8-R0.1
Nice! i really look forward to see that! :)
@emenge
Hey, thanks for the suggestions, glad you like the plugin!
I'll look into adding the warning amount in /puncheck. As for the plugins banning feature, I'm not going to be adding any functionality until I dive into SQLite. In the near future, I'll totally be re-doing banning to make way for new features including: ban issue date, banned by, ban reason, ban length, IP bans, unbanned by, unban reason, and even ban editing.
Hi, i really like this plugin :)
It would be great if you could add number of warnings in the /puncheck command.
And if possible, add a note to bans. Not necessarily for the player to see. But rather as admin trying to keep track of why a player was banned.
Emenge
@x_clucky
Hey Clucky. The notes feature was almost done except for one thing, which I haven't really worked on in a while. I'll try get that done by the next update.
The time and jail feature will probably come at a later time, though, but I will be making a start on that. I hope it won't be too much to wait.
Bump on the Jail feature and time feature. Although, also add a time feature to ban as well. That would be great. The notes sounds like a wonderful idea too!
@LHammonds
Hey, thank you for your feedback! I always appreciate these long posts that are full of ideas and suggestions. I'll try to break this down as best I can.
With my limited knowledge on java, I haven't yet been able to mess around with SQLite/MySQL databases, but once I do, I plan to add a range of logging information. These being: ban issue date, banned by, ban reason, ban length, IP bans, unbanned by, unban reason, and even ban editing. All this information will be viewed by /bancheck <player/IP>, as well as an addition to other commands for the other features mentioned.
As for adding a length to things like mute and freeze, this is next on my to-do list, and I should be getting to that shortly. The strike system is also something I want to get done in the future, and you bring up some good ideas which I'll be sure to implement.
Notes are coming very soon too, but these will be separate from things like viewing old warnings/kicks/etc, theses are purely for simple written notes for staff to see.
I do like the idea of viewing extra player info apart from bans. Although I may have to split this up into separate commands, because of the length of some of the info. For example /playerinfo notes, /playerinfo strikes, etc. But I'll get to that when I need to.
I didn't add single commands to the permission list because they're found in the commands page, but I'll add them anyway to stop confusion.
Thanks again. =)
Thanks for creating and sharing this plugin. This is something very close to what I'm looking for in a moderation system.
Why is there not a [reason] option for bans? It would be handy to include a reason so when they try to re-connect, they not only see they are banned but why.
I'm really interested in the ability to mute for a specific and variable amount of time (temp mute) as well as ban for a specific and variable amount of time (temp ban)
The strike system seems like a superb idea. My rules typically require going through a certain range of motions, 1 offense = warning, 2nd - 4th offense = temp mute or temp ban, 5th offense = permanent ban. A strike system would simplify this greatly allowing the mod/admin to simply issue a strike with a reason and the system determines the correct level of punishment based on history. However, it probably would be a good idea to have some way to reduce the strike level over time...such as a strike being removed once it is a month old for example.
I have a player note system right now but having it integrated directly with a punishment system (strike/warn/mute/ban) where the [reason] for the punishment is attached to the player and remains there unless manually deleted so history can be viewed on players. Please make sure to record the person performing the action (moderator) and the datestamp as well as the ability to remove 1 specific note/warning in case it was found to be in error.
The ability to ban the IP would also be nice (but not mandatory). If writing info to a MySQL or SQLite database, it could be handy to keep a list of all unique IP addresses associated to a user (and last used datestamp) with the ability to cross-reference them to find potential alt accounts. The ability to purge old information would also be necessary since many people have dynamic IP addresses and could keep increase the database size.
If you do implement a MySQL backend, please provide a way to convert back-n-forth between MySQL and SQLite. This will allow production data to be exported to test servers which should not have access to the MySQL production data or may not have access to a MySQL database at all.
It would also be nice to have the system files updated with all appropriate fields. "banned-ips.txt" and "banned-players.txt" so that each entry shows the Name/IP, action date, name of the mod, length of action and reason.
Question: If a player is banned (with a reason msg), would the "/seen" command in Essentials be able to display the ban reason? If it could, that would reduce a lot of chatter about "if" or "why" a player was banned unless there was a built-in player info command....hmm.
With all the various possible punishments and warning, could you add a player info summary command? Example (showing all possible options):
or with a strike system:
It would only show what is set...such as not even showing "Exempt from" unless the player was exempt from something.
On your permission page, you left out the "kick" and "warn" permissions. I'd recommend listing each and every permission node on that page such as the following:
Oops, you said "short" feedback. Sorry. { exits stage right }
Thanks,
LHammonds
@Flamez44
Hey, thank you for the feedback. I've tested it with Herochat, and muting a player should mute them across all channels. What channel plugin are you using?
Well done DeeKay! I do have a small question. I have multiple chat channels, not all default. Anyway to add in the config to mute the player from ALL the channels, not just the default?
@xghozt
Hey, thanks for your feedback. It looks like this tool listens into certain ban lists, and I wouldn't have any way of sending my bans to the tool. However, once I revamp my banning system, I will be adding some nifty commands that won't disappoint you. =)
This is something to look into, though. If I ever feel like a bit of a challenge in the future, I could look at hosting a tool like this to list bans made within servers using Punishment.
Nice plugin!
Could you maybe at a function that add a function that tells us if new players have been banned multiple times using this tool? http://whitelist.mcf.li/
@CrazyCloakedMSC
Hey, thanks for your feedback so far, glad you like it. I will soon be changing the way banning works, and I will be storing everything in a sql database instead. Then I'll be able to fetch a lot more information about the ban (banned by, reason, length etc). But for now, I won't be doing much with banning.
What messages can't your staff see exactly? All my plugin does is sends the command sender a message on the command, so I didn't think anything would conflict with that. Have you tried running my plugin and/or any others on their own, just to see if it's a conflict?