API Selbst downloaden oder selber Entpacken

  • Moin zusammen,

    ich habe mal ne frage bin grade an ein Plugin dran was wiederum eine API braucht.

    Gibt es eine Möglichkeit diese mit im Plugin zu stecken (Also ein Plugin in einen Plugin) das diese dann automatisch entpackt wird ?

    Oder gibt es eine Möglichkeit diese direkt zu downloaden(MediaFire usw.)


    MFG

  • Gibt es eine Möglichkeit diese mit im Plugin zu stecken (Also ein Plugin in einen Plugin) das diese dann automatisch entpackt wird ?

    Oder gibt es eine Möglichkeit diese direkt zu downloaden(MediaFire usw.)

    Bitte was?

    Du entwickelst eine API in einer beliebigen Sprache.

    Diese machst du entweder global zugänglich oder machst es intern beispielsweise über Docker.

    Wichtig: Bei APIs die öffentlich zugänglich sind musst du CORS policies beachten das du nur von einer bestimmten IP oder Domain darauf zugreifen kannst damit fremde keinen scheiß machen können.

    Sinnvoll wäre dann auch eine Authentifizierung.


    Die API läuft immer als eine eigene Instanz.


    Danach entwickelst du deine Plugins die mit der API kommunizieren.

    Am ende kommt auf dein Minecraft Server nur noch dein entwickeltes Plugin, da die API auf deinem Minecraft Server gar nichts zu suchen hat.

  • Wie schon von AgentSlim kurz angesprochen wäre da ein Build System wie maven oder gradle wohl der einfachste weg, da man dort dann angeben kann ob die dependencies mit in die jar gepackt werden sollen.


    Allerdings ist es nicht gerade gut wenn du da dann mit deinem Plugin etwas herunterlädst. Eigentlich legt man nur in der Plugin.yml fest welche plugins/APIs dein Plugin braucht und lässt dann den Server Betreiber diese herunterladen. Hier ist es einfach eine Sicherheitsrisiko das ein Plugin irgend etwas herunterlädt und am besten dann noch ohne zu fragen.


    Ansonsten wäre da noch zu sagen das dein Plugin ein einfaches java Programm ist das mit der bukkit/spigot api arbeitet. Das heißt du kannst alles machen was Java kann und da sollte es auch etwas geben. Das einfachste wäre ja einfach die zwei jars(dein Plugin und die nötige API) zu nehmen und in eine zip zu packen. Aber wie gesagt wäre die Sachen mit maven oder grade, sowie dem selbst herunterladen des Server Betreibers sinnvoller.

  • Wie kommst du darauf dass es sich explizit um eine REST API handelt?

  • Wie kommst du darauf dass es sich explizit um eine REST API handelt?

    War eine spontane Vermutung ohne weiter darüber nachzudenken. Liegt aber auch daran das ich seit mehreren Jahren weder was mit Minecraft noch was mit Java gemacht habe. Jedoch hilft dein Post ihm genau so wenig weiter wie meiner.


    Back to topic:

    Es ist doch auch möglich die API direkt als Bibliothek einzubinden ohne maven oder grandle. Diese wird dann auch mit ins Plugin exportiert. (Zumindest hab ich das noch so in Erinnerung). Ansonsten musst du dir maven oder grandle aneignen, was aber nicht schwer ist.

  • Je nachdem wie die API geschrieben ist geht das nicht, da sie durch die Spigot gestartet werden muss das kommt daher ganz auf die API an aber.

    Es ist doch auch möglich die API direkt als Bibliothek einzubinden ohne maven oder grandle. Diese wird dann auch mit ins Plugin exportiert. (Zumindest hab ich das noch so in Erinnerung). Ansonsten musst du dir maven oder grandle aneignen, was aber nicht schwer ist.

    Sofern es sich um eine richtige API handelt, würde das auch gehen.

  • 1 bedanke ich mich für die ganzem Antworten. Ja die api muss leider mit spigot gestartet werden.

    Bei der api handelt es sich um ein grundsystem wie coins, stats usw. Alles was man so braucht. Damit man nicht alles neu schreiben muss. Es geht ja nicht darum das plugin öffentlich zu machen. Sondern privat zu nutzen. Deswegen wäre es ja nicht schlimm. Habe mir gestern maven angeschaut. Muss mir die Tage mal die Docs davon durchlesen. Dann wäre es einfacher das die api einfach entpackt wird.

  • Das wird aber nicht funktionieren! Dein Plugin wird von Spigot gestartet, aber braucht das zu entpackende Plugin als Vorbedingung, die aber zu dem Zeitpunkt ja gar nicht erfüllt sein kann, weil es ja erst noch entpackt werden muss.

    Einfach das Plugin vorher mit in den Plugins-Ordner tun und gut ist - gerade wenn es privat genutzt wird, ist das ja völlig unproblematisch...


    Sollte deine API ohne Listener, Commands und ähnliches auskommen, kannst du sie auch als "Nicht-Plugin-Bibliothek" schreiben und mit in dein Plugin shaden (-> Maven), dann kannst du das aber immer nur genau ein mal pro Server verwenden, sonst verwirrst du den ClassLoader.

    MfG


    00110101 00110001 00110101 00111000 00110100 00110110 00110011 00110001 00110101 00111001 00110101 00110111 00110100 00110110 00110011 00110000 00110110 00110001 00110101 00110111 00110100 01000100 00110011 01000100 8o