Farbthema

API für andere Plugins

Eranio Veröffentlicht am: 19. Oktober 2026

Achievements (Hytale): API für andere Plugins

Andere Plugins auf demselben Server lesen die Erfolgsdaten zur Laufzeit per Reflection, ohne Abhängigkeit beim Kompilieren von diesem Plugin. Klasse: de.eranio.achievements.hytale.api.AchievementsApi. Alle Methoden sind statisch, nutzen nur Java-Standardtypen und werfen nie eine Ausnahme. Läuft Achievements nicht, liefert jede Methode ein leeres Ergebnis statt eines Fehlers.

Class<?> api = Class.forName("de.eranio.achievements.hytale.api.AchievementsApi");
List<?> players = (List<?>) api.getMethod("players", int.class, int.class).invoke(null, 20, 0);

Zeiten sind Millisekunden seit 1970 (UTC). gameKey() liefert immer default.

Methoden

Methode Rückgabe
int apiVersion() API-Version, aktuell 1
String pluginVersion() Installierte Plugin-Version, zum Beispiel 1.0.3
String gameKey() Immer default
List<Map<String, Object>> categories() Ein Eintrag je Kategorie: id, icon, name_de, name_en, total
List<Map<String, Object>> achievements() Ein Eintrag je Erfolg: id, category, tier, hidden, goal, scope, name_de, name_en, desc_de, desc_en, unlockedCount
List<Map<String, Object>> players(int limit, int offset) Ein Eintrag je Spieler: uuid, name, unlocked, total (stufengewichtete Punktzahl), lastSeen, playtimeSeconds. Limit liegt zwischen 1 und 500
Map<String, Object> player(String uuidOrName) uuid, name, playtimeSeconds, activeTitle, unlocked (Liste aus id, unlockedAt), progress (Liste aus id, current, goal)
List<Map<String, Object>> recentUnlocks(int limit) Ein Eintrag je letzter Freischaltung: player, achievement, at. Limit liegt zwischen 1 und 200
List<Map<String, Object>> serverFirsts() Ein Eintrag je Server-Premiere: achievement, uuid, name, at
boolean grant(String player, String achievementId) Schaltet einem Online-Spieler einen Erfolg frei, Rückgabe ob es geklappt hat
boolean revoke(String player, String achievementId) Entfernt einem Online-Spieler einen Erfolg, Rückgabe ob es geklappt hat

player() und players() akzeptieren sowohl einen Spielernamen als auch eine UUID. Die API selbst prüft keine Berechtigungen, das bleibt dem aufrufenden Plugin überlassen.