package net.shockverse.survivalgames.core;
import java.util.Arrays;
import java.util.List;
import net.milkbowl.vault.permission.Permission;
import net.shockverse.survivalgames.SurvivalGames;
import org.bukkit.entity.Player;
import org.bukkit.plugin.RegisteredServiceProvider;
/**
* @description Handles all plugin permissions
* @author Duker02, LegitModern, Tagette
*/
public class Perms {
public static Permission permission = null;
private static SurvivalGames plugin;
public static void initialize(SurvivalGames instance) {
plugin = instance;
RegisteredServiceProvider<Permission> permissionProvider = plugin.getServer().getServicesManager().getRegistration(net.milkbowl.vault.permission.Permission.class);
if (permissionProvider != null) {
permission = permissionProvider.getProvider();
if(!plugin.getSettings().LowDetailMode)
Logger.info("'" + permission.getName() + "' vault permissions hooked into.");
}
}
public static void onOtherPluginEnable() {
RegisteredServiceProvider<Permission> permissionProvider = plugin.getServer().getServicesManager().getRegistration(net.milkbowl.vault.permission.Permission.class);
if (permissionProvider != null) {
if(permission == null || !permission.getName().equals(permissionProvider.getProvider().getName())) {
permission = permissionProvider.getProvider();
if(!Perms.plugin.getSettings().LowDetailMode)
Logger.info("'" + permission.getName() + "' vault permissions hooked into.");
}
}
}
public static void disable() {
permission = null;
}
public static Permission getHandler(){
return permission;
}
public static boolean hasHandler()
{
return permission != null;
}
public static boolean has(Player player, String perm, boolean def){
if(!hasHandler())
return def;
return permission.has(player, perm);
}
public static boolean hasAll(Player player) {
return permission.has(player, plugin.name + ".lkjhsdafkjh");
}
public static boolean hasAllGroupsIn(Player player, List<String> groups) {
boolean hasGroups = true;
List<String> playerGroups = Arrays.asList(permission.getPlayerGroups(player));
for(String group : groups) {
if(!playerGroups.contains(group)) {
hasGroups = false;
break;
}
}
return hasGroups;
}
public static boolean hasAGroupFrom(Player player, List<String> groups) {
boolean hasGroups = false;
List<String> playerGroups = Arrays.asList(permission.getPlayerGroups(player));
for(String group : groups) {
if(playerGroups.contains(group)) {
hasGroups = true;
break;
}
}
return hasGroups;
}
}