This plugin triggers specific actions when certain essential plugins don't load correctly on your server. You can define the list of plugins and actions through configurations or commands.
Inspired by this comment and this one, I created the plugin after facing the same issue.
The project builds independent Java 25 distributions from a platform-neutral core:
common: rule evaluation, actions, YAML/JDBC storage and proxy command service (no Bukkit dependency).bukkit: existing Bukkit commands, menus, listeners and platform adapter shared by Paper and Spigot.paper: Paper/Purpur distribution withplugin.yml.spigot: Spigot-compatible distribution withplugin.yml.velocity: native Velocity plugin, login denial and command registration.bungecoord: native BungeeCord plugin (historical Gradle path), login protection and command registration.
Each distribution has its own JAR in <platform>/build/libs. Install only one
distribution per server or proxy. Paper/Spigot and proxy instances each maintain
their own plugins/PluginControl/config.yml, lang.yml and rule data.
Proxy commands: /plugincontrol (aliases /pc, /plcontrol), with
help, check, enable, disable, toggle, add, remove,
list, group, action, kick-message, check-depend and reload.
Use plugincontrol.use to manage, plugincontrol.notify to receive alerts,
and plugincontrol.bypass to bypass login denial. Standalone plugins are
required individually; each non-empty group passes if at least one member loads.
Available actions: log-to-console, disallow-player-login and
shutdown-server. Proxy data storage supports YAML, H2, SQLite and MySQL
with the existing config.yml options and shared JDBC table layout. A missing
dependency is checked after the proxy finishes initializing its plugins; use
/pc check to reevaluate after changes. BungeeCord checks new players in its
post-login event (the earliest reliable point for bypass permissions).
Build and run the common tests with ./gradlew clean build.