Skip to content

JAR Hell ​

Warning

Some plugins improperly shade libraries already shipped with modern servers, breaking ChatControl.

To find the culprit: Load ChatControl WITHOUT any other plugins. If it works, add plugins one-by-one until you find which one causes the crash. Then ask that plugin's developer to fix their shading (see below).

What Is JAR Hell? ​

Your server ships libraries like Adventure (net.kyori.adventure). When a plugin bundles the same library without relocating it to a unique package (e.g., me.author.net.kyori.adventure), Java can't tell which version to use. If the bundled version is outdated, ChatControl crashes.

Example crash from a plugin shipping an outdated, unrelocated Adventure library:

JAR hell crash example

How Proper Shading Looks ​

Bad — unrelocated net.kyori.adventure inside the plugin jar (conflicts with server's copy): HexNicks decompiled code showing improper shading

Good — DiscordSRV relocates Adventure to its own unique package: DiscordSRV decompiled code showing proper shading with relocation

Solution for Plugin Developers ​

Relocate shaded libraries to a unique package: