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: