package me.maker56.survivalgames.commands.permission;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
import me.maker56.survivalgames.SurvivalGames;
import me.maker56.survivalgames.game.Game;
import me.maker56.survivalgames.user.User;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
public class PermissionHandler {
private static boolean usePermission = SurvivalGames.instance.getConfig().getBoolean("use-permissions");
public static void reinitializeUsePermission() {
usePermission = SurvivalGames.instance.getConfig().getBoolean("use-permissions");
}
public static boolean hasPermission(CommandSender sender, Permission permission) {
if(usePermission) {
return sender.hasPermission(permission.getPermission());
} else {
if(sender.isOp()) {
return true;
} else {
return permission == Permission.JOIN || permission == Permission.LIST || permission == Permission.SPECTATE || permission == Permission.STATS;
}
}
}
// DONATOR PERMISSONS
private static List<String> joinPower;
private static HashMap<String, Integer> votePower = new HashMap<>();
public static void reinitializeDatabase() {
FileConfiguration c = SurvivalGames.instance.getConfig();
joinPower = c.getStringList("Donator-Permissions.Join-Full-Arena");
votePower.clear();
for(String key : c.getStringList("Donator-Permissions.Extra-Vote-Power")) {
try {
String[] split = key.split("//");
votePower.put(split[0], Integer.parseInt(split[1]));
} catch(NumberFormatException | ArrayIndexOutOfBoundsException e) { }
}
}
public static int getVotePower(Player p) {
int l = 1;
for(Entry<String, Integer> vote : votePower.entrySet()) {
if(p.hasPermission(vote.getKey())) {
l = vote.getValue();
}
}
return l;
}
public static User canJoin(Player p, Game game) {
int pLevel = 0;
int ii = 0;
for(String key : joinPower) {
ii++;
if(p.hasPermission(key)) {
pLevel = ii;
}
}
if(pLevel == 0)
return null;
Collections.shuffle(game.getUsers());
User lU = null;
int l = pLevel;
for(User u : game.getUsers()) {
int level = 0;
int i = 0;
for(String key : joinPower) {
i++;
if(u.getPlayer().hasPermission(key)) {
level = i;
}
}
if(level < l) {
l = level;
lU = u;
}
}
return lU;
}
}