---
title: Événements Permission
type: docs
weight: 4
---

Événements liés à la vérification et gestion des permissions.

## PermissionCheckEvent

Déclenché quand une permission est vérifiée pour un joueur.

```java
getEventRegistry().register(PermissionCheckEvent.class, event -> {
    String permission = event.getPermission();
    Player player = event.getPlayer();

    // Overrider le résultat de permission
    if (permission.startsWith("vip.") && isVIP(player)) {
        event.setResult(true);
    }
});
```

| Méthode | Retourne | Description |
|---------|----------|-------------|
| `getPlayer()` | `Player` | Joueur vérifié |
| `getPermission()` | `String` | Noeud de permission |
| `getResult()` | `boolean` | Résultat actuel |
| `setResult(boolean)` | `void` | Overrider le résultat |

## Cas d'Utilisation

### Logique de Permission Personnalisée

```java
getEventRegistry().register(PermissionCheckEvent.class, event -> {
    String permission = event.getPermission();
    Player player = event.getPlayer();

    // Accorder toutes les permissions aux admins
    if (isServerAdmin(player)) {
        event.setResult(true);
        return;
    }

    // Vérifier une source de permissions personnalisée
    if (customPermissions.hasPermission(player.getUuid(), permission)) {
        event.setResult(true);
    }
});
```

### Logging des Permissions

```java
getEventRegistry().register(PermissionCheckEvent.class, event -> {
    getLogger().fine(String.format(
        "Vérification permission : %s pour %s = %s",
        event.getPermission(),
        event.getPlayer().getName(),
        event.getResult()
    ));
});
```

### Permissions Temporaires

```java
public class TempPermPlugin extends JavaPlugin {

    private final Map<UUID, Set<String>> tempPerms = new HashMap<>();

    @Override
    public void start() {
        getEventRegistry().register(PermissionCheckEvent.class, event -> {
            UUID uuid = event.getPlayer().getUuid();
            Set<String> perms = tempPerms.get(uuid);

            if (perms != null && perms.contains(event.getPermission())) {
                event.setResult(true);
            }
        });
    }

    public void grantTemp(UUID player, String permission) {
        tempPerms.computeIfAbsent(player, k -> new HashSet<>())
            .add(permission);
    }

    public void revokeTemp(UUID player, String permission) {
        Set<String> perms = tempPerms.get(player);
        if (perms != null) {
            perms.remove(permission);
        }
    }
}
```
