Shading - Dani-error/velar GitHub Wiki

Shading Guide

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.

⚠️ **GitHub.com Fallback** ⚠️