[HELP] PermissionsEx

Salut,
Moi je débute avec bukkit et PEX, vos post m'ont appris plein de choses, mais je bloque depuis toute la journée sur des problemes de syntaxe...!

Mon but final est de faire des groupes "Agriculteur" et "bucheron" qui seront les seuls à pouvoir respectivement récolter la bouffe (blé, pastèque, etc) et couper du bois (pinewood, oakwood, etc...)

Après une looooongue bataille j'ai fini par réussir à limiter la récolte de pastèques...
il se trouve qu'un bug de la version actuelle de PEX impose une syntaxe particulière :
Code:
        - -modifyworld.blocks.destroy.(103|melonblock)
il faut doubler l'ID du nom du block...
mais du coup pour les troncs de bois qui ont des variantes d'id 17:0, 17:1, etc ... pas moyen d'arriver à trouver la bonne syntaxe !
j'ai fait plein d'essais avec plein de variantes, je vous livre une partie de mon brouillon de permissions.yml
Code:
groups:
    visiteur:
        default: true
        prefix: '[Visiteur]'
        permissions:
        - modifyworld.chat
        - essentials.chat
    base:
        inheritance:
        - Visiteur
        prefix: '&z(&7&oBase&z) '
        permissions:
        - modifyworld.blocks.interact.*
        - -modifyworld.blocks.place.(103|melonblock)
        - -modifyworld.blocks.destroy.(103|melonblock)
        - -modifyworld.blocks.place.17:?*
        - -modifyworld.blocks.destroy.17:?*
        - -modifyworld.blocks.place.pinewood
        - -modifyworld.blocks.destroy.pinewood
        - -modifyworld.blocks.place.(17:1|wood:1)
        - -modifyworld.blocks.destroy.(17:1|wood:1)
        - -modifyworld.blocks.place.(17:1|pinewood)
        - -modifyworld.blocks.destroy.(17:1|pinewood)
        - -modifyworld.mobtarget.monster.zombie
        - modifyworld.*
    agriculteur:
        inheritance:
        - base
        prefix: '&z(&7&oAgriculteur&z) '
        permissions:
        - modifyworld.blocks.place.(103|melonblock)
        - modifyworld.blocks.destroy.(103|melonblock)

Par ailleurs je précise que ça fonctionne avec le melonblock, un joueur du groupe "base" ne peut y toucher alors que le groupe "agriculteur" le peux... donc je pense qu'il n'y a pas de probleme d'install ni avec le fichier config.yml
j'avoue que je commence à désespérer un peu....

Merci d'avance,
Potof.
 
un moyen efficace que j'ai trouver pour inclure tout les bloc, est de faire la permissions comme ceci
Code:
  - -modifyworld.blocks.destroy.(103|103:*)
De cette façons ce n'est pas nécessaire de mettre tout les identifiant séparément.

La même syntaxe fonctionne très bien pour les outils qui ont une durabilité qui diminue

Peu aussi être appliqué pour les Chest par example qui on une data value selon le coté qu'ils sont disposé.

J'espère que ma réponse va pouvoir t'aidé.
 
Merci pour cette piste, je viens d'essayer avec :

Code:
  - -modifyworld.blocks.destroy.(17|17:*)

...mais hélas pas de résultat.
par ailleurs, quelqu'un sait il si il y a un moyen d'obtenir le nom d'un block donné ?
parce que par exemple "melonblock", quand je le choppe dans TooManyItems il me dit qu'il m'a donné du "MELON_BLOCK" le wiki donne l'ID mais pas le nom correct non plus... et du coup tu mets des plombes à trouver les bonnes syntaxes.

Merci quand même,
Potof.
 
Dans tes configs de Modifyworld tu devrais mettre useitemsname: false
Normalement, sa devrais mieux fonctionner. Et pour avoir moins de perms, tu pourrais utilisé ce-ci

Code:
base:
        inheritance:
        - Visiteur
        prefix: '&z(&7&oBase&z) '
        permissions:
        - modifyworld.blocks.interact.*
        - -modifyworld.blocks.place.(103|melonblock)
        - -modifyworld.blocks.destroy.(103|melonblock)
        - -modifyworld.blocks.place.17:?*
        - -modifyworld.blocks.destroy.17:?*
        - -modifyworld.blocks.place.pinewood
        - -modifyworld.blocks.destroy.pinewood
        - -modifyworld.blocks.place.(17:1|wood:1)
        - -modifyworld.blocks.destroy.(17:1|wood:1)
        - -modifyworld.blocks.place.(17:1|pinewood)
        - -modifyworld.blocks.destroy.(17:1|pinewood)
        - -modifyworld.mobtarget.monster.zombie
        - modifyworld.*

Code:
base:
        inheritance:
        - Visiteur
        prefix: '&z(&7&oBase&z) '
        permissions:
        - modifyworld.blocks.interact.*
        - -modifyworld.blocks.(place|destroy).(103|melonblock)
        - -modifyworld.blocks.(place|destroy).(17|17:*)
        - -modifyworld.mobtarget.monster.zombie
        - modifyworld.*

 
Salut, merci pour cette réponse.
alors j'ai donc testé l'ajout de la ligne useitemsname: false
voici l'état actuel de mon /Modifyworld/config.yml

Code:
enable: true
itemRestrictions: true
informPlayers: true
useitemsname: false
whitelist: false
messages:
  whitelistMessage: Vous n'êtes pas autorisé à joindre ce serveur. Goodbye!
  prohibitedItem: l'item "%s" vous est interdit.
  permissionDenied: Désolé vous n'avez pas la permisssion de faire cela.

cela dit, malgré cela, pour ce qui est du block de melon, la ligne :

- -modifyworld.blocks.(place|destroy).103

ne fonctionne pas (avec l'ID seul) tandis que celle avec l'itemName seul fonctionne (malgré le useitemsname:false) :

- -modifyworld.blocks.(place|destroy).melonblock

je n'ai pas tout compris mais ils avertissent sur le wiki de PEX qu'il y a un souci avec certains ID/itemnames :
https://github.com/PEXPlugins/PermissionsEx/wiki/Modifyworld#wiki-mw-important-notes

et sur ce fil je pensait trouver des éléments de réponse :
https://github.com/PEXPlugins/PermissionsEx/issues/407

mais rien n'y fait...
n'y a il pas moyen de trouver quelque part la syntaxe exacte de chaque itemname ? (dans le code des .jar ?)
pour les blocks de tronc de pin, la commande give accepte plusieurs itemnames (je les ai trouvé en essayant au pif des noms):
redwood
pinewood
pine
pinelog
j'ai donc essayé - -modifyworld.blocks.(place|destroy). avec chacun de ces noms, mais ça ne marche pas....
c'était un peu pareil avec le melonblock qu'il m'a fallut quelques tatonnements à trouver....
bref... ça n'avance pas des masses...
...et encore je ne me suis pas encore attaqué au blé mûr ! (car seuls les "agriculteurs" devraient pouvoir le destroy)

bon merci en tout cas pour vous idées suggestions, je suis toujours preneur !
Potof.

 
Bonjour,

Dans le dossier d'Essentials tu as un fichier "items.csv", c'est la liste de tous les objets disponibles ;). Sinon je suis désolé, mais je ne vois pas ce qui bloque mis à part les réponses précédentes.

-----------

Editer : dans ton fichier de config de modifiworld, le paramètre "use-material-names" est-il sur false ? Il permet de ne prendre en compte que les noms lorsqu'il est sur true au lieu des ids.
 
Salut,
Alors tout d'abord, merci pour le fichier "items.csv" !
sinon, entre temps, j'ai finalement réussi à trouver d'où venait le problème !
comme un idiot j'ai copié/collé le ligne de @xalixilax "useitemsname: false" (Merci tout de même à lui car par ailleurs j'ai pu avancer sur d'autres points grâce à lui) alors qu'en y regardant de plus près, la bonne syntaxe était "use-material-names: false"
depuis tout fonctionne avec seulement les numéros d'ID et pour les "sous-ID" ça marche très bien avec 17:?* (pour les divers types de tronc d'arbres par exemple).
Bref tu as bien vu également l'erreur venait de là !

Sinon, depuis je suis en train de faire bien grossir mon fichier de permissions et j'ai plusieurs questions :

- est-ce que ça change quelque chose (niveau lourdeur pour le serveur) si je regroupe les permissions dans une seule groooosse ligne avec des .(id|id|id|id|....) plutôt que sur plusieurs lignes avec une ligne de perm par id ou groupe d'id (présentation plus claire et plus facile à modifier avec des # )

- est-ce qu'il y a moyen de faire appartenir un user à plusieurs groupes ? (genre tant que le serveur n'a pas un bucheron attitré, les autres ont cette "compétence" disponible... ou encore, possibilité de "gagner" plusieurs compétences) ou faut-il créer autant de niveau de groupes (avec des "inheritance") que de combinaisons de compétences ?

- une fois le fichier permissions établi, le fait de devenir op semble ne pas avoir d'effet sur les permissions retirées (un bucheron qui devient op peut faire un /time day mais ne peux pas toucher aux récoltes) est-ce normal ?

je vous met mon fichier de permissions ici, (comme je le disait, je débute), si vous avez des suggestions, des remarques, des conseils, je suis preneur de votre expérience :)

Code:
groups:
    visiteur:
        default: true
        prefix: '[Visiteur]'
        permissions:
        - modifyworld.chat
        - essentials.chat
    base:
    # (ce groupe permet de commencer à s'organiser avant de se mettre au RP)
        inheritance:
        - visiteur
        prefix: '&z(&7&oBase&z) '
        permissions:
        # limites grief
        # kits
        - essentials.kit
        - essentials.kit.depart
        - modifyworld.*   
    baseRP:
   
        inheritance:
        - base
        prefix: '&z(&7&oBaseRP&z) '
        permissions:
        # limites agriculture
        #      eviter la gruge par pietinage ou casser la terre labouree
        - -modifyworld.blocks.interact.(60|60:?*)       
        - -modifyworld.blocks.(place|destroy).(60|60:?*)
        #      cultures
        - -modifyworld.blocks.(place|destroy).103
        - -modifyworld.blocks.(place|destroy).(59|59:?*)
        - -modifyworld.blocks.(place|destroy).(83|83:?*)
        - -modifyworld.blocks.(place|destroy).(99|99:?*)
        - -modifyworld.blocks.(place|destroy).(100|100:?*)
        - -modifyworld.blocks.(place|destroy).(105|105:?*)
        - -modifyworld.blocks.interact.60
        # limites buchreon
        #      recolte bois et feuilles
        - -modifyworld.blocks.(place|destroy).(17|17:?*)
        - -modifyworld.blocks.(place|destroy).(18|18:?*)
        #      crafts objets en bois
        - -modifyworld.items.craft.(54|64|65|68|72|85|95|96|107|323|324|333|355)
        # limites minage
        - -modifyworld.blocks.(place|destroy).(14|15|16|21|56|73|74|129)
        # limites forgeron
        - -modifyworld.items.craft.(27|28|66|71|101|118|256|257|258|259|267|272|273|274|275|276|277|278|279|283|284|285|286|291|292|293|294|302|303|304|305|306|307|308|309|310|311|312|313|314|315|316|317|325|328|330|345|347|359|379|380)
        # kits
        - essentials.kit.departRP
        - modifyworld.*
    agriculteur:
        inheritance:
        - baseRP
        prefix: '&z(&7&oAgriculteur&z) '
        permissions:
        # agriculteur
        - modifyworld.blocks.interact.(60|60:?*)
        - modifyworld.blocks.(place|destroy).(60|60:?*)
        - modifyworld.blocks.(place|destroy).103
        - modifyworld.blocks.(place|destroy).(59|59:?*)
        - modifyworld.blocks.(place|destroy).(83|83:?*)
        - modifyworld.blocks.(place|destroy).(99|99:?*)
        - modifyworld.blocks.(place|destroy).(100|100:?*)
        - modifyworld.blocks.(place|destroy).(105|105:?*)
        # kits
        - essentials.kit.agriculteur
    bucheron:
        inheritance:
        - baseRP
        prefix: '&z(&7&oBucheron&z) '
        permissions:
        # bucheron
        - modifyworld.blocks.(place|destroy).(17|17:?*)
        - modifyworld.blocks.(place|destroy).(18|18:?*)
        - modifyworld.items.craft.(54|64|65|68|72|85|95|96|107|323|324|333|355)
        # kits
        - essentials.kit.bucheron
    mineur:
        inheritance:
        - baseRP
        prefix: '&z(&7&oMineur&z) '
        permissions:
        # mineur
        - modifyworld.blocks.(place|destroy).(14|15|16|21|56|73|74|129)
        # kits
        - essentials.kit.mineur
    forgeron:
        inheritance:
        - baseRP
        prefix: '&z(&7&oForgeron&z) '
        permissions:
        # forgeron
        - modifyworld.items.craft.(27|28|66|71|101|118|256|257|258|259|267|272|273|274|275|276|277|278|279|283|284|285|286|291|292|293|294|302|303|304|305|306|307|308|309|310|311|312|313|314|315|316|317|325|328|330|345|347|359|379|380)
        # kits
        - essentials.kit.forgeron
    admin:
        prefix: '&z(&e&oAdmin&z) '
        permissions:
        - '*'
        - -modifyworld.mobtarget.monster.*
 
  • J'aime
Reactions: commandor
en fait, faire UNE GROSSE LIGNE ne sert a rien, car tu va perdre tout ta lisibilité. Donc en faisant de plus petite ligne optimisé vous avex des groupes d'items, tu ne te perd pas (par example, faire une ligne avec des ID comme;es graines de melon, de citrouille et de blé) De plus permissions EX est un des meilleur plugins de permissions et avoir une ligne de plus ou de moins ne change pas grand chose pour ton serveur. Tant que sa reste lisible c'est l'idéal.
Sinon pour ce qui est des op, l'idéal est de leur rajouter la mode:
- modifyworld.*
De cette façons, ils ont accès à tout.

Pour ce qui est des groupes, tu peu faire qu'un joueur possèdes plusieurs groupe avec la commandes
/pex user (lenomdujouer) group add (lenomdugroupe)
Mais pour ce qui est d'empêcher tout les jouer a utilisé ce groupe dès que quelqu'un y est, soit tu rajoute la node pour les empêcher dès que tu rajoute quelqu'un au groupe ou bien...
Je ne sais pas trop faudrait je réfléchisse un peu. Il y a toujours ajouter tout le monde au groupe, mais ça peu être compliquer à enlevé tout le monde.
 
Ok, merci pour les conseils !

effectivement ça marche bien de déclarer plusieurs groupes par user.
Par contre pour les permissions des op il suffit de créer un groupe op ?
parce que moi je faisait ça rapide en faisant /op <user> puis /deop <user> (moi en l'occurence quand j'avais besoin de privilèges ingame et puisque le serveur tourne sur ma machine) mais je restait déclaré dans mon groupe...
bref je suis pas sûr de bien comprendre le distinction entre être "op" et être dans un groupe à haut privilège genre "admin"...

sinon, c'est un peu hors sujet dans ce fil, mais ce petit serveur que je tentes de monter et d'administrer est en fait pour des enfants de 8 à 10 ans, ils ne sont donc pas super à l'aise avec les commandes à taper dans le chat... connaissez vous des plugins qui gèrent bien l'économie mais avec interface ingame ?
je serai preneur !!!

merci en tout cas pour le reste, j'apprends plein de choses...
Potof.
 
Oh c'est intéressant. Dans ce cas, les solutions sont d'utilisé Spout qui permet d'avoir des API différente. Très intéressant mais peu causer beaucoup de problème.
Sinon un plugin que j'utilise énormément et que je ne peu plus me passé est Commandhelper qui permet de faire des alias pour des commandes plus facile à retenir.
Un autre solutions peu être d'utiliser commandsign qui permet de mettre des commandes sur un panneau et lorsque tu clic, la commande s'exécute. Je crois sa serais la meilleur solution puisque simple d'utilisation et facile a utilisé. Le désavantage est que on doit se déplacer pour cliquer sur les pancartes.