Class PermissionHandler

java.lang.Object
com.bencodez.advancedcore.api.permissions.PermissionHandler

public class PermissionHandler extends Object
Central permission manager handling temporary and persistent permissions.

Permissions are tracked by UUID and re-applied on login to avoid Bukkit PermissionAttachment loss on logout.

Timed permissions are stored on disk as an absolute expiration timestamp (epoch millis).

  • Constructor Details

  • Method Details

    • addPermission

      public void addPermission(org.bukkit.entity.Player player, String permission)
    • addPermission

      public void addPermission(org.bukkit.entity.Player player, String permission, com.bencodez.simpleapi.time.ParsedDuration duration)
      Adds a timed permission for a duration.
      Parameters:
      player - Player
      permission - Permission node(s), split by "|"
      duration - Duration to keep the permission for
    • addPermission

      public void addPermission(org.bukkit.entity.Player player, String permission, long seconds)
      Backwards-compatible: seconds-based API.
    • addPermission

      public void addPermission(UUID uuid, String permission)
    • addPermission

      public void addPermission(UUID uuid, String permission, com.bencodez.simpleapi.time.ParsedDuration duration)
      Adds a timed permission for a duration.
      Parameters:
      uuid - Player UUID
      permission - Permission node(s), split by "|"
      duration - Duration to keep the permission for
    • addPermission

      public void addPermission(UUID uuid, String permission, long seconds)
      Backwards-compatible: seconds-based API.
    • login

      public void login(org.bukkit.entity.Player player)
      Call on PlayerJoinEvent.

      Ensures the player has a fresh attachment and re-applies all stored perms.

    • logout

      public void logout(org.bukkit.entity.Player player)
      Call on PlayerQuitEvent and PlayerKickEvent.

      Detaches the Bukkit attachment but preserves state so permissions re-apply next login.

    • removePermission

      public void removePermission(UUID uuid)
    • removePermission

      public void removePermission(UUID uuid, String playerName, String permission)
      Removes one or more permissions (split by "|") from a specific player.

      This works for both online and offline cached handlers.

      Parameters:
      uuid - Player UUID
      playerName - Player name (debug/logging only; may be null)
      permission - Permission node(s), split by "|"
    • shutDown

      public void shutDown()
      Persists timed permissions for both online + offline handlers.