Entwickler-API
Die API ist unter integrations.developer-api standardmäßig aktiviert. Sie wird beim ServicesManager von Bukkit registriert, hat keine harte Abhängigkeitsanforderung und wird sauber entfernt, wenn ReferralTrack deaktiviert wird. Ein Reload der Konfiguration registriert oder entfernt sie sofort.
RegisteredServiceProvider<ReferralTrackApi> registration =
Bukkit.getServicesManager().getRegistration(ReferralTrackApi.class);
ReferralTrackApi api = registration == null ? null : registration.getProvider();Trage ReferralTrack im nutzenden Plugin als softdepend oder depend ein. Shade oder verschiebe die ReferralTrack-API-Klassen nicht. Prüfe vor Abfragen api.isReady(). findReferral, countValidatedInvites und topReferrers sind schreibgeschützt und liefern CompletableFuture; ihre Callbacks laufen nicht im Haupt-/Entity-Thread von Bukkit. Die DTO-Records sind unveränderlich und legen weder interne Datenbankzeilen-IDs noch veränderliche Konfigurationsobjekte offen.
Events #
ReferralPreClaimEvent ist synchron und abbrechbar. Es wird nach den eigenen Schutzprüfungen von ReferralTrack für Befehl, Berechtigung, Abklingzeit, Ignorieren und Anspruchsfenster ausgelöst, aber vor jeder asynchronen Abfrage oder jedem Schreibzugriff auf die Datenbank. Das Abbrechen verhindert den Anspruch und zeigt eine lokalisierte allgemeine Meldung, dass eine Integration ihn blockiert hat. Die übergebenen Strings sind schreibgeschützt, damit Listener die ReferralTrack-Validierung nicht umgehen können.
ReferralClaimResultEvent ist asynchron und nicht abbrechbar. Es meldet jedes abgeschlossene Manager- Ergebnis, einschließlich Ablehnungs-/Fehlerausgängen, Quellen-/Kampagnenidentität, Einlader-UUID und Ausstehend-Status. Sein Listener darf nicht direkt auf Spieler-/Welt-/Inventar-APIs von Bukkit zugreifen; plane solche Arbeit über den Paper-/Folia-kompatiblen Scheduler des nutzenden Plugins. Vergib aufgrund dieser Benachrichtigung kein Geld: Das dauerhafte Belohnungsbuch von ReferralTrack bleibt die maßgebliche Quelle.
Beide Events haben unabhängige Konfigurationsschalter. Das Deaktivieren der Entwickler-API deaktiviert beide.