Init
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
---
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user