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.