• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

PlugIn Wie Rangsystem Programmieren

Patrick2020

Minecrafter
Registriert
14 März 2020
Beiträge
13
Diamanten
300
Hey,
ich programmiere gerade die Plugins für meinen Server und möchte jetzt ein Rangsystem programmieren.
Ich möchte folgende Ränge:
Owner
Admin
Moderator
Supporter
Youtuber
Premium
Spieler

Jeder Rang soll eine eigene Farbe kriegen und verschiedene Permissions hab (auch selber erstellte).
Wenn man neu auf dem Server ist soll man automatisch Spieler kriegen.
Welchen Rang welcher Spieler hat soll in einer config gespeichert werden.

Welche Permissions welcher Rang hat soll im Code einstellbar sein und nicht per ingame Befehl.
Nun habe ich schon vieles ausprobiert, aber es hat nie geklappt.

Mit welchem Code könnte ich das Plugin funktionstüchtig machen (kein fertiges Plugin sonder nur Code damit ich es weiter anpassen kann ohne decompilen)?

LG
Patrick2020
 

Patrick2020

Minecrafter
Registriert
14 März 2020
Beiträge
13
Diamanten
300
LuckPerms ist schon fertig. Also ehrlich, viel Sinn macht es nicht das Rad nicht mal neu zu erfinden, sondern zu kopieren, mit der Konsequenz damit ein Sicherheitsrisiko einzugehen.
Ich will keinen fertigen Code sondern nur wissen wie man einem Player Permissions zuweißt und wie man sowas wie Spieler: vor dem Namen macht. Mein Code ( den ich nicht mehr habe hat nicht funktioniert).

Das sind alles Basisfeatures, die praktisch jedes Permissions-Plugin hat. Da könnte man also auch einfach ein bekannteres (wie LuckPerms) nutzen. Ein Vorteil einer eigenen Umsetzung, gerade wenn man die anderen Features gängiger Plugins nicht braucht, wäre natürlich die bessere Performance, zumindest wenn man weiß, was man tut.

Aber was ist jetzt genau die Schwierigkeit bei der Umsetzung? Einen Ansatz müsstest du ja eigentlich schon haben, wenn du bereits programmieren kannst. Diese Passage:

Macht dann nicht viel Sinn. Bei einem konkreten Problem wird man dir hier sicher weiterhelfen können, aber einfach Code abholen und dann daraus etwas zusammenkopieren ("spoon-feeding") hat nichts mit Eigenentwicklung zu tun. Da kannst du dann auch ein fertiges Plugin nutzen.


Wieso? Hardcoding (also die Festlegung von Daten, die man später noch ändern müssten, im Code) zeugt von sehr schlechter Umsetzung der Software. Bei den Permissions handelt es sich natürlich um Festlegungen, die unter Umständen auch mal flexibel geändert werden müssen, was dann erzwingen würde, den Code zu verändern, den Build-Prozess erneut zu durchlaufen, den Server zu stoppen, die JAR-Datei zu ersetzen und ihn dann wieder zu starten - und das jedes Mal, bei jeder kleinen Änderung.

Es stimmt allerdings, dass ein Ingame-Befehl für solche administrativen Einstellungen dagegen sehr unsicher wäre. Besser ist es, wenn die Permissions in einer Datei mit einfach veränderbarem Format, wie zum Beispiel YAML zu speichern, sodass man dann nur den Server neustarten oder einen Befehl zum Neuladen der Permissions eingeben muss.
Eine andere und nicht minder sichere Lösung ist die Beschränkung aller Permissions-Befehle auf die Serverkonsole.

Wenn es für dich ausreicht, ein bestehendes Plugin zu verändern, kannst du auch einfach ein Permission-Plugin nutzen, das Open Source ist. Da musst du dann nichts dekompilieren, sondern kannst einfach das Repository klonen (z.B. von LuckPerms), und es an deine Bedürfnisse anpassen, sodass du dann deinen eigenen Fork hast.
Genau ich möchte es wegen der Performance selber Programmieren und weil es so sicherer ist, da der Code ja nicht so einfach zu kriegen ist.

Bei im Code habe ich mich wohl falsch ausgedrückt, ich meinte damit z.B. in einer config.yml.

Das mit dem Klonen ist nichts für mich da ich mich mit Spigot noch nicht so gut auskenne (mit spigot angefangen vor ca. einer Woche, davor nur reines Java) und ich ja eigentlich nur die obengenannten Methoden (bei der Antwort auf Majoox) brauche da, dass was ich bei Google und YouTube finde nicht funktioniert hat.

LG
Patrick2020
 

SirYwell

PlotSquared Entwickler
Registriert
30 Juni 2017
Beiträge
540
Diamanten
488
Minecraft
SirYwell
Genau ich möchte es wegen der Performance selber Programmieren und weil es so sicherer ist, da der Code ja nicht so einfach zu kriegen ist.
Da du nicht mal weißt, wie du sowas angehen willst, bezweifle ich, dass du dir ernsthaft Gedanken um Performance machen kannst. Und selbst dann kannst du immer noch LuckPerms als Grundlage verwenden. Ich verstehe nicht so ganz, auf was du hinauswillst.
 

Baba43

Ehem. Teammitglied
Ehem. Teammitglied
Registriert
5 November 2012
Beiträge
869
Diamanten
60
Minecraft
baba43
Ist Dir bewusst, dass LuckPerms eine API hat? Damit kannst Du LuckPerms über Dein Plugin steuern.

Ansonsten würde mich mal interessieren, welches Ziel hinter dieser Aussage steckt, denn die ergibt für mich überhaupt keinen Sinn:
Welche Permissions welcher Rang hat soll im Code einstellbar sein und nicht per ingame Befehl.
 

Patrick2020

Minecrafter
Registriert
14 März 2020
Beiträge
13
Diamanten
300
1. Hast du eigentlich schon geschrieben, dass du fertigen Code möchtest, siehe hier:

Das wäre dann zwar Code, den du noch weiter verändern würdest, ist aber eben trotzdem nicht so gern gesehen.
2. Sind das beides zwei unterschiedliche Problemstellungen, die miteinander nichts zu tun haben. Allerdings wird dir die Javadoc wohl in beiden Fällen weiterhelfen, ohne dass jemand einen Codeschnipsel geben muss. Im Speziellen würde ich mal bei Permissible nachsehen, da dieses Interface u.a. von Player implementiert wird, und für alles, was den Chat betrifft, gibt es das AsyncPlayerChatEvent.

Gut, das macht natürlich mehr Sinn.

Das ist natürlich legitim, aber das:

eher nicht. Nach dem Kerckhoff-Prinzip (was eigentlich für Kryptosysteme gilt, aber auf jede Software hinsichtlich ihrer Sicherheit anwendbar ist) darf es keine Rolle spielen, ob jemand weiß, wie dein System funktioniert. Ein wirklich sicheres, gut umgesetztes Plugin wird nicht weniger sicher, wenn jemand seinen Code kennt, und darauf solltest du auch hinarbeiten. Ich wüsste auch nicht, wie viele grobe Fehler man einbauen müsste, um eine einfache Zuweisung von Rechten zu Spielern auf irgendeine Weise unsicher zu machen.

Bedenke auch, dass du ja bei deinem Plugin ebenfalls die Bukkit-API und deren Implementation nutzt (also wahrscheinlich Spigot/Paper); die Funktionsweise deines Plugins würde sich also nicht groß von der ähnlicher Plugins unterscheiden.

Falls du dir nicht zutraust, ein solches Plugin ohne Sicherheitsprobleme zu programmieren, solltest du vielleicht erstmal ein fertiges nehmen; LuckPerms hat aufgrund seiner Bekanntheit wahrscheinlich keine allzu groben Fehler bzw. Sicherheitslücken mehr.
Sobald du deine Kenntnisse und Fähigkeiten auf dem Gebiet hinreichend erweitert hast, kannst du so ein Projekt ja später immernoch in Angriff nehmen.

Klonen hat nichts mit Spigot oder anderem Minecraft-Zeug zu tun, sonderrn mit Git. Und davon sollte man als Softwareentwickler (unabhängig von der Programmiersprache) schonmal gehört haben. Das geht auch einfach, durch das Klonen eines Repository kopierst du ledglich den Sourcecode auf deinen Rechner, den du dann bearbeiten kannst. Git und seine Funktionen sind auch sehr gut dokumentiert.

Ich habe dir ja jetzt die Javadoc verlinkt. Weitere Grundlagen der Bukkit-API sind auch im BukkitWiki dokumentiert.
Von YouTube-Videos muss ich grundsätzlich abraten, da ein (Video-)Tutorial (im Gegensatz zu einer ausführlichen Dokumentation) für solche Themen nicht sinnvoll ist. Auch haben die meisten, die solche Videos erstellen, nicht wirklich Ahnung und geben nur ihr gefährliches Halbwissen weiter.
Natürlich weiß ich was Git ist allerdings bringt es mir ja wenig wenn ich Code habe wo ich nicht komplett durchblicken, weil dann kann ich ja auch nichts bearbeiten (ohne das Plugin unbrauchbar zu machen). Dann werde ich halt mal vorläufig LuckPerms benutzen und die restlichen Plugins programmieren. Ah und danke das du mir den Link zur Bukkit Dokumentation gegeben hast. Ich kannte sie zwar schon, habe aber nichts gefunden was mit Permissions zu tun hatte.

LG
Patrick2020
 
Oben