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

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: