Permissions (nicht) korrekt überschrieben?

  • Hallo,

    mir ist ein mögliches Problem mit der Vererbung der Permissions aufgefallen.


    Ich verwende auf meinem Server die default.json überhaupt nicht als Standardgruppe. Stattdessen habe ich in den server.properties eine andere Default-Gruppe (survival-player) eingetragen.


    In dieser Gruppe sind unter anderem sämtliche vehicle-Permissions auf true gesetzt (Fahrzeuge bemalen, zerlegen, bearbeiten usw.).


    Nun haben einige Spieler gemeldet, dass sie ihre eigenen Boote auf ihrem eigenen Grundstück weder bearbeiten noch zerlegen konnten.


    Daraufhin habe ich die Berechtigungen überprüft:

    In der default-area sind keine vehicle-Permissions gesetzt.

    In der area-owner sind ebenfalls keine vehicle-Permissions gesetzt.


    Meine Erwartung wäre gewesen, dass die fehlenden Werte aus der eigentlichen Standardgruppe (survival-player) übernommen werden, also beispielsweise in dieser Reihenfolge:

    survival-player → default-area → area-owner

    oder – falls default.json grundsätzlich Teil der Vererbung sein soll –

    default.json → survival-player → default-area → area-owner


    In beiden Fällen müssten die vehicle-Permissions am Ende auf true stehen.


    Tatsächlich war das jedoch nicht der Fall. Die Spieler hatten die Fahrzeugberechtigungen erst wieder, nachdem ich die entsprechenden vehicle-Einträge aus survival-player zusätzlich in die default.json kopiert hatte.


    Als Workaround könnte ich die Werte natürlich direkt in der area-owner setzen, allerdings würde das den Sinn der Vererbung etwas aushebeln.


    Für mich sieht es daher so aus, als würden die Permissions im Bereich der Area-Berechtigungen ausschließlich aus der default.json übernommen und nicht aus der in den server.properties definierten Standardgruppe.

    Falls das so beabsichtigt ist, wäre eine Klarstellung in der Dokumentation hilfreich. Falls nicht, könnte es sich um einen Bug in der Vererbungslogik handeln.

  • Da Du von "Gruppen" sprichst:
    wenn Suvival-player tatsächlich eine Gruppenberechtigung ist, kann das keine Standardberechtigung für die Welt sein. Kann wirklich jeder neue Spieler was ein survival-spieler kann?

    (meine mich zu erinnern, dass Du sagtes ein neuer Spieler könne gar nichts)

    Wenn dem so ist, lass den Eintrag in den properties leer und benutze default.json als Standard - vielleicht klappt es dann auch wieder mit der Vererbung ?


    Ich trage grundsätzlich immer ALLES in JEDE Berechtigung ein und das funktioniert einwandfrei :D;)

  • hm - ich glaube default und Gruppen gelten nur in der Wildnis und Areas sind quasi eigene mini Welten die auch ihre Standard- und Spielerberechtigungen haben und vollständig definiert sein müssen.

    Und wenn nun weder in der Standardberechtigung der Area noch in den Spielerberechtigungen der Area etwas z.B. zu Booten definiert ist wird auf die default.json zugegriffen.

    Sobald man eine Area betritt gelten Wildnis Regeln nicht mehr und woher soll das Spiel wissen, ob Du dich außerhalb dieser Area in einer Gruppe befindest?

  • Hm okay aber wenn ich theoretisch z.b. eine Gruppe Spieler habe die fliegen kann, meine default gruppe aber explizit nicht fliegen darf ist es unmöglich für diese gruppe in areas zu fliegen weil ihre gruppenrechte nicht mehr gelten.


    Also Thema fliegen wäre für mich das hier logisch:



    Spieler A - default gruppe / survival playerSpieler B - Special Gruppe
    default.jsonneinnein
    survival-player.json (default gruppe)nein- (nein)
    special-player.json-ja
    default-area.json--
    besitzer-area.json--
    ERGEBNISneinja
    Aktuellneinnein
  • Tatsächlich ist es so, dass Area-Permissions bzw. spielerbezogene Area-Permissions eigentlich nicht von der Standard-Area-Permission erbt. Area-Permissions sind etwas spezieller, sie sind quasi eher als "Patch" zu verstehen statt reine Vererbung. D.h. es werden nur die Werte überschrieben, die in der Area-Permission definiert sind. Prinzipiell ist es beim Betreten einer Area so, dass die aktuelle Permission des Spielers (default.json oder Gruppen-Permission) temporär die Area-Permission erbt (und nur die Werte überschrieben werden, die in der Area-Permission explizit gesetzt sind).

    Als Area-Permission wird entweder eine spielerbezogene Area-Permission genommen (falls gesetzt), oder die Standard-Area-Permission. Beide haben nichts miteinander zutun, d.h. eine spielerbezogene Area-Permission ersetzt für diesen Spieler die Standard-Area-Permission, erbt aber nichts von ihr.


    Wenn die default.json nicht existiert, dann werden dort einfach die Standardwerte, die vom Spiel aus definiert sind, genommen (im MP sind die Werte für Spieler so gewählt, dass ein Spieler fast nichts darf). Wenn der Spieler einer Gruppe zugewiesen wird spielt das aber keine Rolle (lediglich für die Keys, die nicht in der Gruppen-Permission gesetzt sind, denn die stammen dann weiterhin aus der default.json).


    Die Prioritätskette ist also: default.json < Gruppen-Permission < server.properties-Overrides (optional) < Area-Permission (Default oder spielerspezifisch)


    Zum Fliegen-Beispiel: Wenn in default.json Fliegen nicht erlaubt ist, in der Gruppen-Permission jedoch schon, dann sollte der Spieler eigentlich auch in der Area fliegen dürfen - außer die Area-Permission sagt explizit Nein zum Fliegen. Wenn du hingegen Fliegen nur in der Area erlauben willst, reicht es, in der Area-Permission Fliegen zu erlauben.

  • ok aber wenn ich dich richtig verstehe müsste dann doch wenn ich in default.json *vehicles: false habe in der gruppen.json *vehicles: true und in allen area.json diese werte NICHt gesetzt habe doch der wert true sein oder? das ist aber nicht der fall. Sobald ein spieler eine area betritt scheint nur noch default.json < area permission zu gelten, ohne gruppen permission zu beachten.

  • ok aber wenn ich dich richtig verstehe müsste dann doch wenn ich in default.json *vehicles: false habe in der gruppen.json *vehicles: true und in allen area.json diese werte NICHt gesetzt habe doch der wert true sein oder? das ist aber nicht der fall. Sobald ein spieler eine area betritt scheint nur noch default.json < area permission zu gelten, ohne gruppen permission zu beachten.

    Ja, wenn in der Area-Permission dieser Wert nicht gesetzt ist, dann sollte der Wert der Gruppenpermission weiterhin gelten (sofern der Spieler in der Gruppe ist).


    Ich habs bei mir auf einem lokalen Server einmal kurz probiert: In der default.json ist zB Fliegen nicht erlaubt. In der Gruppen-Permission ist es explizit erlaubt. In der Area-Permission ist es gar nicht definiert. Innerhalb der Area kann der Spieler weiterhin fliegen (die Area-Permission wird aber gesetzt und überschreibt alles, was darin definiert war, zB Chat)...

    Habe testweise auch die editvehicles und editownvehicles Permissions getestet (d.h. in default.json false, in Gruppen-Permission true, in Area-Permission nicht definiert). Auch das funktionierte :wat:


    Andererseits will ich meine Klappe auch nicht zu weit aufreißen, da du (und SonoBionda) ja schon einige Area-/Permission-bezogene Probleme gefunden habt, die ich auf Anhieb nicht reproduzieren konnte :drunk: :saint: Daher sende mir vll am besten mal die Permissions zu, damit ich sie mir genau anschauen kann (oder nenne mir die genauen Permissions, die nicht funktionieren)

  • Konkret dürften das die 3 Dateien hier sein. Spieler bemängelten das sie in ihrer Area in der sie owner sind ihre schiffe nicht zerlegen oder bemalen konnten. erst als ich general und world aus survival-player in default.json übernommen hatte ging es wieder.


    # Default permission group for new players. Leave blank to apply default permissions
    Permissions_DefaultNewPlayerPermissionGroup=survival-player

  • # Default permission group for new players. Leave blank to apply default permissions
    Permissions_DefaultNewPlayerPermissionGroup=survival-player

    was ich grad nicht schnalle - bezieht sich das wirklich auf eine Gruppenberechtigung, oder ist das im Grunde nicht nur eine umbenannte Standardberechtigung die ebenfalls im Hauptordner liegt? :thinking:

    Für mich macht das wenig Sinn, wenn JEDER sofort in einer Gruppe startet, da kann man auch ne angepasste default nehmen und nur vertrauenswürdige Spieler in Gruppen befördern :D

  • Danke für die Permissions! Sorry dass es etwas länger dauerte, aber ich kann bestätigen, dass hier etwas faul ist :wat: Es gibt manche Prüfungen, bei denen die Area-Permission tatsächlich auf die default.json zurückfällt. Das betrifft zwar nicht den Spieler direkt, d.h. beim direkten Setzen der Spielerpermission wird das korrekt übernommen, aber bei positionsbezogenen Prüfungen ist das problematisch (zumindest bei manchen Permissions).


    Mir ist das vorher leider nicht aufgefallen, da Fliegen davon nicht betroffen ist, und bei den Vehicle-Permissions muss ich editownvehicles wohl doch übersehen haben (obwohl ich das ja extra erwähnte), sodass ich mein Fahrzeug trotzdem editieren konnte :/ Clientseitig werden die Permissions übrigens korrekt gesetzt (deshalb tauchen sie in der Permission-Liste als positiv auf), aber die Entscheidungen werden in den meisten Fällen vom Server getroffen, wodurch der Bug verschleiert blieb.


    Ich werde das mit dem nächsten Update beheben, danke nochmal fürs Nachhaken! :) Als schnelle Lösung könntest du entweder die gewünschten Werte direkt in der Area-Permission setzen (diese Problematik taucht nur bei den Permissions auf, die nicht von der Area-Permission überschrieben werden), oder alternativ (um zumindest die Fahrzeug-Problematik zu beheben) in der default.json editownvehicles löschen (der Standardwert dafür ist ohnehin true, d.h. der Spieler wird dann seine eigenen Vehicles weiterhin bearbeiten können).


    was ich grad nicht schnalle - bezieht sich das wirklich auf eine Gruppenberechtigung, oder ist das im Grunde nicht nur eine umbenannte Standardberechtigung die ebenfalls im Hauptordner liegt?

    Ja, das ist eine Gruppenberechtigung, d.h. neue Spieler werden automatisch dieser Gruppe zugewiesen. Prinzipiell dasselbe als wäre der Admin immer da und würde den neuen Spieler manuell der Gruppe zuweisen ^^

    Die default.json bleibt davon unberührt.

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!