Ban Management

An advanced SQL based ban management system for your server which allows you to store reasons for bans

Managing a server can be quite difficult, let alone multiple servers with multiple staff. We at Frostcast were getting lots of posts on our forums from people who were asking to be unbanned. The amount of time it took having to find out who banned them and why was too long. Ban Management was born.

BanManager stores all bans in a MySQL database. Not only does it tell you why they were banned, but by who and the time that they were banned at. Upon the banned player trying to login to the server, the reason is shown. If it is a tempban, it shows the time left until they can join again.

The plugin also keeps a record of all previous bans in the database, so previous banning can be taken into account when dealing with certain players.

BanManager features mutes, warnings and a lot more. Be sure to check out the configuration options and available commands.

This plugin does NOT take into account bans via bukkit prior to the plugin installation

Global/Multi-server support

BanManager has two ways that can be used to have cross server banning with a network of servers. This is not dependant on proxies such as Bungeecord nor LilyPad.

If you want all your bans/mutes to synchronise across all your servers, i.e if you ban them on one server, they shouldn't be allowed on your network, then use the same MySQL database and tables for each server i.e each config should have the exact local connection details. You can also take this one step further to allow for advanced synchronisation. If you want only mutes to synchronise across all your servers, then simply use the same MySQL localDatabase details but change the ban tables so they are unique per server. The possibilities are endless!

If you don't want to synchronise all bans across your network but still want the ability to ban/mute someone across all servers, then enable the global config option on every server. Whilst the local connection details can all be different, for this to work, each server must connect to the exact same global. When global is enabled, it perodically checks for new bans, mutes, unbans etc. This enables the /banall, /muteall, /banipall, /tempbanall, /tempmuteall, /tempbanipall, /unbanall, /unmuteall, /unbanipall commands. These work exactly the same as their non-all counterpart (i.e /banall has the same arguments as /ban) except the bans/mutes are sent to all the servers that use the same global Database. When creating new servers, ensure you allow their schedules.yml to be created from scratch; this will allow them to sync all bans/unbans etc.


  1. Stop the minecraft server if running.
  2. Add the .jar file to /plugins.
  3. Start the minecraft server, the config file will be generated.
  4. Stop the minecraft server.
  5. Modify the config file filling in the local database (this can be a remotely hosted database) and setting enabled to true. You do not have to create the tables, the plugin will do that for you.
  6. If you run multiple minecraft servers from 1 database each of them running this plugin and you do not want the bans to sync across them all, you can change the table names in the config file.
  7. Start the minecraft server.
  8. Errors on start up or if the plugin disables itself on start up means you have entered your MySQL details incorrectly, or the connection was not possible. Check your console or server log for more information before reporting a bug.



Simply add the plugin to your build path and call the class BmAPI.

The following events can also be listened to, some of which can be cancelled:

  • IpBanEvent
  • IpBannedEvent
  • IpRangeBanEvent
  • IpRangeBannedEvent
  • IpRangeUnbanEvent
  • IpUnbanEvent
  • PlayerBanEvent
  • PlayerBannedEvent
  • PlayerUnbanEvent
  • PlayerMuteEvent
  • PlayerMutedEvent
  • PlayerUnmuteEvent
  • PlayerNoteCreatedEvent
  • PlayerWarnEvent
  • PlayerWarnedEvent





My database is remote, which option do i use?

  • local is required and will accept remote connections. The global option is for setting up global/multi-server support, please read the above section for more information.

BanManager is showing as red in /plugins

  • This means BanManager is disabled, please check either your server log or console for more information.

BanManager is disabling itself

  • This is either due to localDatabase enabled being false in your config, or BanManager was unable to connect to the database.

Can't connect to database

  • Ensure your connection details are correct. If they are, your MySQL database is probably refusing remote access. If you are using managed hosting, contact your host. If you are self-managining, grant permission to the IP of your minecraft server to access the database. Depending on your access, enter your your MySQL console (if via SSH, mysql -u root -p), and run the following queries, replacing dbname with the name of your database, username with the username you want to use to connect to the database, IP with the ip address of the web server and finally, the password for the username.
GRANT ALL PRIVILEGES ON dbname.* TO username@'IP' IDENTIFIED BY 'password';

Can I use colours in the custom messages?

  • Yes. Simply use & followed by the corresponding colour number. For example &c for red, or &6 for gold. A full list of colours can be found here.

Can I separate the denied message shown to banned players on to different lines?

  • Yes, simply use \n within the message in the config.yml wherever you'd like a new line to start.

Can I sync bans across all my servers?

  • Absolutely. Refer to the Global/Multi-server support section above.

Can I import bans from my banned-players.json and banned-ips.json files?

  • Yes using the /bmimport command. If you want to import players then use '/bmimport players' For ips, its exactly the same except type ips instead of players.

Can I export data from BanManager?

  • The plugin contains a /bmexport command which allows you to export player and ip bans into vanilla compatible files. These will be created within the plugins/BanManager directory. All data is within your MySQL database, so simply export/backup as needed.

Can I limit the amount of time certain players or groups can temp ban or temp mute someone?

  • Yes, look in the config at the node timeLimits. By default you'll see moderator. Any group and or person with the permission bm.timelimit.bans.Moderator can only tempban someone for a day, and bm.timelimit.mutes.Moderator for 1 hour. You can create as many groups as you like and customise the time limits however you like, they use the same format as the timeFormat option in /tempban and /tempmute. Players still need the permissions bm.tempban to temp ban and bm.tempmute to temp mute.

On start-up I get an error 'Unsupported major.minor version 51.0'

  • Update to Java 7. If you still are on Java 6 you should really update, the performance gains are noticeable.

On start-up I get an error 'Error occurred while enabling BanManager vX (Is it up to date?) java.lang.NullPointerException at me.confuserr.banmanager.BanManager.onEnable('

  • This is an issue with CommandBook. A possible fix reported by @xpopy is 'Changing "low-priority-command-registration:" to "true"'.

I have another plugin I'd like to use, but BanManager is overriding the command

  • In your Minecraft server root, use commands.yml see this issue for more information.


To determine popularity and usage of BanManager, plugin installs are automatically tracked by the Metrics plugin tracking system. Your Java version, OS, player count, server country location and plugin & server versions are collected. This is used to determine what environments are using the plugin to ensure full compatibility. This collection is anonymous. If you don't want this tracking, edit plugins/PluginMetrics/config.yml and set opt-out to true.

About This Project



Recent Files