Suite à l'arrêt du projet Permissions (RIP), les développeurs de Bukkit nous ont pondu avec la sortie de bukkit build 1000, un système de Permissions bien nommé "PermissionsBukkit".
Ce tout nouveau système de permissions est voué à devenir le standard au milieu des autres plus méconnus par rapport à Permissions comme GroupManager ou encore PEX.
Côté fonctionnement, il est assez semblable à Permissions mais je vais essayer de vous initier à sa configuration et ses fonctionnalités intéressantes.
Nous verrons également comment configurer un équivalent iChat pour la coloration des messages, vous comprendrez vite pourquoi cette parenthèse ;)
Note importante
Je ne savais pas ou mettre cette note mais il m'apparaît important d'apporter une précision avant de vous lancer dans les permissions quelles qu'elles soient.
La syntaxe d'un fichier .yml est très simple mais malgré tout précise. Il n'est pas rare qu'une simple erreur fasse planter tout un serveur.
Un conseil : soyez précis !
La syntaxe s'articule toujours sur le même principe :
ELEMENT1: SOUS-ELEMENT1: ATTRIBUT1: true ATTRIBUT2: false ELEMENT2: SOUS-ELEMENT2: ATTRIBUT1: true ATTRIBUT2: false
Téléchargement
Vous trouverez les téléchargements nécessaires sur le post officiel :
http://forums.bukkit.org/threads/admn-dev-permissionsbukkit-v1-2k-official-default-groups-plugin-1000.26785/
Vous aurez 2 fichiers .jar :
PermissionsBukkit.jar
= le plugin en lui-mêmeSuperPermBridge.jar
= plugin faisant littéralement le "pont" entre les plugins faits pour l'ancien Permissions et PermissionsBukkit (aussi appelé SuperPerm)
Installation
Uploadez dans le dossier plugins
de votre serveur les 2 .jar puis redémarrez votre serveur.
NB: Veillez bien entendu à désinstaller tout autre plugin de permissions quel qu'il soit pour évidemment éviter les conflits !
Configuration
Rentrons dans le vif du sujet ! En theorie, votre ami PermissionsBukkit, en démarrant, vous a pondu une première configuration d'exemple stockée dans plugins/PermissionsBukkit/config.yml
.
Déjà première chose à savoir, PermissionsBukkit a ses propres permissions. Et là vous allez me dire : mais pourquoi ??? Tout simplement car celui-ci vous permet de gérer pas mal de choses directement via les commandes.
Lexique des permissions de PermissionsBukkit :
permissions.build - Autoriser un joueur à build. Par defaut sur "true". permissions.help - Autoriser l'utilisation de /permissions permissions.reload - Autoriser l'utilisation de /permissions reload permissions.check - Autoriser l'utilisation de /permissions check permissions.info - Autoriser l'utilisation de /permissions info permissions.dump - Autoriser l'utilisation de /permissions dump permissions.group.help - Autoriser l'utilisation de /permissions group permissions.group.list - Autoriser l'utilisation de /permissions group list permissions.group.players - Autoriser l'utilisation de /permissions group players permissions.group.setperm - Autoriser l'utilisation de /permissions group setperm permissions.group.unsetperm - Autoriser l'utilisation de /permissions group unsetperm permissions.player.help - Autoriser l'utilisation de /permissions player permissions.player.groups - Autoriser l'utilisation de /permissions player groups permissions.player.setgroup - Autoriser l'utilisation de /permissions player setgroup permissions.player.addgroup - Autoriser l'utilisation de /permissions player addgroup permissions.player.removegroup - Autoriser l'utilisation de /permissions player removegroup permissions.player.setperm - Autoriser l'utilisation de /permissions player addgroup permissions.player.unsetperm - Autoriser l'utilisation de /permissions player removegroup
Lexique des permissions simplifiées :
permissions.* - Permet de définir les permissions .help, .reload, .check, .info, .dump et également permissions.group.* et permissions.player.* (par defaut pour un OP) permissions.group.* - Permet de définir les permissions group.help, .list, .players, .setperm, et .unsetperm. permissions.player.* - Permet de définir les permissions .player.help, .groups, .setgroup, .addgroup, .removegroup, .setperm, et .unsetperm
Lexique des commandes PermissionsBukkit :
/permissions reload - recharge de la configuration depuis le disque. /permissions check [player] - vérifier si le joueur a une permissions précise /permissions info - affiche les informations sur une permissions spécifique /permissions dump [player] [page] - affiche toutes les permissions d'un utilisateur (page = n° de la page) /permissions group - afficher la liste des commandes /permissions group /permissions group list - afficher la liste des groupes /permissions group players - afficher la liste des joueurs d'un groupe /permissions group setperm <[world:]node> [true|false] - définir une permission pour un groupe /permissions group unsetperm <[world:]node> - supprimer la permission d'un groupe /permissions player - afficher la liste des commandes /permissions player /permissions player groups - afficher les groupes d'un joueur /permissions player setgroup - définir un groupe unique à un joueur /permissions player addgroup - ajouter un joueur à un groupe /permissions player removegroup - supprimer un joueur d'un groupe /permissions player setperm <[world:]node> [true|false] - définir une permissions pour un joueur /permissions player unsetperm <[world:]node> - supprimer une permission d'un joueur
Ok donc maintenant qu'on a tout ça, on peut commencer à définir notre premier utilisateur qui servira d'administrateur principal.
En reprenant l'exemple donné par le plugin, on a ça :
users: mtxserv: groups: - admin lambda: groups: - user espion: groups: debug: false groups: default: permissions: permissions.build: false admin: permissions: permissions.*: true superpermbridge.*: true inheritance: - user user: permissions: permissions.build: true inheritance: - default messages: build: '&cVous n avez pas le droit de construire ici !'
mtxserv
est donc membre du groupe "admin". Il peut exécuter toutes les commandes /permissions mais est aussi admin de presque tous les plugins (nous verrons ci après pourquoi).lambda
est membre du groupe "user" qui n'a que le droit de "build"espion
n'a pas de groupe et sera donc membre du groupe par défaut nommé "default", il n'a pas la permission de "build"
Pourquoi "mtxserv" est admin de presque tous les plugins ?
Rappelez-vous, dans Permissions, vous aviez la permissions magique '*' qui vous permettait de donner tous les droits à un utilisateur ou un groupe.
Ici le principe n'existe plus, il faudra donc donner un droit de maîtriser chaque plugin en entier via la permission type :
nomduplugin.*: true
Pourquoi superpermbridge.* met des droits sur plusieurs plugins ?
SuperPermBridge permet de faire "pont" avec les plugins compatibles Permissions 2.X/3.X, en mettant cette permission spéciale, vous donnez tous les droits sur tous ces plugins.
Cependant, mieux vaut vous habituer dès maintenant à vous en passer, en mettant par exemple pour Essentials :
superpermbridge.essentials.*: true
Comment je fais pour mettre les permissions d'un vieux plugin alors ?
Reprenons le cas d'Essentials, pour ajouter la permission pour la commande /spawn, dans la documentation officielle faite pour l'ancien Permissions, vous aviez :
essentials.spawn
superpermbridge.essentials.spawn: true
superpermbridge.vieillepermission: true
Comment faire ces manipulations via les commandes ?
Déjà, le premier pré-requis est d'avoir les permissions pour le faire donc permissions.* idéalement.
Exemple :
On veut mettre lambda
dans le groupe user
, on crée d'abord le groupe en éditant le fichier config.yml
(oui car pas encore de commande pour le faire...).
Ensuite :
permissions player setgroup lambda user
/permissions group setperm user permissions.build
Comment fait-on pour gérer les permissions par monde ?
Contrairement à l'ancien Permissions, tout se passe dans le dossier config.yml ! A noter que lorsque vous mettez une permission via commande, vous pouvez définir le "world" si jamais vous ne souhaitez l'appliquer que dans un world spécifique. Petit exemple, toujours avec notre ami "lambda", on veut lui mettre la commande /spawn d'Essentials seulement dans "world2". Faisons le directement sur son groupe :
/permissions group setperm user world2:superpermbridge.essentials.spawn
Si vous souhaitez le mettre seulement pour le joueur "lambda" :
/permissions player setperm lambda world2:superpermbridge.essentials.spawn
Au final ça nous donne pour la partie groupe :
groups: default: permissions: permissions.build: false admin: permissions: permissions.*: true superpermbridge.*: true inheritance: - user user: permissions: permissions.build: true worlds: world2: superpermbridge.essentials.spawn: true inheritance: - default
On distingue bien les permissions globales sur le serveur pour le groupe user
avec donc le droit de build et la permissions essentials.spawn
uniquement dans world2
.
Voici donc pour les bases comme il faut procéder pour configurer vos permissions :)
mChat : votre partenaire couleur
Ce plugin reprend le principe du célèbre iChat pour colorer votre chat en fonction des groupes de Permissions. Les préfixe et suffixe n'étant plus dans les permissions, il n'est pas compatible avec PermissionsBukkit.
La solution : mChat ! Vous allez le voir, mChat est pleinement compatible. Au niveau des permissions, pas de préfixe "superpermbridge." à inclure :)
Lien vers le topic officiel : http://forums.bukkit.org/threads/chat-mchat-v1-7-11-1-chat-formatting-plugin-1060.22958/
Téléchargez mChat.jar puis envoyez le dans votre répertoire plugins. Redémarrez ensuite votre serveur.
Une fois le serveur relancé, vous aurez sur votre FTP un dossier mChat dans plugins contenant config.yml
et info.yml
Intéressons-nous à info.yml
qui va être le fichier dans lequel vous configurez vos préfixes/suffixes. Exemple concret d'utilisation, toujours sur le modèle des groupes précédemment créés (rappelez-vous, nous avions default
, user
et admin
).
groupnames: admin: 'admin' user: 'user' default: 'default' mchat: custVar: prefix: admin: '&7[ADMIN]' user: '&7[User]' default: '&7[Visiteur]' suffix: worldnames: world: '[world]' world2: '[world2]'
On a donc les préfixes avec une couleur. Pour chaque groupe, ajoutez bien ce qu'il faut :)
Intéressons-nous maintenant au config.yml
de mChat avec un exemple de formattage de message chat en prenant la ligne qui nous intéresse :
mchat-message-format: '+hb +p &f+n: +message'
Dans l'exemple ci-dessus, la couleur &7
provient du préfixe du groupe admin
, puis on met un &f
avant +n pour afficher le pseudo du joueur ainsi que le message en blanc.
En ce qui concerne le formatage, voici les quelques petits alias de mChat :
+healthbar ou +hb = hp bar, barre de vie du joueur +health ou +h = hp restants +suffix ou +s = suffixe du groupe +prefix ou +p = préfixe du groupe +group ou +g = nom du groupe +world ou +w = nom de la map +time ou +t = heure sur la map +name ou +n = pseudo du joueur +dname ou +dn = nom du joueur pour message départ/arrivée +message ou +msg ou +m = message
Petite particularité de mchat, pour qu'un groupe affiche correctement le préfixe ou suffixe, il faut lui en donner la permission. C'est assez curieux mais nécessaire. Pour notre utilisateur "mtxserv", on va ajouter la permission mchat.prefix.admin: true au groupe admin :
/permissions group setperm admin mchat.prefix.admin
On aura donc maintenant :
groups: default: permissions: permissions.build: false admin: permissions: permissions.*: true superpermbridge.*: true mchat.prefix.admin: true inheritance: - user user: permissions: permissions.build: true worlds: world2: superpermbridge.essentials.spawn: true inheritance: - default
Globalement, la permission pour faire fonctionner un préfixe :
mchat.prefix.NOMDUGROUPE: true
Si vous souhaitez utiliser les suffixes, procédez de même à savoir la permission :
mchat.suffix.NOMDUGROUPE: true
Conclusion
J'espère que ce tutoriel vous aura permis de migrer votre serveur sur PermissionsBukkit et de colorer un peu votre serveur.
Si vous avez le moindre problème ou suggestion concernant ce tutoriel, n'hésitez pas ;)