Ich versuche, das Plugin-System von Minecraft in Java, aber in C++, neu zu erstellen. Ich weiß, dass ich einfach das vollständig verfügbare PluginManagerExample mit den Plugins verknüpfen und sie mit einem Header und einer .lib-Datei versehen könnte.
Später in der Produktion möchte ich jedoch sauber getrennte Projekte haben. Wenn ich diesen Weg gehen würde, müsste ich jedes Mal, wenn ich eine neue Version veröffentliche, die Header-Dateien und die .lib-Dateien für Debug und Release in das Plugin-API-Repository kopieren und einfügen. Ich bin mir nicht sicher, ob dies der beabsichtigte oder empfohlene Ansatz ist.
Randbemerkung: Ich habe meinen eigenen Mod erstellt und war damit fertig, aber jetzt haben mich viele Leute gebeten, eine API bereitzustellen. Ich möchte etwas Ähnliches wie Spigot neu erstellen, nur in C++.
Ich habe also ein paar Fragen:
- Wie kann ich Plugins am besten Zugriff auf meine API gewähren?
Ich habe zwei mögliche Ansätze gefunden, aber der zweite gefällt mir nicht, und beim ersten stecke ich derzeit fest:
Stellen Sie Header und a bereit .lib-Datei. - Nachdem Sie das Plugin erstellt haben, stellen Sie ihm einen PluginContext bereit, der Adressen für alle API-Funktionen im C-Stil speichert.
[*]Ist Ist der vorhandene PluginManager-Code zumindest anständig?
Mir ist bewusst, dass die Singleton-Klasse unnötig ist – sie ist nur ein Überbleibsel aus früheren Experimenten. Ich bin auch mit den Status-Rückgabewerten nicht zufrieden, insbesondere in den Funktionen unload_all und reload_all.
Mobile version