MeowMC

Project setup

JDK 25

The API jar is compiled at class file 69 — Java 25. Compile your plugin with JDK 25. Servers running this fork need 25 anyway, so an older toolchain is not a supported story.

The artifact

No meowmc-api artifact is published to any repository — there is no <repository> URL or Gradle coordinate to write here. There are two real compile targets, and which one you use depends on whether you touch the org.meowmc namespaces:

  1. The meowmc-api jar from a release — the only artifact that can resolve org.meowmc.network.ClientVersion. Each release is one jar: see Installation.
  2. Paper's published paper-api 26.3 — legitimate and sufficient for anything that touches only the compatible namespaces, because that surface is byte-identical to Paper's. A jar compiled against Paper's API loads on MeowMC unchanged.

The minimal plugin

A minimal plugin, compiling against org.bukkit only — true under either target:

# plugin.yml
name: my-plugin
version: 1.0.0
main: com.example.myplugin.MyPlugin
api-version: '26.3'
package com.example.myplugin;

import org.bukkit.plugin.java.JavaPlugin;

public final class MyPlugin extends JavaPlugin {

    @Override
    public void onEnable() {
        getLogger().info("my-plugin enabled");
    }
}

Build tool snippets

Nothing below resolves a meowmc-api coordinate, because none exists: include the api jar from target 1 as a file dependency when you need ClientVersion, otherwise depend on paper-api 26.3.

// build.gradle.kts — compiles against the paper-api coordinate (only)
repositories {
    mavenCentral()
}

dependencies {
    compileOnly("io.papermc.paper:paper-api:26.3-R0.1-SNAPSHOT")
}

<dependency>
  <groupId>io.papermc.paper</groupId>
  <artifactId>paper-api</artifactId>
  <version>26.3-R0.1-SNAPSHOT</version>
  <scope>provided</scope>
</dependency>