Keeps plugins up to date from Modrinth and Hangar, controls them in game, and fetches new ones on request.
1.0.0
First release.
Updates - Modrinth matching over the SHA-1 of the installed file, all plugins in one bulk request; Hangar matching over the plugin.yml website entry, otherwise an unambiguous name search with the project owner checked against the plugin authors. Downloads are capped during the transfer, verified by checksum and by the plugin name inside the jar, then parked for the next server start rather than swapped into a running server.
Control - /pm list, info, enable, disable, load, unload, reload. Enable and disable use public Bukkit API only. Unload and reload additionally clean up listeners, tasks, services, commands, the dependency graph and the plugin classloader, and work on both plugin systems: SimplePluginManager on Bukkit, Spigot and Paper up to 1.20.4, and Paper's own manager on 1.20.5 and newer. Where neither is found it refuses before touching the plugin instead of half unloading it.
Installing something new, off by default - /pm search finds plugins on Modrinth that fit this server, /pm download fetches one into plugins/ and stops there. Separate permission, separate switch in config.yml.
One jar for Bukkit, Spigot, Paper, Purpur, Folia, BungeeCord and Waterfall. Only bundled library is bStats, relocated.
Tested against Paper 1.21.11 and Paper 1.20.6 with the whole command set driven through the console, no exceptions. BungeeCord has not been through a live proxy yet.