Startup Issues

Q: BanManager is showing as red in /plugins

Please ensure you have configured the plugin correctly and check either your server log or console for more information

Q: When trying to /ban a player it displays /ban <player> <reason>

The plugin is not enabled, please check your server startup log for more information

Q: BanManager is unable to connect to the database

This can be caused by a number of issues, below lists the most common. If these do not resolve your issue, feel free to request Support.

Ensure you have created the database. Verify this by logging in with the user you are connecting with (via mysql -p -u) and running SHOW DATABASES;. If the database is not contained in the results, it either has not been created or the user does not have permission to access it.
If you are connecting to the database from another server, you need to explicitly grant access to it for the remote ip address as follows: GRANT ALL PRIVILEGES ON dbname.* TO [email protected]'IP' IDENTIFIED BY 'password'; replacing dbname, username and password with your respective details. Then run FLUSH PRIVILEGES; to ensure they are updated.
If after verifing the aforementioned checks the plugin is still unable to connect, check the MySQL/MariaDB error logs.

Q: I'd like to use BanManager with Tekkit Classic, which version is compatible?

v2.x versions of BanManager have been reported as compatible. At a mimimum you will require v2.2, please ensure useSyncChat is enabled in the config. Please note the following: documentation and guides are for recent BanManager versions only, there may be bugs, cross-server sync is not supported and older versions of BanManager are name based, not UUID meaning a change of name will evade bans for online-mode servers.

Q: How can I add new lines to the player denied screen when a banned player tries to join?

Use \n within the message in the messages.yml wherever you'd like a new line to start. For example:

disallowed: '&6Banned on Frostcast\n[reason]'

[WARN]: [BanManager] Duplicates found for player_name

This is caused when players have the same name. When a command is executed, BanManager is unable to ascertain which player should be affected.

Resolving this issue depends on your online mode setting. In Online Mode, the plugin will attempt to resolve this when the affected players join; this requires a request to Mojang which sometimes fails due to rate limitations. In order to resolve this, please follow the steps below:

Online Mode
Run /bmutils duplicates as a player; will output up to 10 duplicate names.
Each name will contain the amount of duplicates found along side a number, e.g. [confuser] * 2 [1] [2]
Clicking [x] will populate your chat with a command to set the name manually, e.g. /bmutils duplicates ae51c849-3f2a-4a37-986d-55ed5b02307f confuser
Where possible, BanManager will attempt to retrieve the correct name from Mojang. Should this fail, the name argument will default to newName. Should this occur, it is recommended you perform the correct name for each UUID yourself using a service such as mcuuid.net.
Execute the command to update the name. Repeat these steps for each UUID until no more duplicates exist.
Offline Mode

Follow the first 3 steps from Online Mode. Set the name manually yourself. Note, names are case insensitive within BanManager, however Minecraft interprets players of the same name with different cases, e.g. confuser & cOnFuSer as separate players. You should use an additional plugin to handle this correctly such as AuthMe.

java.sql.SQLSyntaxErrorException: Table 'bm_players' doesn't exist

This occurs when the wrong JDBC driver is in use. If you are using MariaDB, ensure storageType is set to mariadb.

me.confuser.banmanager.internal.mysql.cj.exceptions.CJException: Access denied for user 'root'@'localhost'

It is not recommended you use root to connect to the database. Please use or create a non-root user to connect with.

[bm-local housekeeper] WARN me.confuser.banmanager.internal.hikari.pool.ProxyLeakTask - Connection leak detection triggered

This is usually caused by a slow database connection. If this is expected, disable this check by setting leakDetection to 0. Otherwise, check the resources your database server has and tweak accordingly.

Cross-Server Sync

Q: I punished a player but it doesn't appear to have synced across all servers

Each server polls for data changes including new punishments. Open your schedules.yml file and check your timings. By default local punishments are checked every 30 seconds and global punishments every 2 minutes. Checking more frequently will increase database usage. If this is insufficient, enable checkOnJoin in your config.yml; this will check the database for new punishments when a player joins each server.