Skip to content

Project setup

FeatherMC is a fork of Paper. It does not publish its own API artifact. Its changes are inside the server: defaults, guards and internal work. The plugin-facing API is Paper’s, unchanged.

  • Compile against io.papermc.paper:paper-api for 26.3.
  • Target Java 25.
  • Test on Paper or FeatherMC. Behaviour your plugin can observe through the API is the same.

Add Paper’s Maven repository and the paper-api dependency, exactly as you would for Paper.

build.gradle.kts
repositories {
maven {
url = uri("https://repo.papermc.io/repository/maven-public/")
}
}
dependencies {
compileOnly("io.papermc.paper:paper-api:26.3.build.+")
}
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(25))
}

Use plugin.yml or paper-plugin.yml with the same fields and api-version you would use for Paper 26.3. FeatherMC loads both formats through Paper’s own plugin loader, so nothing in your descriptor needs to mention FeatherMC.

If your plugin declares that it depends on Paper, that check passes on FeatherMC, because the server keeps Paper’s brand ID.