Skip to content

Latest commit

 

History

History
60 lines (42 loc) · 1.56 KB

File metadata and controls

60 lines (42 loc) · 1.56 KB

PandaCore

PandaCore is a modular Paper plugin suite built around a shared service API.

Modules

  • panda-core: shared platform, storage profiles, locations, utility commands
  • panda-moderation: punishment and history module
  • panda-geyser: Geyser and Floodgate integration module

Design Goals

  • 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.

Available Services

  • PandaCoreApi
  • LocationApi
  • ModerationApi
  • GeyserBridgeApi

Example: Resolving PandaCore

RegisteredServiceProvider<PandaCoreApi> registration =
        Bukkit.getServicesManager().getRegistration(PandaCoreApi.class);

if (registration != null) {
    PandaCoreApi api = registration.getProvider();
    api.getStorageManager().registerModule("MyPlugin");
}

Example: Resolving Locations

RegisteredServiceProvider<LocationApi> registration =
        Bukkit.getServicesManager().getRegistration(LocationApi.class);

if (registration != null) {
    LocationApi locations = registration.getProvider();
    locations.getWarp("spawn").ifPresent(player::teleport);
}

Storage Model

Configured storage types currently include:

  • JSON
  • MARIADB
  • POSTGRESQL
  • MYSQL
  • MONGODB

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.