package nl.sugcube.crystalquest.game; import nl.sugcube.crystalquest.CrystalQuest; import org.bukkit.entity.Player; import java.util.List; /** * @author SugarCaney */ public class Classes { public static CrystalQuest plugin; public Classes(CrystalQuest instance) { plugin = instance; } /** * Checks if a player has permission to pick a certain class. * * @param player * (Player) The player to check for. * @param Class * (String) The technical (config-section) name of the class. * @return (boolean) True if he/she has permission, false if not. */ public static boolean hasPermission(Player player, String Class) { //Checks if the class is Arena-bounded. if (plugin.getArenaManager().isInGame(player)) { Arena a = plugin.getArenaManager().getArena(player.getUniqueId()); String arenaName = a.getName(); if (plugin.getConfig().isSet("kit." + Class + ".arenas")) { List<String> arenas = plugin.getConfig().getStringList("kit." + Class + ".arenas"); //Checks if the list does contain only of "negative"-arenas. boolean isOnlyIgnore = true; for (String str : arenas) { if (!str.startsWith("-")) { isOnlyIgnore = false; } } if (!isOnlyIgnore) { //Fires when there are normal nodes avaiable for (String s : arenas) { if (s.equalsIgnoreCase("-" + arenaName)) { return false; } if (s.equalsIgnoreCase(arenaName)) { return true; } } return false; } else { //Fires when only "negative"-arenas are avaiable for the class for (String s : arenas) { if (s.equalsIgnoreCase("-" + arenaName)) { return false; } } } } } //Checks if a player has the permission node for the class. if (player.hasPermission("crystalquest.kit." + Class) || player.hasPermission("crystalquest.admin") || player.hasPermission("crystalquest.staff") || player.hasPermission("crystalquest.kit.*")) { return true; } if (plugin.getData().getStringList("economy.classes." + player.getName()).contains(Class)) { return true; } //If none apply, return false. return false; } }