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.