DynamicBan
Announcement: Version 1.3.1 is not compatible with current spigot versions!
Announcement: Version 1.3.1 is not compatible with current spigot versions!
A workaround is being worked on.
- Posted on (10.10.2014) by DJ Addi
- Kick, ban, IP-ban or range-ban players
- Temporarily ban or IP-ban players
- Automatically punish players that are blacklisted by DNSBL services
- Warn players and execute commands after a certain amount of warnings
- Get notified when two players with the same IP adress join or compare IPs manually per command
- Lock IPs to a single name
- Recieve a list of all players and their IPs from the console
- Make players immune to all commands or whitelist them to protect them from bans
- Check a player's status including warnings, kicks, bans, temporary bans and more
- Send players information about their own warnings whenever they login
- Purge a player's data with a simple command
- Fully costumizable messages for everything including broadcasts
- Only explicit autocomplete for safer administration
- Update notifications
Command | Arguments | Description |
---|---|---|
dp | [Name] | Displays details for the given player. |
dk | [Name] [Reason] | Kicks the specified player. |
db | [Name] [Reason] | Bans a player's name. |
dbip | [Name] [Reason] | Bans a player's IP. |
drb | [Name] [level:1/level:2/level:3] [Reason] | Bans a player's IP range. |
dub | [Name] | Unbans a player's name.. |
dubip | [Name] | Unbans a player's IP. |
durb | [Name] | Unbans a player's IP range. |
dst | [Name] (1/2) | View detailed information about warns and bans. |
dtb | [Name] [Time eg. 1h:2m] [Reason] | Temporarily bans a player's name. |
dtbip | [Name] [Time eg. 1h:2m] [Reason] | Temporarily bans a player's IP. |
dim | [Add/Remove][Name] | Adds or removes a player's immunity to DynamicBan commands. |
dwl | [Add/Remove][Name] | Adds or removes a player from the whitelist which protects the player from bans. |
dw | [Name] [Reason] | Warns the specified player. |
dpg | [Name] [data,warns,kicks] | Resets a player's data. |
drl | Reload the DynamicBan data. | |
dlist | View a list of online player's IPs. (Console only) | |
dc | [Name] [SecondName] | Compare the IPs of the specified players. |
dl | [IP] [Name] | Locks the specified IP to a name. |
dul | [IP] | Unlocks the specified IP. |
dm | [Name] [Time eg. 1h:2m] [Reason] | Mute the specified player. |
dum | [Name] | Unmute the specified player. |
Permission | Granted |
---|---|
operator or dynamicban.* | All commands |
dynamicban.ban.player | db |
dynamicban.ban.ip | dbip |
dynamicban.ban.range | drb |
dynamicban.immune.add | dim add |
dynamicban.immune.remove | dim remove |
dynamicban.whitelist.add | dwl add |
dynamicban.whitelist.remove | dwl remove |
dynamicban.purge | dpg |
dynamicban.kick | dk |
dynamicban.player.details | dp |
dynamicban.player.standing | dst |
dynamicban.reload | drl |
dynamicban.tempban.player | dtb |
dynamicban.tempban.ip | dtbip |
dynamicban.unban.player | dub |
dynamicban.unban.ip | dubip |
dynamicban.unban.range | durb |
dynamicban.warn | dw |
dynamicban.mute | dm |
dynamicban.unmute | dum |
dynamicban.lockip | dl |
dynamicban.unlockip | dul |
dynamicban.check | Same-IP notifications |
dynamicban.compare | dc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | # DynamicBan 1.3.1a - Comprehensive Administration System. config: check_for_updates: true # Do you want to check for updates? plugin_tag: '&0[&3DynamicBan&0]&f: ' # How do you want the plugin messages to be tagged? ('' to deactivate) broadcast_on_kick: true # Do you want to broadcast kicks? broadcast_on_ban: true # Do you want to broadcast bans? broadcast_on_ipban: true # Do you want to broadcast ipbans? broadcast_on_tempban: true # Do you want to broadcast tempbans? broadcast_on_iptempban: true # Do you want to broadcast iptempbans? broadcast_on_same_ip: true # Do you want to broadcast when two players have the same ip? broadcast_on_mute: true # Do you want to broadcast mutes? broadcast_on_unmute: false # Do you want to broadcast unmutes? broadcast_on_warn: true # Do you want to broadcast warnings? broadcast_on_rangeban: true # Do you want to broadcast rangebans? broadcast_on_unban: false # Do you want to broadcast unbans? warns_timeout: 72 # How many hours do you want to keep warnings? (0 to keep warnings permanently) warns_on_login: true # Should players be informed about their warnings after they logged in? warns_on_login_delay: 0 # By how many seconds should the warning notification be delayed? (0 to deactivate) connections_per_ip: 5 # How many connections do you want to allow per ip? (0 to deactivate) messages_per_ip: 3 # For how many connections from the same ip should the join and leave message be shown? (0 to deactivate) op_immune_bypass: false # Allows OPs to bypass the immunity of players. mute: blocked_commands: # When a player is muted, what commands should be disallowed? - msg - tell - r - er dnsbl_services: - zen.spamhaus.org - dnsbl.sorbs.net # Which DNSBL services do you want to be checked? dnsbl_result: none # What should happen when a blacklisted ip attempts to join? (none, kick, ban, ipban, notify) tempban_limits: dynamicban/tempban/limit/minute: 60 dynamicban/tempban/limit/hour: 3600 dynamicban/tempban/limit/day: 86400 # Do you want to define permission nodes to limit the maximum tempban length? allow_offline_players: true # Do you want to allow Bukkit to handle offline UUIDs if they don't have a normal one? enable_bukkit_bans: true # Do you want to enable the Bukkit bans as backup? convert_to_uuid: true # Do not change this! messages: # Variables are {SENDER}, {REASON} and {TIME} for temporary actions kick_message: "You have been kicked by {SENDER}. Reason: {REASON}" # The kick message. mute_message: "&cYou have been muted by {SENDER}. Time left: {TIME}" # The mute message. unmute_message: "&bYou have been unmuted by {SENDER}." # The unmute message. ban_message: "You have been banned by {SENDER}. Reason: {REASON}" # The ban message. tempban_message: "You have been temporarily banned by {SENDER}. Time left: {TIME}" # The tempban message. ip_tempban_message: "You have been temporarily ip-banned by {SENDER}. Time left: {TIME}" # The tempipban message. ip_ban_message: "Your IP has been banned by {SENDER}. Reason: {REASON}" # The ipban message. warn_kick_message: "You were kicked after multiple warnings." # The warnkick message. locked_ip_message: "That IP has been locked to another player." # The iplock message. ip_connections_message: "Too many players connected from your IP." # The iplimit message. rangeban_message: "Your IP-range has been banned by {SENDER}. Reason: {REASON}" # The rangeban message. muted_message: "&cYou cannot talk, you have been muted. Time left: {TIME}" # The message to send to the player when he/she is muted and attempts to send a message. muted_command_blocked: "&cYou cannot perform that command, you have been muted! Time left: {TIME}" # The message to send to the player when he/she is muted and attempts a blocked command. broadcast_messages: # Variables are {PLAYER}, {SENDER}, {REASON} and {TIME} for temporary actions kick_message: "&b{PLAYER} has been kicked. Reason: {REASON}" # The broadcast message when a player is kicked. mute_message: "&b{PLAYER} has been muted. Time: {TIME}" # The broadcast message when a player is muted. unmute_message: "&b{PLAYER}'s mute has been removed." # The broadcast message when a player is muted. ban_message: "&b{PLAYER} has been banned. Reason: {REASON}" # The broadcast message when a player is banned. tempban_message: "&b{PLAYER} has been temporarily banned. Time: {TIME}" # The broadcast message when a player is tempbanned. ip_tempban_message: "&b{PLAYER} has been temporarily ip-banned. Time: {TIME}" # The broadcast message when a player is iptempbanned. ip_ban_message: "&b{PLAYER} has been ip-banned. Reason: {REASON}" # The broadcast message when a player is ipbanned. warn_message: "&b{PLAYER} has recieved a warning. Reason: {REASON}." # The broadcast message when a player is warned. rangeban_message: "&b{PLAYER} has been range-banned. Reason: {REASON}" # The broadcast message when a player is rangebanned. unban_message: "&b{PLAYER}'s ban has been removed." # The broadcast message when a player is unbanned. other_messages: immune_message: "&cThat player is immune to your command!" # The message the commandsender will recieve if a player is immune. warned_message: "&c{SENDER} warned you. Reason: {REASON}." # The message to send to the player when he/she is warned. same_ip_message: "&b{PLAYER} logged in on the same IP ({IP}) as {OLDERPLAYER}." # The message to send to players with permission/op when the are two or more players with the same ip. dnsbl_ip_message: "&b{PLAYER}'s ip is blacklisted." warnings_message: "&cYou have been warned for the following reason(s):&b{WARNS}&cYou have {AMOUNT} warning(s)." # The message to send to players if warns_on_login is true. Each warning will be sent in a new line. default_reason: "&cUnspecified" # The default reason for everything. dnsbl_reason: "&cYour ip is blacklisted." # The default reason for DNSBL bans. |
- MySQL
Information on further development
Hey guys, DJ Addi here. With version 1.3.0 the plugin reached a point where I'd say it is more or less finished. If there are bugs or important features that require an update I will release a new version as fast as possible (without waiting for stuff to pile up). However, it is unlikely that new big features will be added (unless I really like them so keep the suggestions coming).
Stay tuned for updates on the release of DynamicBan 2.0.
Currently working on:
- Cleaning up database code, adding missing comments to other classes
- Moving ban-types to separate tables to allow future scalability (We cannot easily append missing fields, but we can add on missing tables if a new feature is added).
Will there be a 1.7.10 Spigot compatible version?
force_offline_players don't see it in the config?
@Manic_Kaval
I'm having trouble reproducing that problem. It seems to be an issue with spigot's UUID handling, so I guess that there's not much that I can do about it. I'll try a few things with a spigot server, but the patch might take a while.
Whenever I try kicking a player it says that they're not online
@djaddi
Sorry for the late reply, but setting the force_offline_players to true did solve the problem. thx
Great plugin, but when I updated my version to spigot in order to allow 1.8 users to join it seems that kicking doesn't work anymore and no console errors appear and mute/ban work but ban doesn't kick the player in order to ban them, but muting still works.
@Joseei
Don't worry, I always read the tickets, I'm just not always logging in just to change their status (lazy me).
@djaddi
Can you have a look at my tickets? Finish confirming things there. Thanks.
@Done84
So essentially you want the same ip message only when it's banned? I'll take a note.
@Joseei
Will do.
@Manic_Kaval
Do you have any error logs?
@djaddi
I'm currently having an issue with the plugin. We are running a spigot build that is 1.7 and 1.8 compatible.
It will ban people but it wont kick the person off the server as it thinks they aren't online, so we cant kick people either. Say I ban <player>, says he is banned but he isn't booted off because to the plugin he isnt online (when he is), but if he relogs, he wont be able to come on because he is banned. I don't know how to make it so it recognizes the players are online to kick them.
@djaddi @Done84
Found out why the reason wasn't showing up for when doing temp bans. It was this in the config -
tempban_message: 'You have been temporarily banned by {SENDER}. Time left: {TIME} - Reason: {REASON}'
but the reason part wasn't there originally, so I had to manually add it and once I did the temp ban reason came up - http://i.imgur.com/AhRKD7s.png
Developer, can you add the reason in for temp bans by default for other users of this plugin - cheers <3
Also about the bug/request etc I posted it below @djaddi - so feel free to carry this conversation on here or through my ticket :)
Devs: Can you guys please add a detection of banned IP's from the same account when players log in? Atm the plugin detects same ip accounts, but it would be awsome to have:
PlayerX was banned in the following accounts: PlayerY.
Please?
@djaddi
Error message for offline users when you do /dp username is "An internal error occurred while attempting to perform this command" - just tried it on a few different offline users. Banned offline users it worked on from what I can tell, normal offline users got the error above.
Quick Edit: Seems to be wish and wash with offline users. Random pretty much.
Anyways about the temp ban thing I posted below, I haven't exactly found a fix yet. I want it to show up like it does for Done84 below but it doesn't - just who banned and the time left. What do I have to change in the config? Thanks.
@guerocraft
You can't fix it.
It happens because saving player data in Bukkit (or spigot) isn't thread safe (which definitely is a problem on their end, but Minecraft sucks at multi threading so that will propably never change). I'll see what I can do.
dnsbl_services: - zen.spamhaus.org - dnsbl.sorbs.net dnsbl_result: kick
How can i fix it?
[00:26:40] [Craft Scheduler Thread - 714/ERROR]: Unhandled exception executing command 'kick' in plugin DynamicBan v1.3.1b org.bukkit.command.CommandException: Unhandled exception executing command 'kick' in plugin DynamicBan v1.3.1b at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) [core.jar:git-Spigot-1622] at com.earth2me.essentials.Essentials.onCommandEssentials(Essentials.java:395) [Essentials.jar:?] at com.earth2me.essentials.Essentials.onCommand(Essentials.java:380) [Essentials.jar:?] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) [core.jar:git-Spigot-1622] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:181) [core.jar:git-Spigot-1622] at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:767) [core.jar:git-Spigot-1622] at co.cc.dynamicdev.dynamicbanplus.listeners.DNSBLListener.dnsblLookup(DNSBLListener.java:50) [DynamicBan.jar:?] at co.cc.dynamicdev.dynamicbanplus.listeners.DNSBLListener.access$0(DNSBLListener.java:47) [DynamicBan.jar:?] at co.cc.dynamicdev.dynamicbanplus.listeners.DNSBLListener$1.run(DNSBLListener.java:41) [DynamicBan.jar:?] at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftTask.run(CraftTask.java:71) [core.jar:git-Spigot-1622] at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:53) [core.jar:git-Spigot-1622] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [?:1.7.0_65] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [?:1.7.0_65] at java.lang.Thread.run(Thread.java:745) [?:1.7.0_65] Caused by: java.lang.IllegalStateException: Asynchronous player kick! at org.spigotmc.AsyncCatcher.catchOp(AsyncCatcher.java:14) [core.jar:git-Spigot-1622] at org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer.kickPlayer(CraftPlayer.java:241) [core.jar:git-Spigot-1622] at co.cc.dynamicdev.dynamicbanplus.commands.KickPlayer.onCommand(KickPlayer.java:77) [?:?] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) [core.jar:git-Spigot-1622] ... 13 more [00:26:40] [Craft Scheduler Thread - 714/INFO]: [0;31;1mAn internal error occurred while attempting to perform this command[m
Back from a short vacation, sorry for the wait!
@Joseei
Glad you fixed it yourself. As for the /dp command, I have a good guess why this happens, but can you still send me the error message?
@dutchy1001
Yes, I did realize your concerns (and those of the other guys that complained before you), use 1.3.1b and set force_offline_players to true.
@Done84
Oh right, so its not a issue, its my end. Any idea what part of the config? I'll look into it
but apart from that the developers still need to fix that small bug I reported below :PEDIT: I see the bug now, you can't use /dp username on offline players, really?
@Joseei
Then something might be wrong with yr config. I see the tempban reason if i tempban myself, look: http://prntscr.com/4jlcul
@Done84
That's the thing. You do the full command and add the ban reason for the temp ban but the temp banned user doesn't see the reason, just the time left. So that's why I made my original post.
Also I noticed after I temp banned someone and I did "/dp username" I got the error ingame saying "An internal error occurred while attempting to perform this command" and once they are un-banned I can use the details command on the user again without that error.
Developers of this plugin can you add the feature I requested below please and fix this small issue? Thanks.
@dutchy1001
I have the same problem. Its a bit annoying.