package com.leontg77.uhc.utils; import static com.leontg77.uhc.Main.plugin; import java.io.File; import org.bukkit.entity.Player; import org.bukkit.permissions.PermissionAttachment; import com.leontg77.uhc.Main; import com.leontg77.uhc.User; import com.leontg77.uhc.User.Rank; /** * Permissions utilities class. * <p> * Contains perms related methods. * * @author LeonTG77 */ public class PermsUtils { /** * Handle the permissions for the given player. * * @param player the player. */ public static void addPermissions(Player player) { File folder = new File(plugin.getDataFolder() + File.separator + "users" + File.separator); boolean found = false; if (folder.exists()) { for (File file : folder.listFiles()) { if (file.getName().substring(0, file.getName().length() - 4).equals(player.getUniqueId().toString())) { found = true; break; } } } if (!found) { return; } if (Main.permissions.get(player.getName()) == null) { Main.permissions.put(player.getName(), player.addAttachment(Main.plugin)); } PermissionAttachment perm = Main.permissions.get(player.getName()); User user = User.get(player); Rank rank = user.getRank(); if (rank == Rank.USER) { return; } if (rank == Rank.ADMIN) { player.setOp(true); return; } perm.setPermission("uhc.spectate", true); perm.setPermission("uhc.prelist", true); if (rank == Rank.STAFF || rank == Rank.TRIAL || rank == Rank.HOST) { perm.setPermission("uhc.ban", true); perm.setPermission("uhc.broadcast", true); perm.setPermission("uhc.fly", true); perm.setPermission("uhc.info", true); perm.setPermission("uhc.invsee", true); perm.setPermission("uhc.kick", true); perm.setPermission("uhc.mute", true); perm.setPermission("uhc.pvp", true); perm.setPermission("uhc.scenario", true); perm.setPermission("uhc.sethealth", true); perm.setPermission("uhc.setmaxhealth", true); perm.setPermission("uhc.spectate", true); perm.setPermission("uhc.seemsg", true); perm.setPermission("uhc.cmdspy", true); perm.setPermission("uhc.staff", true); perm.setPermission("uhc.admin", true); perm.setPermission("uhc.team", true); perm.setPermission("uhc.tempban", true); perm.setPermission("uhc.info", true); perm.setPermission("uhc.tp", true); perm.setPermission("uhc.whitelist", true); if (rank == Rank.TRIAL || rank == Rank.HOST) { perm.setPermission("uhc.clearinv", true); perm.setPermission("uhc.clearxp", true); perm.setPermission("uhc.clearinv.other", true); perm.setPermission("uhc.clearxp.other", true); perm.setPermission("uhc.setmaxhealth", true); perm.setPermission("uhc.arena", true); perm.setPermission("uhc.heal.other", true); perm.setPermission("uhc.feed.other", true); perm.setPermission("uhc.heal", true); perm.setPermission("uhc.feed", true); perm.setPermission("uhc.sethealth", true); perm.setPermission("uhc.scenario", true); perm.setPermission("uhc.clearinv", true); perm.setPermission("uhc.gamemode", true); perm.setPermission("uhc.clearxp", true); perm.setPermission("uhc.giveall", true); perm.setPermission("uhc.spread", true); perm.setPermission("uhc.random", true); perm.setPermission("uhc.border", true); perm.setPermission("uhc.config", true); perm.setPermission("uhc.random", true); perm.setPermission("uhc.start", true); perm.setPermission("uhc.board", true); perm.setPermission("uhc.vote", true); perm.setPermission("uhc.heal", true); perm.setPermission("uhc.world", true); perm.setPermission("uhc.pregen", true); perm.setPermission("uhc.end", true); perm.setPermission("uhc.feed", true); if (rank == Rank.HOST) { perm.setPermission("uhc.skull", true); perm.setPermission("uhc.speed", true); perm.setPermission("uhc.invsee", true); perm.setPermission("uhc.unban", true); perm.setPermission("uhc.spectate.other", true); } } } } /** * Handle the permissions for the given player if he leaves. * * @param player the player. */ public static void removePermissions(Player player) { if (Main.permissions.get(player.getName()) == null) { return; } try { player.removeAttachment(Main.permissions.get(player.getName())); } catch (Exception e) { // uhh...? } Main.permissions.remove(player.getName()); } }