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