Tutoriel [En Rédaction] [Plugin] PermissionsBukkit

Detobel36

Créateur de plugins (PhoenixRebirth)
Support
17 Août 2012
10 537
24
2 246
347
28
Bruxelles - Belgique
www.phoenix-rebirth.fr
Salut,

J'ai remarqué que l'on avait un tutoriel sur PermissionsEx, sur GroupManager, mais rien sur PermissionsBukkit. Or PermissionsBukkit est mon plugin de permissions préféré, car c'est tout simplement le 1er plugin de permissions que j'ai appris à configurer.
Voici d’ailleurs le tutoriel avec lequel j'avais appris à configuré les permissions de mon premier serveur (ça date :D ).


Introduction au tutoriel:
Avant de commencer à configuré, je voudrais vous dire un petit mot sur le programme que nous allons utiliser pour configuré PermissionsBukkit, mais aussi tous vos autres plugins. Je vous conseil Notpad++ (télécharger). Mais vous pouvez aussi utiliser SublimText... Je vous déconseille fortement d'utiliser votre bloc-notes, même si c'est possible.
Je vous rappelle aussi que les tabulations ne sont pas supportées par le format yml (format des fichiers de configuration de la majorité des plugins). Par défaut, sachez que Notpad++ a tendance à insérer des tabulations automatiquement. Voici la petite manipulation qu'il faut faire pour que cela ne se produise pas:
Allez dans "Paramétrage" -> "Préférences..." -> "Menu langage/Tabulations" -> cochez: "Insérer des espaces" -> "Fermer"
Voilà, je crois qu'on va pouvoir commencer.


Sommaire:

PermissionsBukkit:
  1. Mais au fait, c'est quoi PermissionsBukkit ?
  2. Installation
  3. Configurer les groupes
  4. Les commandes de PermissionsBukkit
  5. Quelques liens utiles
SimplePrefix:
  1. A venir
PermissionsBukkit

1. Mais au fait, c'est quoi PermissionsBukkit ?
Et bien PermissionsBukkit est un plugin de permissions. Il existe évidemment d'autre plugin de permissions, les plus connu étant: PermissionsEx, GroupManager et PermissionsBukkit. Les plugins de permissions permettent de créer des groupes, des rangs et de donner à ces groupes des permissions (faire des commandes, casser des blocks, ...).
noob a dit:
Pourquoi y a 3 plugins de permissions et pas un ? Y faut pas la même chose
Et bien le principe est le même pour les 3 plugins, mais chaque plugin à ses particularités. La particularité de PermissionsBukkit par rapport aux autres plugins de permissions est qu'il intègre un système plus intuitif pour interdire des permissions. PermissionsBukkit n'intègre pas directement le système permettant de donner des préfixes aux groupes... Il faut un plugin complémentaire (SimplePrefix), cela est un avantage mais aussi un inconvénient dans certain cas. Quoi qu'il en soit, nous reparlerons de cela plus tard.

2. Installation:
Et bien comme 99,9% des plugins, il suffit de le télécharger et de le mettre dans le dossier plugins...
Lien de téléchargement
Comme je viens de vous le dire (ci-dessus), vous aurez aussi peux être besoin de SimplePrefix (disponible ici), mais nous en reparlerons plus tard.
N'oubliez pas de redémarrer votre serveur une fois le plugin mis dans le dossier plugins.

3. Configurer les groupes
Et oui, nous voici dans le vif du sujet...
Une fois le plugin installé, et le serveur relancé, vous devriez avoir un dossier PermissionsBukkit qui se sera créé. Dans celui-ci, il devrait y avoir un fichier "config". Ouvrez-le avec Notpad++.
Vous devrez voir quelque chose comme ceci:
Code:
# PermissionsBukkit configuration file
#
# A permission node is a string like 'permissions.build', usually starting
# with the name of the plugin. Refer to a plugin's documentation for what
# permissions it cares about. Each node should be followed by true to grant
# that permission or false to revoke it, as in 'permissions.build: true'.
# Some plugins provide permission nodes that map to a group of permissions -
# for example, PermissionsBukkit has 'permissions.*', which automatically
# grants all admin permissions. You can also specify false for permissions
# of this type.
#
# Users inherit permissions from the groups they are a part of. If a user is
# not specified here, or does not have a 'groups' node, they will be in the
# group 'default'. Permissions for individual users may also be specified by
# using a 'permissions' node with a list of permission nodes, which will
# override their group permissions. World permissions may be assigned to
# users with a 'worlds:' entry.
#
# Groups can be assigned to players and all their permissions will also be
# assigned to those players. Groups can also inherit permissions from other
# groups. Like user permissions, groups may override the permissions of their
# parent group(s). Unlike users, groups do NOT automatically inherit from
# default. World permissions may be assigned to groups with a 'worlds:' entry.
#
# The cannot-build message is configurable. If it is left blank, no message
# will be displayed to the player if PermissionsBukkit prevents them from
# building, digging, or interacting with a block. Use '&' characters to
# signify color codes.
 
users:
    ConspiracyWizard:
        permissions:
            permissions.example: true
        groups:
        - admin
groups:
    default:
        permissions:
            permissions.build: false
    admin:
        permissions:
            permissions.*: true
        inheritance:
        - user
    user:
        permissions:
            permissions.build: true
        worlds:
            creative:
                coolplugin.item: true
        inheritance:
        - default
messages:
    build: '&cYou do not have permission to build here.'
 
debug: false

noob a dit:
Y a plein de ligne au début avec des explications en anglais... C'est quoi ?
Toutes les lignes commençant par "#" sont des commentaires. Cela veut dire que le plugin n'en tient pas compte.
noob a dit:
Je peux les supprimer alors ?
Oui, si vous voulez... De toute façons, le plugin ne tient pas compte des commentaires, donc si ils ne sont pas là, cela ne change rien pour le plugin.

Bien, vous voyez que le fichier est "divisé" en 4 grandes parties : la partie "users", "groups", "messages" et "debug".
Nous n’allons pas nous occupé de la partie "users" tous simplement, car il est bien plus facile de la modifier via des commandes… Nous en reparlerons plus tard. Nous reparlerons aussi plus tard de la partie "message".
La partie débug permet d’afficher (ou non) tout ce que le plugin fait dans la console. Autant vous dire que lorsque vous activez cette fonction (changer false en true) votre console est spam de message. Je vous déconseille donc de l’activer, car elle n’a d’intérêt que pour les développeurs.
Donc pour l’instant concentrons-nous sur la partie groups.

Chaque groupe (qui sont donc dans la partie groups) sont structuré de la même façon :
Code:
    admin:
        permissions:
            permissions.*: true
        inheritance:
        - user

Aller, on décortique tout ça ;)
  • admin:
    Il s’agit du nom du groupe. Ne mettez pas d’espaces et évitez les accents.
  • permissions:
    C’est dans cette partie que nous allons écrire les permissions que le groupe a. Pour rajouter une permission, il suffit de mettre la permission suivit d’un 2 et ensuite true ou false. True donne la permissions au groupe alors que false l’interdit.
    Petit exemple :
    Code:
                essentials.spawn: true
    Ici, j’autorise le groupe à faire le /spawn du plugin essentials.
    Code:
                essentials.back: false
    Et ici, j’interdis le groupe de faire un /back aussi ajouter par le plugin essentials.
    noob a dit:
    Et on les trouve où les permissions ? Faut les connaitre par cœur ?
    Non, il ne faut pas les connaitre par cœur... Je vous donne un peu plus bas quelques liens avec la liste des permissions de certains plugins. Mais ce sera à vous de chercher les permissions des plugins que vous installez.
  • inheritance:
    Peu de personnes savent à quoi sert vraiment cette partie. Cette partie sert à hiérarchiser vos groupes. On va dire au plugin ce groupe-là à moins d'importance que ce groupe ci... Le nom de groupe que l'on va mettre dans inheritance est le groupe inférieur à celui-ci. C'est un peu flou pour vous ?
    Pas de problème, je vais prendre un exemple et vous allez comprendre.
    Prenons 3 groupes: default, membre et admin.
    Il n'y a pas de groupe "plus petit" que default. Donc cela ne sert à rien d'écrire l'inheritance. On peut supprimer la ligne inheritance.
    Membre est "au-dessus" de default. L'inheritance de membre serra donc default. Nous allons donc écrire:
    Code:
            inheritance:
            - default
    Et dans l'inheritance du groupe admin, nous allons écrire:
    Code:
            inheritance:
            - membre
    Et là:
    noob a dit:
    Ok, mais ça sert à quoi de hiérarchiser ses groupes ?
    Et bien cela va vous évitez d'écrire plusieurs fois les mêmes permissions (et donc rendre votre fichier de configuration beaucoup plus simple à lire). Imaginons que je mette la permission
    Code:
    essentials.suicide
    Au groupe default et que j'ai précisé les inheritances. Et bien le groupe membre aura automatiquement cette permission, je ne serais pas obligé de la préciser.
Voilà, il vous suffit de reprendre cette structure pour créer vos groupes. Vous pouvez en créer autant que vous voulez.
Petit conseil : l’ordre des groupes n’a pas d’importance. Mais je vous conseille de les mettre en fonction de leur inheritance. C’est dire : les groupes inférieurs au-dessus et les groupes supérieur au-dessus. Donc dans notre exemple, le premier groupe du fichier serais default et le dernier admin
noob a dit:
T’a mis plein d’espaces dans tes exemples, il servent a quelque chose ?
Oui, ils sont très importants ! Si y a 8 espaces, c’est 8 et pas 9… Faite bien attention !
noob a dit:
Dans le fichier de configuration qui c’est généré automatiquement y avais ça :
Code:
        worlds:
            creative:
                coolplugin.item: true
Ça sert à quoi ?
Et bien cela permet de mettre des permissions en fonction du monde. Regardons cela de plus près :
  • worlds:
    On dit au plugin que ce qu’on va écrire après ne va avoir impacte que sur certains mondes.
  • creative:
    Il s’agit du nom du monde.
  • coolplugin.item: true
    Cela devrait vous rappeler quelque chose non ? Il s’agit de la structure des permissions. Ici, on a donc autorisé la permission coolplugin.item: true dans le monde creative.
Imaginons que je veuille interdire la construction dans le nether pour le groupe user mais l’autoriser dans les autres mondes. Cela va nous donner :
Code:
    user:
        permissions:
            permissions.build: true
        worlds:
            world_nether:
                permissions.build: false
noob a dit:
C’est quel plugin qui "créer " la permissions : "permissions.build " ?
Et bien c’est une permission rajouté par PermissionsBukkit. Si vous voulez interdire un groupe de construire, il vous suffit de mettre cette permission avec "false " derrière. Attention, si vous interdisez cette permission, ils ne pourront construire nulle part… Même si ils sont propriétaire d’une région WorldGuard par exemple.

La partie message ne contient qu’une ligne:
Code:
    build: '&cYou do not have permission to build here.'
C’est le message qui sera affiché lorsque quelqu’un essayera de casser un bloc alors qu’il n’en a pas la permission.

4. Les commandes de PermissionsBukkit
Je ne vais pas vous donner toutes les commandes du plugin. C’est inutile… Je ne vais pas écrire ce qui est déjà écrit ici. Voici quelques commandes que vous utiliserez très souvent :
  • /permissions reload
    Cette commande permet de recharger le fichier de configuration du plugin. Pour faire vos testes, il vous suffit donc de modifier le fichier config.yml, de l’enregistrer et de taper cette commande pour pouvoir directement tester en jeu. Conseil : n’oublie pas de regarder de temps en temps dans votre fichier server.log pour vous assurer que vous n’avez pas d’erreur.
  • /permissions setrank <player> <group>
    Cette commande vous permet de dire au plugin quel joueur est dans quel groupe. Il vous suffit donc de remplacer <player> par le nom du joueur, et <group> par le nom du groupe.
5. Quelques liens utiles
SimplePrefix

1. Pourquoi SimplePrefix ?
Comme déjà expliqué précédemment dans ce tutoriel, PermissionsBukkit ne prend pas en charge les préfixes. Vous pouvez gérer cela avec EssentialsChat. Mais quand vous voulez faire des choses un petit peu plus complexe, c'est mort....

2. Le principe de SimplePrefix
SimplePrefix permet de mettre des préfixes en fonction des permissions qu'a une personne.
SimplePrefix a la capacité de vous mettre plusieurs préfixes. Par exemple, vous êtes dans le grade Admin mais vous avez un préfixe bien à vous qui est fondateur par exemple. Avec quelques balises ça pourrait ressembler à cela:
[Admin] [Fondateur] Detobel36: <message>
Vous pouvez également mettre des préfixes pour les mondes... Mais on voit ça dans le point suivant ;)

3. La configuration
Le cœur même du plugin se trouve ici. Si vous aimez l'anglais, je vous invite à lire le poste officiel (lien dans le point: "quelques liens")
Voici un exemple de configuration:
Code:
Auto-Update: true
Use-Vault: false
bungeecord: false
debug-mode: false
OPs-have-all: false
Template:
  format: '<[time] [world] [prefix][name][suffix]> '
  time: '[h:mm aa]'
  multiPrefix: false
  multiPrefixSeparator: '&r, '
  multiSuffix: false
  multiSuffixSeparator: '&r-'
Worlds:
  world:
    nickname: '&e[World]&f'
Group:
  example:
    prefix: '&a[Example]&f'
    suffix: ''
    tier: 'exampleTier'
User:
  069a79f4-44e9-4726-a5be-fca90e38aaf5:
    prefix: '&c[Notch]&f'
    suffix: ''
Allez, comme d'habitude, on va faire point par point:
  • Auto-Update
    En mettant true, vous acceptez que la plugin se mette à jour automatiquement (au démarrage si je ne dis pas de bêtises...)
  • Use-Vault
    Vault est un plugin qui gère les permissions et l'économie. Il fait le lien avec d'autres plugins. Activez cette option si vous disposez de Vault ;)
  • bungeecord
    BungeeCord est un système permettant de connecter plusieurs serveur entre eux. Bref, comme le précédent, activez cette option si vous utilisez BungeeCord
  • debug-mode
    J'ai vraiment besoin d'expliquer ? C'est le mode de débug... A ne pas activé sauf si vous voulez avoir pleins de messages inutile
  • OPs-have-all
    Est-ce que les personne "op" (diminutif de "Operator") ont toutes les permissions ?
  • Template
    C'est dans cette partie que vous allez pouvoir régler l'affichage général de votre message.
    • La partie format est l'option principale de cette partie. Dans l'exemple par défaut donné dans la config, vous avez toutes les options possibles. Une option est entouré de crochets: [ ]. Inutile d'inventer des options, les voici toutes: [time] [world] [prefix] [name] [suffix]
      Je pense que c'est assez claire, sauf peut être pour la partie "time". On en parle juste ici après.
    • Passons donc à time. En fait, vous allez pouvoir choisir ce que va afficher la balise [time]. Cette balise affiche le temps sur lequel vous vous trouvez. Vous pouvez décidez d'afficher uniquement les jours, les minutes, les heures ou tout en même temps. Avec des tirets, des espaces, des barres, ... Tout ce que vous voulez. Il y a même moyen d'afficher plus que l'heure, le jour et les minutes. Tout est repris ici: http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
      Par défaut, vous avez ceci: [h:mm aa] qui vous affiche donc entre crochet l'heure, les minutes et ensuite PM ou AM en fonction de l'heure... Par exemple, au moment où j'écris ce message, il serait affiché 10:12 AM
    • multiPrefix vous permet simplement d'autoriser ou non les préfixes multiples.
    • Si vous avez autorisé l'option ci-dessus, multiPrefixSeparator vous permet de régler le code à mettre entre 2 préfixes. Par défaut, le plugin remet à 0 la mise en page (via la balises &r) mais vous pouvez très bien mettre un ">" par exemple...
    • multiSuffix même chose que multiPrefix mais pour les suffixes
    • multiSuffixSeparator j'en ai mare d'écrire des choses évidentes... ;)
  • WorldsVoila, on a fini avec la mise en page générale. On va pouvoir passer à la mise en page en particulier. Dans cette partie vous allez pouvoir choisir de quel manière va s'afficher chaque monde. Il faut donc commencer par mettre le nom de votre monde (le même nom que le dossier à la racine de votre serveur). Imaginons que j'ai un monde RP. Cela va par exemple donner:
    Code:
     RP:
        nickname: '&6[&2&lRP&6]&f'
    Vous n'avez plus qu'a reproduire cela pour chacun de vos mondes :D
  • Group
    Un point important puis ce que c'est à la base pour ça qu'on à installé ce plugin... C'est ici que vous allez pouvoir personnaliser le préfixe de chaque groupe. Imaginons que nous voulons rajouter un préfixe au groupe "Admin". On peut par exemple faire ceci:
    Code:
    administrateur:
        prefix: '&b[&cAdministrateur&b]&f'
        suffix: ''
        tier: 'staff'
    Vous remarquerez que j'ai mis Administrateur et non Admin comme le nom du groupe. C'est tout simplement pour vous montrer qu'il n'y a pas de lien direct entre les 2. C'est bien en fonction de la permission que le préfixe sera mis. Mais on en reparle plus tard.
    Le préfixe et le suffixe, j'ai pas grand chose à vous dire, si ce n'est que vous pouvez retrouver toutes les balises codes couleur ici.
    Le tier, permet de mettre une certaines logique lorsque vous utilisez des préfixes/suffixes multiples. Vous ne pouvez pas avoir deux préfixes se trouvant dans le même "tier"
  • User
    ....
Quelques liens
Cordialement,
Detobel36
 
Le tuto est peut-être compliqué et long, mais la complexité des plugins de permissions sur Minecraft est telle, qu'il est difficilement envisageable de faire plus court et plus simple.
 
  • J'aime
Reactions: Alexcraft
En même temps, le plugin ne fait pas partie intégrante du jeu puisque c'est un ajout.
 
Salut,

Arrêter de dire que c'est complexe, vous allez faire fuite les élèves :P
Les plugins de permissions sont compliqué a prendre en main, mais une fois assis, c'est simple.

J'en profite pour m'excuser de ne pas l'avoir fini, mais je suis en vacances... Je le finirais à la rentré.


Cordialement,
Detobel36
 
Tu as raison, moi j'essaye de déconnecter un peu, pas simple:D, je peux pas vraiment passer de temps sans aider les autres *se jette des fleurs*
 
Très bon tuto, mais comment mets-on la permission suprême ? Chez moi
permission.*: true

ne marche pas ! Une idée ?

Merci d'avance

cordialement,
warnau
 
1. Mais au fait, c'est quoi PermissionsBukkit ?
Et bien PermissionsBukkit est un plugin de permissions. Il existe évidemment d'autre plugin de permissions, les plus connu étant: PermissionsEx, GroupManager et PermissionsBukkit. Les plugins de permissions permettent de créer des groupes, des rangs et de donner à ces groupes des permissions (faire des commandes, casser des blocks, ...).

Et bien le principe est le même pour les 3 plugins, mais chaque plugin à ses particularités. La particularité de PermissionsBukkit par rapport aux autres plugins de permissions est qu'il intègre un système plus intuitif pour interdire des permissions. PermissionsBukkit n'intègre pas directement le système permettant de donner des préfixes aux groupes... Il faut un plugin complémentaire (SimplePrefix), cela est un avantage mais aussi un inconvénient dans certain cas. Quoi qu'il en soit, nous reparlerons de cela plus tard.

Tu dis qu'il est plus intuitif que les autres pour "interdire" des permissions. Tu parles du fait de retirer la permission a un groupe? Comme le /help de base avec bukkit pour le /plugins?