PandaCore is a modular Paper plugin suite built around a shared service API.
panda-core: shared platform, storage profiles, locations, utility commandspanda-moderation: punishment and history modulepanda-geyser: Geyser and Floodgate integration module
- Each module can be shipped as its own plugin jar.
- Each module receives its own storage profile and database name.
- Cross-module communication is done through Bukkit services instead of direct plugin casts.
- External plugins can reuse the same public services.
PandaCoreApiLocationApiModerationApiGeyserBridgeApi
RegisteredServiceProvider<PandaCoreApi> registration =
Bukkit.getServicesManager().getRegistration(PandaCoreApi.class);
if (registration != null) {
PandaCoreApi api = registration.getProvider();
api.getStorageManager().registerModule("MyPlugin");
}RegisteredServiceProvider<LocationApi> registration =
Bukkit.getServicesManager().getRegistration(LocationApi.class);
if (registration != null) {
LocationApi locations = registration.getProvider();
locations.getWarp("spawn").ifPresent(player::teleport);
}Configured storage types currently include:
JSONMARIADBPOSTGRESQLMYSQLMONGODB
Every module gets its own logical database name based on the configured base name and module id. This prevents modules from sharing the same storage namespace by default.