MeowMC

Plugin descriptors

MeowMC reads the same two descriptor formats Paper does, probed in the same order — paper-plugin.yml first, then plugin.yml.

api-version

The version gate rejects a declaration newer than what this build supports. A plugin that declares an older version, or no api-version at all, still loads and is logged as a legacy plugin — the gate is a ceiling, not a floor. The API version follows Minecraft's numbering: 26.3. A string matcher written for the old 1.21.x scheme will mis-parse it. Say 26.3 or say nothing; do not guess.

The one MeowMC difference

On Paper, a modern-format plugin — one shipping paper-plugin.yml — gets zero Commodore rewriting: the registered bytecode modifier is an upstream stub, which means a plugin compiled against an older API can NoSuchMethodError on renamed enum and Material surfaces at runtime, with no rewrite to save it.

On MeowMC the same pipeline runs the rewriting the legacy pipeline always got (MeowClassloaderBytecodeModifier), fails open exactly like upstream, and is skipped when the plugin declares no api-version. The knob is meowmc.compat.modern-pipeline-rewrite, default on.

The practical instruction: declare your api-version in either format and you get the rewriting. Rewriting is best-effort by upstream's own design, and so it is here — no compatibility warranty is implied.