USE MYSQL, NOT H2
Native Minecraft Version:1.13
Tested Minecraft Versions:
- 1.7
- 1.8
- 1.9
- 1.10
- 1.11
- 1.12
- 1.13
- 1.14
- 1.15
LiteBans is a lightweight banning plugin supporting UUIDs which allows temporary and permanent bans.
When a player changes their Minecraft name through Mojang, they will still keep their bans, mutes, and warnings.
All punishments made through LiteBans will take effect globally across all servers linked to the same database.
Although LiteBans is designed to effectively synchronize between hundreds of servers, it can still work alone on a single server without a MySQL database.
LiteBans can run natively under Spigot and BungeeCord, offering the same features on both platforms.
(The plugin can be installed in the Spigot plugin folder or the BungeeCord plugin folder.)
Features
- Designed from the ground up with UUID support in mind. All punishments are UUID-based.
- Fully customizable kick screen for banned players, multiple lines and colours can be used, as well as ban information variables – duration until ban expires, reason, staff member who placed the ban, time since ban was placed, original ban duration, server which ban was placed on, etc.
- All messages are customizable in messages.yml. There are many useful variables available to place in any configurable message that involves a ban, mute, or warning. Hover-text is supported.
- Multiple types of databases are supported, including MySQL, MariaDB, and H2. H2 is used by default, meaning that MySQL is not needed to use LiteBans with a single-server setup.
- Advanced light cross-server synchronization system allows global punishments and broadcasts to instantly take effect across all servers connected to the same database.
- Offline players can receive warnings; they will see all of their new warnings when they join. This works across servers.
- When a player with a banned account on the same IP joins, all players with the right permissions will be notified.
- You can view punishment history for players (/history) and punishments issued by staff members (/staffhistory).
- Staff members can be "rolled back" – all punishments which they've issued can be removed at any time with a single command. Staff abuse has never been easier to deal with.
- Players cannot override punishments by setting very short bans or mutes unless they have permission.
- Bans can be imported from vanilla (including Essentials), and six popular free banning plugins, including MaxBans, BanManager, AdvancedBan, and BungeeAdminTools.
- Lightweight, multithreaded, and designed for performance. LiteBans uses a minimal amount of memory and does not block the main server thread with any database queries after startup.
One of the best features of LiteBans for networks is its cross-server synchronization system.
For example:
Server A, Server B and Server C are all running LiteBans, connected to the same MySQL database.
If a player who is on Server A is muted on Server B, it will immediately take effect on Server A, the player will be muted, and all players on Server A, B and C will see the broadcast indicating that the player was muted if they have permission and if broadcast synchronization is enabled. If the player leaves Server A and joins Server B or Server C, they will still be muted.
This applies to both Spigot and BungeeCord versions of the plugin.
A BungeeCord proxy counts as a server, and all servers under the BungeeCord proxy will also be affected by the plugin
(if the plugin is installed in the Bungee plugin folder).
Web Interface
The web interface lists all bans, mutes, warnings, and kicks.
It can be used to view all punishments for specific players or by staff, and check when those punishments will expire.
* Free website is not included, you will require your own website hosting.
Installation guide: https://gitlab.com/ruany/litebans-php/wikis/Installation
JSON Support
LiteBans allows you to define custom hover text in all messages, including broadcasts.
Only players with permission (litebans.json.hover_text) will see the hover text.
All variables available to use in messages.yml can also be included in hover text, along with colors and newlines.
Example:
Code (Text):
broadcast_ban: '&e$bannedPlayer &chas been banned. {hoverText: &aHover text here!}'
Commands
The ban command (/ban) can be used like this:
/ban [-s] <target> [duration] [reason] [server:*]
Also: /tempban, /ipban, /unban
<target> can be a name, UUID, or IP address.
If you IP-ban a player, their UUID and IP address will be banned simultaneously, so they cannot join on the same account using a different IP address.
[server:*] is an optional parameter which can be used when the plugin is installed on BungeeCord or if you have multiple instances of LiteBans.
By default, all punishments are global (*).
Server scopes (per-server punishments) are explained in detail on the wiki here.
Example: /ban Player 7d [reason] server:Survival
The /ban and /mute commands have a permanent duration if not specified. If the player does not have the litebans.unlimited permission, the duration will be limited to the maximum duration (per group) specified in config.yml.
Reasons for /ban, /mute, /warn, and /kick can contain colours and newlines ("\n"). For example:
Code (Text):
/ban Player &cLine 1\n&aLine 2
Wildcard IP-bans are supported, e.g. /ipban 127.0.0.*
The mute command (/mute [-s] <target> [duration] [reason] [server:*]) allows you to mute a player. While a player is muted, they cannot talk in chat or use blacklisted commands.
Related commands: /tempmute (requires duration), /ipmute, /unmute
The warn command (/warn [-s] <target> <reason> [server:*]) allows you to warn a player. Warnings expire after a configurable duration. When a player obtains a configurable amount of warnings, configurable commands can be executed.
Related commands: /unwarn (removes a player's last warning)
The history command (/history <target> [server:*]) shows bans, mutes, kicks, and warnings that a player has received recently, sorted by date.
You can view active warnings for a player by using /warnings <target>.
/staffhistory <target> can be used to show bans, mutes, kicks and warnings placed by a player.
/prunehistory <target> [duration] can be used to clear the punishment history of a player.
Example: /prunehistory Player 5 days
/staffrollback <target> [duration] can be used to rollback all staff actions (bans, mutes, warnings, kicks) with an optional duration.
For /prunehistory and /staffrollback, the duration provided means the time passed since today.
If you use "/staffrollback StaffMember 3 days", all punishments executed by StaffMember within the last 3 days will be removed.
Note: These two commands cannot be undone, unless you have backups.
The dupeip command (/dupeip <target>) allows you to view all accounts who have joined on the same IP as the target, and see whether they're online, offline, or banned.
You can also use /ipreport which executes a dupeip check for all online players.
You can also use /iphistory to check the recent IP addresses that a player has joined the server with. (Requires "delete_previous_history: false" in config.yml)
The checkban command (/checkban <target>) allows you to check if a target is banned. It will also tell you when the ban was placed, when it will expire, whether the ban was an IP ban, and if it was a silent ban.
Related commands: /checkmute
The kick command (/kick [-s] <player> <reason>) allows you to kick an online player. This will be recorded in the player's history.
You can also kick players from other servers running LiteBans connected to the same database.
This applies to both Spigot and BungeeCord versions of the plugin and does not strictly require BungeeCord.
If a player is on Proxy A and you use /kick from Proxy B, they will be kicked from Proxy A.
The geoip command (/geoip <target>), if enabled in the configuration, allows you to check which country a player comes from. This can also be used on offline players.
You can check the UUID of a player (online or not) using /lastuuid <target>.
Chat can be cleared with /clearchat. Players with the "litebans.notify.clearchat" permission will be notified when chat is cleared.
You can view a list of active bans by using /banlist [page].
You can reload the configuration at any time using /litebans reload.
This will reload config.yml and messages.yml, and apply new settings.
Reloading LiteBans will also make it reconnect to the database.
The server can be put into lockdown mode by using /lockdown <reason>. All players without the bypass permission will be kicked when the lockdown starts, and will be unable to join until it ends. It can be ended with /lockdown end.
Under BungeeCord, you can provide a server scope for /lockdown. Currently only one scope at a time can be affected by /lockdown.
Example: /lockdown <reason> server:Survival
Global lockdown for ALL servers on the same network: /lockdown <reason> server:*
Note: /togglechat can not be used with the BungeeCord version of the plugin.
Chat can be toggled for users with the litebans.togglechat permission using /togglechat. This command allows users to "toggle off" incoming messages from other players.
Chat can be globally disabled temporarily with the /mutechat command. Players with the litebans.mutechat.bypass permission will still be able to chat.
LiteBans admin utility commands:
/litebans reload: Reloads the plugin and re-connects to the database.
/litebans info: Provides database connection status information, number of active connections, and shows servers connected to the same database.
/litebans sqlexec <query>: ONLY CONSOLE CAN USE THIS COMMAND BY DEFAULT. Allows you to execute arbitrary database queries, and allows you to view the results of these queries in table format.
/litebans timezone [timezone]: Shows the current cross-server timezone and allows you to change it. Requires "use_database_time: true" in config.yml across all servers. (See wiki: Timezones)
/litebans cleariphistory <name/UUID/IP>: Clears IP history for a specific name, UUID, or IP address.
Players with no IP history will not show up on /history, /staffhistory, or the web interface, because their name cannot be matched to a UUID. When they rejoin the server, their ban history will reappear.
/litebans fixhistory: Adds missing username+UUID entries to the history table. This can be used after cleariphistory, but this only works in online-mode because the usernames are fetched from Mojang.
/litebans addhistory <name> <UUID> <IP>: Allows you to add IP history to the database directly.
/litebans broadcast <message>: This command allows you to broadcast any message using the LiteBans broadcast channel. The message will reach all servers connected to the same database, it can contain chat colours and newlines, and only players with "litebans.notify.broadcast" will see it. The "broadcast-type:<perm>" argument allows you to override the permission required to see the broadcast (litebans.notify.<perm>), and this command requires the "litebans.broadcast" permission.
Note that the message can include hover text. For example: "/litebans broadcast Test message {hoverText: Example Hover Text}"
/litebans import start: Begins the import process after importing has been configured in config.yml.
FAQ
Read the FAQ before posting a review or reporting problems with the plugin!
The new FAQ can be viewed here. (Moved to GitLab)
Permissions
The full permissions list can be viewed here. (Moved to GitLab)
Configuration
All options in the configuration work equally on both Spigot and BungeeCord versions of the plugin unless explicitly otherwise stated.
Plugin configuration (config.yml):
Custom messages (messages.yml):
Database Configuration
The plugin is pre-configured for H2, so you don't need to configure anything if you don't have a MySQL database.
H2 does not require any configuration, and operates using files on disk.
To configure the plugin for MySQL, open config.yml, change 'driver' to "MySQL", and set 'username', 'password', 'address', and 'database' as needed.
Importing
A full guide with information, instructions, and examples can be viewed here:
https://gitlab.com/ruany/LiteBans/wikis/Importing
Images
Requirements
For MySQL support in the plugin, a working MySQL database is required.
If you're running a single plugin instance and don't need the web interface, you do not need a MySQL server and the plugin will already work immediately without configuration after being installed.
Supported Java versions: Java 8 - Java 12.
An active Internet connection is required, but only for the first time the plugin is started without access to needed database drivers.
LiteBans will download these drivers once and it will never download them again afterwards as long as they are stored in the LiteBans data folder.
When the plugin is updated, drivers may be updated as well.
If you want to use Cauldron, you may have to follow the instructions in this post if the plugin fails to load.
Cauldron 1.7.10 is supported.
Cauldron 1.6.4 is not supported and will never be supported.
Install
LiteBans can be installed in several ways. It can run on a single Spigot server, multiple Spigot servers linked to the same MySQL database, or it can be installed directly on BungeeCord.
If you are connecting the plugin to a MySQL database across multiple servers, do not copy server.yml. This file is uniquely generated for each server. If you have copied it, delete it and it will be re-generated.
Should I install the plugin on all of my Spigot servers or only on BungeeCord?
Note that your configured permissions under Spigot will not automatically carry over onto BungeeCord.
LuckPerms has BungeeCord support. If installed correctly, it can bridge permissions between Spigot and BungeeCord.
If you want LiteBans to have a Spigot presence (Spigot permissions, usable with Spigot plugins that use /ban, /mute, /kick, etc), then you can install it on each Spigot server and link all plugin instances together with the same database.
Otherwise, if you're fine with using the Bungee permission system (e.g. BungeePerms or permission configuration in Bungee's config.yml) and don't have any Spigot plugins which need to use LiteBans commands, then you can install it on BungeeCord directly and you don't have to install it on any of the servers connected to the proxy.
For a single-server Spigot setup:
- Download the plugin to the Spigot plugins folder.
- Start the server (or restart it, if it is already running)
- Edit config.yml and messages.yml as needed, then run "/litebans reload".
- Set up permissions using whatever permissions plugin you have installed.
- Install the plugin on all servers that you want to link together using the instructions above for each server.
- Configure the plugin to connect to the same database across all servers.
- Download the plugin to the BungeeCord plugins folder. The plugin does not need to be installed on any of the servers linked to the proxy.
- Start BungeeCord (or restart it, if it is already running)
- Edit config.yml and messages.yml as needed, then run "/litebans reload".
- Set up permissions in BungeeCord's config.yml and restart. You need to add the "litebans.notify.broadcast" permission to the default group if you want players to see broadcasts.
- If you're running an offline-mode server, you need to link your authentication system (e.g. AuthMe) with BungeeCord, otherwise users will be able to run commands without being logged in.
Note: LiteBans does not require nor utilize RedisBungee for synchronizing across multiple servers.
Bans, mutes, broadcasts, notifications, and kicks will be synchronized across multiple BungeeCord proxies running LiteBans as long as they are connected to the same database.
Configuration is simple and intuitive - you only need to connect the servers to the same database, nothing else is required.
- Download the plugin and copy it to each BungeeCord instance's plugins folder.
- Configure config.yml and messages.yml and copy them across all instances. The default configurations will be placed in "plugins/LiteBans/" after the plugin starts for the first time. All instances need to be connected to the same MySQL database in order for them to synchronize properly.
- Set up permissions in each BungeeCord instance's config.yml and restart. You need to add the "litebans.notify.broadcast" permission to the default group if you want players to see broadcasts.
- If you're running an offline-mode server, you need to install AuthMeBungee, otherwise users will be able to run commands without being logged in.
by running the "/litebans info" command. It will tell you if multiple servers are connected to the database.
Remember not to copy the server.yml file across multiple servers.
Spigot version vs BungeeCord version
LiteBans can run directly under Spigot or BungeeCord -- it can be installed in either the Spigot plugin folder, or the BungeeCord plugin folder.
All commands and features of LiteBans are available under BungeeCord (except for /togglechat).
Features of the BungeeCord version:
- Players across all servers on the network are treated as if they are on the same server.
- No need to set up LiteBans across all servers with the same MySQL configuration. One setup on just the BungeeCord proxy is enough for bans to work across every server.
- The BungeeCord version can use a local file database (H2) and still work across multiple servers (with a single-proxy setup), however, there is no official web interface support for this.
- Spigot plugins cannot override what happens at the proxy level, so it's much less likely for other plugins to interfere with LiteBans.
- LiteBans doesn't mind what type of servers you're running behind the proxy - they don't have to be Spigot servers, and there is no "bridge" plugin required. If you can get a Vanilla server running behind Bungee, you can still use LiteBans on it!
Caveats of using the BungeeCord version:
- Permissions have to be set through BungeeCord unless you use a native BungeeCord permissions plugin like LuckPerms.
- There is only one global configuration per plugin instance. (config.yml + messages.yml)
- Spigot plugins cannot directly execute BungeeCord commands, and vice versa. Any plugins that you intend on using with LiteBans must be BungeeCord plugins (Unless you use ExecuteEverywhere).
- If you want to ban a player from the server console, it has to be done from the BungeeCord console.
LiteBans includes an API which can be used to check if players are banned or muted and listen for ban events.
https://gitlab.com/ruany/LiteBansAPI/wikis/home