HyCodeYourTale

Permissions

Permissions

Dokumentace k permission systému v Hytale.

Obsah

| Soubor | Popis |
|--------|-------|
| PERMISSION_SYSTEM.md | Kompletní permission systém - HytalePermissions, PermissionsModule, matching, providery |
| PERMISSION_CHECKS.md | Kontrola oprávnění - v příkazech, dynamická kontrola, eventy |

---

Rychlý Přehled

Základní Použití

public class AdminCommand extends CommandBase {
public AdminCommand() {
super("admin", "myplugin.commands.admin.desc");

// Vyžaduj oprávnění
this.requirePermission(HytalePermissions.fromCommand("admin"));
}
}

Dynamická Kontrola

if (playerRef.hasPermission("myplugin.admin")) {
// Admin funkce
}

if (context.hasPermission("myplugin.premium")) {
// Premium funkce
}

---

Struktura Systému

PermissionsModule (singleton)
├── PermissionProvider[] - zdroje oprávnění
│ ├── getUserPermissions(uuid) - uživatelská oprávnění
│ ├── getGroupPermissions(group) - skupinová oprávnění
│ └── getGroupsForUser(uuid) - skupiny uživatele

└── virtualGroups - dynamické skupiny (např. GameMode)

---

Permission Matching

| Pattern | Význam |
|---------|--------|
| * | Všechna oprávnění |
| -* | Žádná oprávnění |
| hytale.command.* | Všechny příkazy |
| -hytale.command.spawn | Negace konkrétního oprávnění |
| myplugin.* | Všechna oprávnění pluginu |

---

HytalePermissions

// Konstanty
HytalePermissions.NAMESPACE // "hytale"
HytalePermissions.COMMAND_BASE // "hytale.command"

// Factory metody
HytalePermissions.fromCommand("spawn") // "hytale.command.spawn"
HytalePermissions.fromCommand("spawn", "self") // "hytale.command.spawn.self"

---

Eventy

| Event | Kdy |
|-------|-----|
| PlayerPermissionChangeEvent.PermissionsAdded | Přidána oprávnění |
| PlayerPermissionChangeEvent.PermissionsRemoved | Odebrána oprávnění |
| PlayerPermissionChangeEvent.GroupAdded | Přidán do skupiny |
| PlayerPermissionChangeEvent.GroupRemoved | Odebrán ze skupiny |
| GroupPermissionChangeEvent.Added | Skupina získala oprávnění |
| GroupPermissionChangeEvent.Removed | Skupina ztratila oprávnění |

---

Hierarchie Oprávnění

myplugin.*                    # Všechna oprávnění pluginu
├── myplugin.admin # Admin oprávnění
└── myplugin.command.* # Všechny příkazy
├── myplugin.command.spawn # /spawn příkaz
│ ├── myplugin.command.spawn.self # /spawn (sebe)
│ └── myplugin.command.spawn.other # /spawn
└── myplugin.command.warp.* # Všechny warp příkazy
├── myplugin.command.warp.go # /warp
├── myplugin.command.warp.set # /warp set
└── myplugin.command.warp.delete # /warp delete

---

Shrnutí

| Metoda | Kde | Použití |
|--------|-----|---------|
| requirePermission(perm) | Konstruktor | Vyžadovat oprávnění pro příkaz |
| context.hasPermission(perm) | executeSync | Dynamická kontrola |
| playerRef.hasPermission(perm) | Kdekoliv | Kontrola přes PlayerRef |
| perms.hasPermission(uuid, perm) | Kdekoliv | Kontrola přes UUID |

| Operace | Metoda |
|---------|--------|
| Přidání user perm | addUserPermission(uuid, Set.of(...)) |
| Odebrání user perm | removeUserPermission(uuid, Set.of(...)) |
| Přidání do skupiny | addUserToGroup(uuid, groupName) |
| Odebrání ze skupiny | removeUserFromGroup(uuid, groupName) |

Last updated: 20. ledna 2026