- LibertyBans -

Obedience is liberating. LibertyBans is the be-all, end-all of discipline.

Enforce discipline through punishment – bans, mutes, warns, and kicks.


  • 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, 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.

Why LibertyBans
LibertyBans has been around for nearly a year at the time of this writing. The codebase is robust and well-tested; it uses the latest technologies and strives for good code quality. In my humble opinion LibertyBans excels in its design compared to rival plugins.

Don’t take my word for it; see for yourself. LibertyBans is reputed for “legendary development” with an author who is “full of knowledge.” The features shine with effectiveness and careful craft.
We prioritize bug-fixes and security while shunning feature bloat. Maintainability and accuracy are paramount, the prime directives of a well-designed plugin.

Powerful Punishment Enforcement and Alt Detection
LibertyBans can automatically block alt accounts. Overall, alt account enforcement is a strong suit, and there are many ways to accomplish your objective. IP-bans can be made quite powerful depending on your liking.

Additional Information and Documentation
So that I do not have to maintain separate sets of documentation, information and documentation is available on the wiki on Github:


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

1 Like

Getting this error when booting up:
[13:19:40 ERROR]: Couldn’t pass ProxyInitializeEvent to libertybans
java.util.concurrent.CompletionException: space.arim.libertybans.bootstrap.depend.BootstrapException: Failed to download dependency: Dependency [groupId=space.arim.libertybans, artifactId=bans-download, version=0.8.1] . Reason: Exception
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315) ~[?:?]
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320) ~[?:?]
at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:649) ~[?:?]
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[?:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773) ~[?:?]
at com.velocitypowered.proxy.scheduler.VelocityScheduler$VelocityTask.lambda$run$1(VelocityScheduler.java:203) ~[velocity-3.1.2-SNAPSHOT-107.jar:3.1.2-SNAPSHOT (git-ea3341d7-b107)]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: space.arim.libertybans.bootstrap.depend.BootstrapException: Failed to download dependency: Dependency [groupId=space.arim.libertybans, artifactId=bans-download, version=0.8.1] . Reason: Exception
at space.arim.libertybans.bootstrap.depend.BootstrapLauncher.lambda$loadJarPaths$2(BootstrapLauncher.java:84) ~[?:?]
at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646) ~[?:?]
… 6 more
Caused by: java.io.IOException: Server returned HTTP response code: 502 for URL: https://mvn-repo.arim.space/affero-gpl3/space/arim/libertybans/bans-download/0.8.1/bans-download-0.8.1.jar
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1997) ~[?:?]
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589) ~[?:?]
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:224) ~[?:?]
at java.net.URL.openStream(URL.java:1161) ~[?:?]
at space.arim.libertybans.bootstrap.depend.DependencyDownload.download(DependencyDownload.java:62) ~[?:?]
at space.arim.libertybans.bootstrap.depend.DefaultDependencyLoader.lambda$downloadDependency$0(DefaultDependencyLoader.java:64) ~[?:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
… 4 more

Edit #1: The latest dev version works, I’ll be using that for now :slight_smile:

Using development builds is the right solution to that problem.

However, I should warn you that the latest development builds (of 1.0.0) may have breaking changes from previous development builds. I urge you to be careful if your version ends with 1.0.0-SNAPSHOT - development builds of 1.0.0 are not ready for mainstream use.

For more information on development builds, and announcements regarding their stability, we have a discord server. (For example, we announced there that 1.0.0 was upcoming and that development builds would become unstable - for development builds of previous versions, often they have been quite stable, sufficiently so for comfortable everyday usage)