Package me.internalizable.numdrassl.api.permission
package me.internalizable.numdrassl.api.permission
Permission system API for Numdrassl.
This package provides a flexible permission system that allows external permission plugins (like LuckPerms) to integrate with the proxy.
Core Components
Tristate- Three-state permission value (TRUE/FALSE/UNDEFINED)PermissionSubject- Interface for objects that can have permissionsPermissionFunction- Functional interface for permission checkingPermissionProvider- Interface for permission pluginsPermissionManager- Central permission management
For Plugin Developers
To check permissions on a player:
if (player.hasPermission("myplugin.command.example")) {
// Player has permission
}
// For more control over undefined permissions:
Tristate state = player.getPermissionValue("myplugin.admin");
switch (state) {
case TRUE -> // Explicitly granted
case FALSE -> // Explicitly denied
case UNDEFINED -> // Use default behavior
}
For Permission Plugin Developers
To integrate a permission plugin (like LuckPerms):
public class MyPermissionProvider implements PermissionProvider {
@Override
public PermissionFunction createFunction(PermissionSubject subject) {
// Handle non-player subjects (like console)
if (!(subject instanceof Player player)) {
return PermissionFunction.ALWAYS_TRUE;
}
return permission -> {
// Look up permission in your system
Boolean result = myPermissionSystem.check(player.getUniqueId(), permission);
return Tristate.fromNullableBoolean(result);
};
}
}
// Register in your plugin's onEnable:
Numdrassl.getProxy().getPermissionManager().setProvider(new MyPermissionProvider());
- See Also:
-
ClassDescriptionFunctional interface for checking permissions.Manages permission providers and default permission behavior.Provider interface for external permission plugins.Represents an object that can have permissions.Represents a three-state permission value.