# Permission System (Rechteverwaltung)

Das Permission-System des CorePlugins bietet eine flexible und erweiterbare Rechteverwaltung für Spieler, Gruppen und individuelle Permissions. Es ersetzt den Bukkit-Standardhandler durch ein eigenes System und bietet GUIs sowie Commands zur Verwaltung.

# Komponenten

  • PermissionManager: Setzt beim Login einen eigenen PermissionHandler für jeden Spieler und registriert Tab-Completion für Gruppen.
  • PermissionHandler: Ersetzt den Bukkit-PermissibleHandler und leitet alle Permission-Checks an das eigene System weiter.
  • PermissionPlayer: Repräsentiert einen Spieler mit Gruppe und individuellen Permissions. Persistiert über das Variables-System.
  • Group: Enum für Gruppen/Ränge inkl. Permission-Inheritance und Style.
  • Permissions: Statische Hilfsmethoden für Permission- und Gruppenabfragen.
  • PermissionCommand: ACF-Command zur Verwaltung (z.B. set-group, add/remove-permission, GUI-Öffnung).
  • PermissionGUI: GUI für Rechte- und Gruppenverwaltung.

# Quickstart

# Gruppen und Rechte

  • Gruppen werden im Enum Group definiert (z.B. SPIELER, ADMIN, OWNER).
  • Jede Gruppe hat eigene und vererbte Permissions (inkl. Negation mit !permission).
  • Spieler können einer Gruppe zugewiesen werden und individuelle Permissions erhalten.

# Permission-Check

if (Permissions.hasPermission(player, "coreplugin.feature")) {
    // Spieler hat die Permission
}

# Gruppe setzen

Permissions.setGroup(player, Group.ADMIN);

# Commands

  • /perms – Öffnet die GUI zur Rechteverwaltung für einen Spieler
  • /perms set-group <Spieler> <Gruppe> – Setzt die Gruppe
  • /perms add-permission <Spieler> <Permission> – Fügt individuelle Permission hinzu
  • /perms remove-permission <Spieler> <Permission> – Entfernt individuelle Permission

# GUI

  • Rechteverwaltung und Gruppenwahl per Inventar-GUI (PermissionGUI)
  • Anzeige von Kopf, Gruppe, individuellen Permissions
  • Click-Handler für Permission-Entfernung und Gruppenwechsel

# Technische Hinweise

  • Permissions werden persistent im Variables-System gespeichert
  • Beim Login wird der Bukkit-PermissibleHandler durch den eigenen Handler ersetzt
  • Gruppen und Permissions können zur Laufzeit geändert werden
  • Tab-Completion für Gruppen ist integriert

# Beispiel: Gruppenstruktur

enum Group {
    SPIELER(1, "Spieler", ...),
    ADMIN(2, "Admin", ...),
    OWNER(3, "Owner", ...);
}

# Erweiterung

  • Neue Gruppen können im Enum Group ergänzt werden
  • Eigene Permissions können über das Command oder direkt per API vergeben werden
  • GUI und Command sind modular und können erweitert werden

# Siehe auch

  • PermissionManager.java
  • PermissionHandler.java
  • PermissionPlayer.java
  • PermissionCommand.java
  • PermissionGUI.java
  • Group.java
  • Permissions.java