(Web) API in Java programmieren (LabyMod Addon)?

  • Guten Tag,


    ich weiß zwar nicht, ob es in die Kategorie passt aber ich erkläre mal mein Problem. ^^


    Ich versuche zur Zeit ein LabyMod Addon zu programmieren (ist ja fast wie ein Client zu programmieren) und habe eine Anleitung für eine API befolgt (https://www.php-einfach.de/202…che-rest-api-mittels-php/) und weiß jetzt aber nicht, wie man es in Java einbringen kann.


    So sieht das Ding jetzt aus: https://minescope.net/api/test.php


    Die Frage ist, wie kann man es denn genau in das Addon einbringen?

    Ich hätte gerne eine eigene Klasse damit ich z.B. API.getRank(player.getUniqueID()) machen kann oder so


    Aber ich kann mir irgendwie nicht vorstellen, dass es nicht verwirrt wird, wenn es alles auf einer Seite ist, wenn ihr versteht, was ich meine?


    Ich wüsste jetzt sonst nicht, wie ich so eine API machen könnte, wo ich auf die MySQL zugreifen kann, ohne die Daten im Addon einzugeben, das wäre ja dumm.. xD

    Ich habe das wirklich noch nie gemacht und bin absolut kein Profi im programmieren.. Aber genau das brauche ich jetzt irgendwie.. :/


    Ich hoffe ihr könnt mir da weiterhelfen! :)

    Mit freundlichen Grüßen

  • Hey,


    also vorab muss ich dir höchstwahrscheinlich den Spaß verderben und dir mitteilen, dass du aus dem Addon keine Requests an einen nicht-LabyMod Server senden darfst (Addons MUST NOT communicate with external servers which are unknown to us.)


    Wenn du ein Addon für deinen Server Programmieren willst und an den Rang des Spielers gelangen möchtest, wenn der Spieler auf deinem Server spielt, dann kannst du das über das Plugin Channels machen. Damit schickst du entweder ganz rudimentär einfach die Spieler-Infos vom Server an den Client oder du baust dir damit ein eigenes Protokoll auf welches du in einen Plugin Channel einkapselst.


    Und um deine eigentliche Frage zu beantworten:


    Du kannst in Java einfach Verbindungen zu deiner Schnittstelle aufbauen. Entweder "vanilla" über die URL-Klasse. Da müsstest du die Response dann selber aus dem InputStream lesen oder du nimmst dir eine Library (in Forge/Minecraft wirds sicherlich bereits was geben).


    Was das Design der Schnittstelle angeht, könntest du noch eine query möglichkeit einfügen (z.B. https://minescope.net/api/test…98-4ad4-a3bc-d95bf90f46e8). Daraus würde dann eine Query generiert die so aussieht: SELECT * FROM users WHERE uuid='5998c899-1198-4ad4-a3bc-d95bf90f46e8'


    Damit würde dein Endpoint dann nur die Informationen des Users returnen, der angefragt wurde. Beachte aber bitte hier, dass du keinesfalls den String von $_GET['uuid'] in deine Query packen solltest (stichwort SQL-Injection). Nutze hierfür einen Query Builder oder Prepared Statements.


    Und Clientseitige Datenbank-Verbindungen solltest du schleunigst wieder vergessen. Für Immer.