You are not logged in.

  • Login
Bitte besucht unser neues Forum unter https://forum.nitrado.net | Please visit our new Forum at https://forum.nitrado.net

Dear visitor, welcome to Nitrado.net Prepaid Gameserver Community-Support - Archiv. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

deinplugin

User / Kunde

  • "deinplugin" started this thread

Posts: 12

Location: dein-plugin.de

Occupation: Developer

  • Send private message

1

Friday, October 23rd 2015, 9:44pm

[ALPHA] Installable - Nie wieder config.yml

Hallo liebe Nitrado.net - Community,

ich möchte heute meine Library "Installable" vorstellen. Installable ist eine Open-Source Library, die es Entwicklern ermöglicht einfacher Plugins zu schreiben und den Nutzer die Einrichtung des Plugins erleichtert. Im Moment ist die Library nur für Spigot/Bukkit verfügbar. Eine Version für BungeeCord ist allerdings in Arbeit und im "Package" bungee zu finden. Konkret geht es darum, die config.yml durch eine einfach zu bedienende Benutzeroberfläche im Spiel zu ersetzten. Natürlich ist es immer noch möglich das Plugin einfach per config.yml zu konfigurieren, allerdings ist die Benutzung der Benutzeroberfläche empfehlenswert, da die Änderungen live in das Plugin übernommen werden. Für Entwickler ist es einfach Ihre Plugins zum erstellen, da man nur noch Variablen, die installierbar/konfigurierbar seien sollen einfach nur mit einem @Install gekennzeichnet werden müssen. Eine provisorische Anleitung zur Nutzung der Library findet man in der GitHub-Repository. Ein weiterer Vorteil ist, dass alle Plugins, die die Library nutzen, zentral per /install konfiguriert werden können.

Wie funktioniert die Library?
Es können nur Variablen gespeichert werden, für die es einen InstallHandler gibt. Für jede Klasse kann es nur einen InstallHandler geben. Ein InstallHandler beinhaltet Methoden zur Umwandlung der Variable in einen String, die Umwandlung eines String in die Variable, sowie eine Methode, die bestimmt, wie der Nutzer die Variable in der Benutzeroberfläche konfigurieren kann. Jede Klasse, die @Install nutzt, muss im InstallManager registriert werden, damit das Plugin weiß, wo welche Variable gespeichert werden soll. Die von Anfang an verfügbaren InstallHandler findet man hier: https://github.com/JonasFranzDEV/Install…stallable/types

Warum Alpha?
Die Library ist noch am Anfang, und kann noch nicht das entfalten, was Sie alles kann. Es können natürlich Bugs auftreten, da die Library noch in der Alpha-Phase ist. Ich empfehle, immer die neuste Version in den Plugins zu nutzen.


Während der Alpha-Phase findet man die Builds in GitHub unter Releases, zudem ist das neuste Build immer via Maven verfügbar. Die Maven-Repository ist: http://maven.dein-plugin.de/nexus/conten…tories/releases (mehr dazu auf der GitHub-Seite). Zum Release hin, wird auch eine Spigot- oder Bukkit-Plugin-Seite dazu kommen.


Ich suche Entwickler, die bei der Weiterentwicklung helfen. Jeder der mitmachen möchte ist herzlich dazu eingeladen eine Pull-Request zu stellen. Im unteren Teil, kann man sich von der TODO-Liste davon inspirieren lassen.


Hinweis: Diese Library richtet sich nicht nur an Anfänger (Entwickler), sondern auch an Fortgeschrittene, die ihren Nutzern eine einfachere Konfiguration zugänglich machen möchten.


TODO
  • BungeeCord-Support
  • Integration von mehren InstallHandlern (z.B. ItemStacks oder HashMaps)
  • Verbesserung der Grundstruktur (übersichtlichere Klasseneinteilung z.B. getrennte Klassen für @Install und Installable)
  • Verbesserung der README.md, sowie Erstellung eines Wikis/Anleitung



Ich freue mich über euer Feedback und bin gespannt auf eure Verbesserungsvorschläge.


Mit freundliche Grüßen
Jonas Franz


Linksammlung:


GitHub: https://github.com/JonasFranzDEV/Installable/
Travis-CI (Build-System): url=https://travis-ci.org/JonasFranzDEV/Installable



Liste der Plugins, die Installable nutzen:

(Wenn du möchtest, dass dein Plugin hier auch gelistet wird, schreibe mir bitte eine Nachricht)


E-Mail-Adresse für Nachrichten/Anfragen etc.: j.franz [a t] students.uni-marburg.de

This post has been edited 1 times, last edit by "deinplugin" (Oct 23rd 2015, 9:50pm)


iSEVEN

User / Kunde

  • "iSEVEN" is male

Posts: 1,431

  • Send private message

2

Sunday, October 25th 2015, 7:07pm

Wie sieht es mit Bildern aus?

YourSky

User / Kunde

Posts: 1,430

Occupation: HTML3 Hacker

Thanks: 5

  • Send private message

3

Sunday, October 25th 2015, 7:25pm

Nette Idee, aber bitte, bitte: OOP.
Mit freundlichen Grüßen,
Yonas


samiansawi

User / Kunde

Posts: 7

  • Send private message

4

Monday, October 26th 2015, 12:20am

sag bescheid wenn du noch hlfe brauchst

deinplugin

User / Kunde

  • "deinplugin" started this thread

Posts: 12

Location: dein-plugin.de

Occupation: Developer

  • Send private message

5

Friday, October 30th 2015, 9:06pm

Nette Idee, aber bitte, bitte: OOP.
Ich nutze doch OPP. Leider lässt sich OOP nicht überall einsetzten. Ich habe es aber hier eingesetzt: InstallPlugin, BukkitInstallPlugins, Installable, InstallHandler

sag bescheid wenn du noch hlfe brauchst
Ich würde mich über deine Hilfe sehr freuen, du kannst dir ja die TODO-Liste anschauen, dort findest du sicherlich einen Punkt, den du übernehmen kannst. Erstelle einfach einen Fork und sende anschließend eine Pull-Request.

Quoted from "iSEVEN"

Wie sieht es mit Bildern aus?

Hier anstelle eines Screenshot ein Ausschnitt aus einem Video: https://youtu.be/vqZfQtqrC0w?t=4m32s

YourSky

User / Kunde

Posts: 1,430

Occupation: HTML3 Hacker

Thanks: 5

  • Send private message

6

Saturday, October 31st 2015, 11:48am

Ich nutze doch OPP. Leider lässt sich OOP nicht überall einsetzten.
https://github.com/JonasFranzDEV/Installable/blob/master/src/main/java/de/jonasfranz/Installable/InstallManager.java#L13-L14

Inwiefern lässt sich das nicht überall einsetzen?
Mit freundlichen Grüßen,
Yonas


java4ever

User / Kunde

  • "java4ever" is male

Posts: 233

Thanks: 2

  • Send private message

7

Saturday, October 31st 2015, 12:51pm

Außerdem sollte static immer vermieden werden, man braucht es eigentlich nicht wirklich.
In vielen Programmiererkreisen ist es als "Bad Smell" verpöhnt...

ketrwu

Moderator

  • "ketrwu" is male

Posts: 1,430

Thanks: 2

  • Send private message

8

Saturday, October 31st 2015, 1:47pm

Wenn du in deiner Software alles objektorientiert programmierst und static vermeidest, hast du am Ende eine Kiste voller Lego-Steine, aber keine Software.

YourSky

User / Kunde

Posts: 1,430

Occupation: HTML3 Hacker

Thanks: 5

  • Send private message

9

Saturday, October 31st 2015, 1:55pm

Wenn du in deiner Software alles objektorientiert programmierst und static vermeidest, hast du am Ende eine Kiste voller Lego-Steine, aber keine Software.
Natürlich hat man am Ende eine funktionierende Software. Und das man hinterher "Lego-Steine" hat, um dich mal zu zitieren, ist auch der Sinn von OOP. Durch eine hohe Kohäsion, die mit OOP angestrebt wird, hat das ganze nur Vorteile. Da wenn man eine Stelle mit Code modifiziert und dies nur Klassen bzw. Methoden intern geschieht "übernimmt" der Rest des Codes im Grunde direkt diese Änderungen, ohne das man jede Datei anpassen muss.
Mit freundlichen Grüßen,
Yonas


deinplugin

User / Kunde

  • "deinplugin" started this thread

Posts: 12

Location: dein-plugin.de

Occupation: Developer

  • Send private message

10

Saturday, November 7th 2015, 1:42pm

Wenn du in deiner Software alles objektorientiert programmierst und static vermeidest, hast du am Ende eine Kiste voller Lego-Steine, aber keine Software.
Natürlich hat man am Ende eine funktionierende Software. Und das man hinterher "Lego-Steine" hat, um dich mal zu zitieren, ist auch der Sinn von OOP. Durch eine hohe Kohäsion, die mit OOP angestrebt wird, hat das ganze nur Vorteile. Da wenn man eine Stelle mit Code modifiziert und dies nur Klassen bzw. Methoden intern geschieht "übernimmt" der Rest des Codes im Grunde direkt diese Änderungen, ohne das man jede Datei anpassen muss.
Vielen Dank für deine Tipps. Um Inkompatibilitäten bestehender Plugins zu vermeiden, werden die static Sachen als deprecated markiert und durch eine neue Schnittstelle in der InstallPlugin.java ersetzt. So geht zwar die Möglichkeit alle Configs zentral zu verwalten verloren, aber dafür lässt sich dann der Command selbst bestimmen. Die Arbeiten daran werden in der OOP Branch geleistet. Wer möchte, kann selbst an der Entwicklung beitragen.

Bitte besucht unser neues Forum unter https://forum.nitrado.net| Please visit our new Forum at https://forum.nitrado.net

Similar threads