LibertyBans

LibertyBans

Obedience is liberating

ManagementUtility

40 downloads
9 followers
Created 3 months ago
Updated 3 months ago

External resources



Project members

KoxSosen

Member

A248

Owner


Technical information

License
Project ID

LibertyBans is the sparkling, extraordinary and brilliant weapon of punishment administration.

Banner Homepage

Discord Documentation

Source

Why?

The existing punishment plugins all have their flaws. Either they are plagued with bugs and concurrency issues, or they are closed-source and pay-walled, or both.

None of the existing punishment plugins have a test framework which can compare to LibertyBans' extensive automated testing. This means that many bugs are caught automatically and never make it into stable releases.

LibertyBans features a full-suite of punishment-related tools. It is a general-purpose punishment plugin with a focus on effective design, quality of experience, and unbeatable code quality.

LibertyBans is the best designed plugin to punish players. It can efficiently scale to large networks and operate on single servers with minimal resources.

Features

  • Add and remove punishments:
    • /ban, /ipban, /unban, /unbanip - bans or unbans a player or IP address
    • /mute, /ipmute, /unmute, /unmuteip - mutes or unmutes a player or IP address
    • /warn, /ipwarn, /unwarn, /unwarnip - warns or unwarns a player or IP address
    • /kick, /ipkick - kicks a player or IP address
  • Temporary versions of bans, mutes, and warns
  • All player data is stored using UUIDs.
  • List punishments:
    • /banlist - shows all bans
    • /mutelist - shows all mutes
    • /history - shows all punishments for a player
    • /warns - shows all warns for a player
    • /blame - shows all the punishments a staff member has enacted
  • Multiple means to block alt accounts:
  • Automatic enforcement to block alt accounts. By default, when using IP-bans, alts are automatically banned from joining if the main account is banned. This behavior is configurable, and you can even increase the strictness of alt-checking.
  • Manual /alts command - shows suspected alt accounts for a player.
  • Alts notification on join - tells staff members when a player whose suspected alt is banned or muted.
  • Options and behavior are fully configurable. You can even tweak your connection pool and statement cache settings to fine-tune performance.
  • The plugin is carefully designed to be performant and lightweight. It uses an efficient SQL schema which stores the raw bytes of UUIDs and IP addresses, rather than storing them as strings/text.
  • Full multi-proxy and multi-instance support. You can place LibertyBans on the proxy if you use a single proxy, or on multiple backend servers.

Commands, Permissions, Configuration​

Everything is explained on the wiki: Link​

The wiki has a lot of information, including about the configuration.

  • The configuration files are extensively commented and the options are explained in detail.
  • If you update LibertyBans, your old configuration will be updated automatically if there are new options.

Commands

Run:

  • /libertybans usage to show all commands. When typing this into your console, leave off the slash.

When creating temporary punishments, the same command is used for permanent punishments. Simply add the time after the username:

  • /ban Player1 30d This is a temporary ban

For an extended guide, see this wiki page.

Design

  • Effective and lightweight. No complicated installation and avoids unnecessary features.
  • Option to use local file-based database (HyperSQL), or remote database (MariaDB, MySQL, PostgreSQL).
  • Enhanced database-oriented performance emphasising calculations in SQL. Low memory usage because punishments are stored almost completely in the database. Data is stored in minimal form as raw bytes instead of strings.
  • Best practices for asynchronous calculations are followed. The performance cost of context switching is understood and avoided; the plugin does not blindly fire async tasks.
  • Designed for high availability and concurrency. Minimal locking is employed while keeping state consistent; this is mostly realized through the fact that most plugin state is maintained in the database itself.
  • Well-structured API providing a framework for other plugins to work with.

Requirements

  • Java 11

Supported platforms:

  • Bukkit / Spigot / Paper
  • BungeeCord / Waterfall
  • Velocity

Compatibility with Geyser/Floodgate usernames.

Installation

LibertyBans will work out-of-the-box for most users.

  • When using a single proxy, it is recommended, but not required, to install LibertyBans on the proxy itself.
  • LibertyBans can also be installed on the backend servers if you are willing to configure multi-instance synchronization. For installing on the backend servers and synchronizing punishments, see the wiki for additional information.

External Connections

When the plugin first starts, it downloads its internal dependencies. This is normal, and can take a couple of seconds the first time. Afterward, the plugin should start faster. The method used to download dependencies is just as secure as if the dependencies were shaded – the expected hashes of the dependencies are hard-coded, so if the downloaded dependency's hash differs, it is not saved to the filesystem.

Fun Facts

  • LibertyBans was first released on 4 July 2020.
  • Updates are typicallly released on major holidays or days of significance, sometimes shortly after:
    • 0.8.0 was released 11 September 2021.
    • 0.8.1 was released 28 November 2021, 3 days after Thanksgiving.
    • 1.0.0 was released 3 January 2022, 2 days after New Year's.
    • 1.0.1 was released 16 February 2022, 2 days after Valentine's Day.
    • 1.0.2 was released 4 July 2022, exactly 2 years after the first release.

Development Builds

https://ci.hahota.net/job/LibertyBans/

Reporting Bugs

Please use Github issues: https://github.com/A248/LibertyBans/issues

External resources



Project members

KoxSosen

Member

A248

Owner


Technical information

License
Project ID