Files
Documentation/content/core-concepts/events/event-reference/permission-events.fr.md
2026-01-20 20:33:59 +01:00

2.5 KiB

title, type, weight
title type weight
Événements Permission docs 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.

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

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

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

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);
        }
    }
}