SudoContextCalculator.java
package team.aura_dev.aurasudo.platform.common.context;
import lombok.RequiredArgsConstructor;
import net.luckperms.api.context.ContextCalculator;
import net.luckperms.api.context.ContextConsumer;
import net.luckperms.api.context.ContextSet;
import net.luckperms.api.context.ImmutableContextSet;
import org.checkerframework.checker.nullness.qual.NonNull;
import team.aura_dev.aurasudo.api.player.PlayerData;
import team.aura_dev.aurasudo.api.player.PlayerManager;
@RequiredArgsConstructor
public class SudoContextCalculator implements ContextCalculator<Object> {
public static final String CONTEXT_SUDO = "sudo";
protected final PlayerManager playerManager;
protected final int maxSudoLevel;
@Override
public void calculate(@NonNull Object target, @NonNull ContextConsumer consumer) {
final PlayerData data = playerManager.fromNativePlayer(target);
if (data == null) return;
consumer.accept(CONTEXT_SUDO, Integer.toString(data.getSudoLevel()));
}
@Override
public ContextSet estimatePotentialContexts() {
ImmutableContextSet.Builder builder = ImmutableContextSet.builder();
for (int i = 0; i <= maxSudoLevel; i++) builder.add(CONTEXT_SUDO, Integer.toString(i));
return builder.build();
}
}