Shading - Dani-error/velar GitHub Wiki
To avoid conflicts when multiple plugins ship the same dependencies, you must shade (and relocate) the following packages into your plugin:
io.papermc.lib
io.leangen.geantyref
io.github.retrooper
com.github.retrooper
dev.dani.velar
This ensures your plugin won't clash with others that use the same libraries.
Gradle (Kotlin DSL)
plugins {
// ... other plugins
id("com.github.johnrengelman.shadow") version "8.1.1"
}
tasks.shadowJar {
// ... other config
relocate("io.papermc.lib", "your.plugin.shaded.io.papermc.lib")
relocate("io.leangen.geantyref", "your.plugin.shaded.io.leangen.geantyref")
relocate("io.github.retrooper", "your.plugin.shaded.io.github.retrooper")
relocate("com.github.retrooper", "your.plugin.shaded.com.github.retrooper")
relocate("dev.dani.velar", "your.plugin.shaded.dev.dani.velar")
}
Gradle (Groovy DSL)
plugins {
// ... other plugins
id 'com.github.johnrengelman.shadow' version '8.1.1'
}
shadowJar {
// ... other config
relocate 'io.papermc.lib', 'your.plugin.shaded.io.papermc.lib'
relocate 'io.leangen.geantyref', 'your.plugin.shaded.io.leangen.geantyref'
relocate 'io.github.retrooper', 'your.plugin.shaded.io.github.retrooper'
relocate 'com.github.retrooper', 'your.plugin.shaded.com.github.retrooper'
relocate 'dev.dani.velar', 'your.plugin.shaded.dev.dani.velar'
}
Maven
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<relocations>
<relocation>
<pattern>io.papermc.lib</pattern>
<shadedPattern>your.plugin.shaded.io.papermc.lib</shadedPattern>
</relocation>
<relocation>
<pattern>io.leangen.geantyref</pattern>
<shadedPattern>your.plugin.shaded.io.leangen.geantyref</shadedPattern>
</relocation>
<relocation>
<pattern>io.github.retrooper</pattern>
<shadedPattern>your.plugin.shaded.io.github.retrooper</shadedPattern>
</relocation>
<relocation>
<pattern>com.github.retrooper</pattern>
<shadedPattern>your.plugin.shaded.com.github.retrooper</shadedPattern>
</relocation>
<relocation>
<pattern>dev.dani.velar</pattern>
<shadedPattern>your.plugin.shaded.dev.dani.velar</shadedPattern>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
📝 Tip: Replace your.plugin.shaded
with a unique base package related to your plugin name to avoid overlapping with other shaded libraries.