> For the complete documentation index, see [llms.txt](https://doc-werewolfapi.ph1lou.fr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc-werewolfapi.ph1lou.fr/creer-un-role.md).

# Créer un rôle

## Structures

Un rôle est égal à une classe. Si c'est un rôle Loup Garou, il doit étendre de **RoleWereWolf,** si c'est un rôle Villageois, il doit étendre de **RoleImpl** et si c'est un rôle Neutre de **RoleNeutral**.&#x20;

```java
@Role(key = "your_addon_key.role.role_example.display",
        category = Category.WEREWOLF, attributes = RoleAttribute.VILLAGER)
public class RoleExample extends RoleWereWolf {

    @Override
    public @NotNull String getDescription() {
            return new DescriptionBuilder(this.game,this)
                .setDescription(this.game.translate("werewolf.mon_addon_trop_bien.roles.role_example.description"));
    }
    
    @Override
    public void recoverPower() {
        //Pouvoir lors de la récupération du rôle, hors items et effets de potion
    }
    
    @Override
    public void recoverPotionEffect() {
         //Effet de potion à la récupération du rôle
    }
    
}

```

La méthode getDescription est utilisé lorsque la description de ce rôle est demandée. DescriptionBuilder est un utilitaire permettant de mettre en forme sa description.&#x20;

{% hint style="danger" %}
Vous ne devez jamais utiliser le Player de Bukkit dans votre classe rôle. Faites this.getPlayerWW() pour récupérer le joueur qui a ce rôle dans la classe.
{% endhint %}

La méthode recoverPower est appelée à l'annonce des rôles et concerne tout les pouvoir qu'un rôle peut avoir hors effets de potions. (exemples : coeurs en plus, commande a effectuée avant x minutes, ...)

La méthode recoverPotionEffect est appelée à l'annonce des rôles et concerne tout les effets de potions qu'un rôle peut avoir.

{% hint style="info" %}
Une classe de rôle implement les Listener de spigot, vous pouvez donc écouter des events dans votre classe.
{% endhint %}

### Ajouter des items pour votre rôle à l'annonce des rôles

Pour enregistrer du stuff dans le dossier ressource du plugin créer un fichier stuffMeetUp.yml et stuffRole.yml Dans vos .yml mettez (par exemple) :

```yaml
"your_addon_key.role.protector.display":
  '0':
    ==: org.bukkit.inventory.ItemStack
    type: POTION
    damage: 16389
    amount: 3
 '1': etc...
```

le StuffRole sera chargé par défault et le MeetUp lors de l'appuie sur le bouton MeetUp dans le Menu des stuffs.

{% hint style="info" %}
Vous pouvez générer ces fichier via le GUI directement, shift-click sur votre rôle puis stuff. Et pour l'enregistrer menu Save, enregistrer. Le stuff sera dans le dossier plugins/WereWolfPlugin/stuffs
{% endhint %}

### Enregistrer un rôle

A l'aide de l'annotation @Role au dessus de la classe de votre rôle

```java
@Role(key = "your_addon_key.role.role_example.display",
        category = Category.WEREWOLF, attributes = RoleAttribute.VILLAGER)
```

{% hint style="warning" %}
Les rôles enregistré doivent avoir le même package parent que le Main du plugin.
{% endhint %}

### Rôle exemple :

<https://github.com/Ph1Lou/addRoleExample>
