package fr.Alphart.BAT.Utils;
import java.util.Collection;
import lombok.RequiredArgsConstructor;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Plugin;
/**
* Provide a clean way to support both version of BungeePerms
*/
public class BPInterfaceFactory{
public static PermissionProvider getBPInterface(final Plugin bpPlugin){
if(bpPlugin instanceof net.alpenblock.bungeeperms.BungeePerms){
return new BungeePermsV2((net.alpenblock.bungeeperms.BungeePerms) bpPlugin);
}else if(bpPlugin instanceof net.alpenblock.bungeeperms.platform.bungee.BungeePlugin){
return new BungeePermsV3((net.alpenblock.bungeeperms.platform.bungee.BungeePlugin) bpPlugin);
}
throw new RuntimeException("BungeePerms version not supported !");
}
public interface PermissionProvider{
public Collection<String> getPermissions(final CommandSender sender);
}
@RequiredArgsConstructor
static class BungeePermsV3 implements PermissionProvider{
private final net.alpenblock.bungeeperms.platform.bungee.BungeePlugin bpPlugin;
@Override
public Collection<String> getPermissions(CommandSender sender) {
return bpPlugin.getBungeeperms().getPermissionsManager().getUser(sender.getName()).getEffectivePerms();
}
}
@RequiredArgsConstructor
static class BungeePermsV2 implements PermissionProvider{
private final net.alpenblock.bungeeperms.BungeePerms bpPlugin;
@Override
public Collection<String> getPermissions(CommandSender sender) {
return bpPlugin.getPermissionsManager().getUser(sender.getName()).getEffectivePerms();
}
}
}