public boolean setGroupFlag( Player player, String group, String flag, String flagstate, boolean resadmin) { group = group.toLowerCase(); if (validFlagGroups.containsKey(flag)) return this.setFlagGroupOnGroup(player, flag, group, flagstate, resadmin); FlagState state = FlagPermissions.stringToFlagState(flagstate); if (checkCanSetFlag(player, flag, state, false, resadmin)) { if (Residence.getPermissionManager().hasGroup(group)) { ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent( residence, player, flag, ResidenceFlagChangeEvent.FlagType.GROUP, state, group); Residence.getServ().getPluginManager().callEvent(fc); if (fc.isCancelled()) return false; if (super.setGroupFlag(group, flag, state)) { player.sendMessage( ChatColor.GREEN + Residence.getLanguage() .getPhrase("FlagSet", flag + "|" + residence.getName() + "|" + flagstate)); return true; } } else { player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidGroup")); return false; } } return false; }
public static ResidencePermissions load(ClaimedResidence res, Map<String, Object> root) throws Exception { ResidencePermissions newperms = new ResidencePermissions(res); // newperms.owner = (String) root.get("Owner"); if (root.containsKey("OwnerUUID")) { newperms.ownerUUID = UUID.fromString((String) root.get("OwnerUUID")); // get owner UUID // String name = Residence.getPlayerName(newperms.ownerUUID); //try to find the current name // of the owner newperms.ownerLastKnownName = (String) root.get("OwnerLastKnownName"); // otherwise load last known name from file if (newperms.ownerLastKnownName.equalsIgnoreCase("Server land") || newperms.ownerLastKnownName.equalsIgnoreCase(Residence.getServerLandname())) { newperms.ownerUUID = UUID.fromString(Residence.getServerLandUUID()); // UUID for server land newperms.ownerLastKnownName = Residence.getServerLandname(); } else if (newperms .ownerUUID .toString() .equals(Residence.getTempUserUUID())) // check for fake UUID { UUID realUUID = Residence.getPlayerUUID( newperms .ownerLastKnownName); // try to find the real UUID of the player if possible now if (realUUID != null) newperms.ownerUUID = realUUID; } } else if (root.containsKey("Owner")) // convert old owner name save format into uuid format { String owner = (String) root.get("Owner"); newperms.ownerLastKnownName = owner; newperms.ownerUUID = Residence.getPlayerUUID(owner); if (newperms.ownerUUID == null) newperms.ownerUUID = UUID.fromString( Residence .getTempUserUUID()); // set fake UUID until we can find real one for last known // player } else { newperms.ownerUUID = UUID.fromString( Residence .getServerLandUUID()); // cant determine owner name or UUID... setting zero UUID // which is server land newperms.ownerLastKnownName = Residence.getServerLandname(); } newperms.world = (String) root.get("World"); FlagPermissions.load(root, newperms); if (newperms.getOwner() == null || newperms.world == null || newperms.playerFlags == null || newperms.groupFlags == null || newperms.cuboidFlags == null) throw new Exception("Invalid Residence Permissions..."); return newperms; }
public boolean setFlag(Player player, String flag, String flagstate, boolean resadmin) { if (validFlagGroups.containsKey(flag)) return this.setFlagGroup(player, flag, flagstate, resadmin); FlagState state = FlagPermissions.stringToFlagState(flagstate); if (Residence.getConfigManager().isPvPFlagPrevent()) { for (String oneFlag : Residence.getConfigManager().getProtectedFlagsList()) { if (!flag.equalsIgnoreCase(oneFlag)) continue; ArrayList<Player> players = this.residence.getPlayersInResidence(); if (!resadmin && (players.size() > 1 || players.size() == 1 && !players.get(0).getName().equals(this.getOwner()))) { int size = 0; for (Player one : players) { if (!one.getName().equals(this.getOwner())) size++; } player.sendMessage( ChatColor.RED + Residence.getLanguage().getPhrase("FlagChangeDeny", flag + "|" + size)); return false; } } } if (checkCanSetFlag(player, flag, state, true, resadmin)) { ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent( residence, player, flag, ResidenceFlagChangeEvent.FlagType.RESIDENCE, state, null); Residence.getServ().getPluginManager().callEvent(fc); if (fc.isCancelled()) return false; if (super.setFlag(flag, state)) { player.sendMessage( ChatColor.GREEN + Residence.getLanguage() .getPhrase("FlagSet", flag + "|" + residence.getName() + "|" + flagstate)); return true; } } return false; }
public boolean removeAllGroupFlags(Player player, String group, boolean resadmin) { if (this.hasResidencePermission(player, false) || resadmin) { ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent( residence, player, "ALL", ResidenceFlagChangeEvent.FlagType.GROUP, FlagState.NEITHER, null); Residence.getServ().getPluginManager().callEvent(fc); if (fc.isCancelled()) { return false; } super.removeAllGroupFlags(group); player.sendMessage(ChatColor.GREEN + Residence.getLanguage().getPhrase("FlagSet")); return true; } return false; }
public boolean setPlayerFlag( Player player, String targetPlayer, String flag, String flagstate, boolean resadmin, boolean Show) { if (Residence.getPlayerUUID(targetPlayer) == null) { player.sendMessage("no player by this name"); return false; } if (validFlagGroups.containsKey(flag)) return this.setFlagGroupOnPlayer(player, targetPlayer, flag, flagstate, resadmin); FlagState state = FlagPermissions.stringToFlagState(flagstate); if (checkCanSetFlag(player, flag, state, false, resadmin)) { ResidenceFlagChangeEvent fc = new ResidenceFlagChangeEvent( residence, player, flag, ResidenceFlagChangeEvent.FlagType.PLAYER, state, targetPlayer); Residence.getServ().getPluginManager().callEvent(fc); if (fc.isCancelled()) return false; if (super.setPlayerFlag(targetPlayer, flag, state)) { if (Show) player.sendMessage( ChatColor.GREEN + Residence.getLanguage() .getPhrase("FlagSet", flag + "|" + residence.getName() + "|" + flagstate)); return true; } } return false; }
public final void parsePerms() { try { FileConfiguration flags = YamlConfiguration.loadConfiguration(new File(Residence.dataFolder, "flags.yml")); FileConfiguration groups = YamlConfiguration.loadConfiguration(new File(Residence.dataFolder, "groups.yml")); Set<String> keys = flags.getConfigurationSection("Global.Flags").getKeys(false); if (keys != null) { for (String key : keys) { if (key.equalsIgnoreCase("Global")) { globaldefaults = FlagPermissions.parseFromConfigNode( key, flags.getConfigurationSection("Global.Flags")); } else { worldperms.put( key.toLowerCase(), FlagPermissions.parseFromConfigNode( key, flags.getConfigurationSection("Global.Flags"))); } } } for (Entry<String, FlagPermissions> entry : worldperms.entrySet()) { entry.getValue().setParent(globaldefaults); } if (!groups.isConfigurationSection("Groups")) { Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "Your groups.yml file is incorrect!"); return; } keys = groups.getConfigurationSection("Groups").getKeys(false); if (keys != null) { for (String key : keys) { if (!groups.contains("Groups." + key + ".Flags")) continue; if (!groups.contains("Groups." + key + ".Flags.World")) continue; if (key == null) continue; Set<String> worldkeys = groups.getConfigurationSection("Groups." + key + ".Flags.World").getKeys(false); if (worldkeys == null) continue; Map<String, FlagPermissions> perms = new HashMap<>(); for (String wkey : worldkeys) { FlagPermissions list = FlagPermissions.parseFromConfigNode( wkey, groups.getConfigurationSection("Groups." + key + ".Flags.World")); if (wkey.equalsIgnoreCase("global")) { list.setParent(globaldefaults); perms.put(wkey.toLowerCase(), list); for (Entry<String, FlagPermissions> worldperm : worldperms.entrySet()) { list = FlagPermissions.parseFromConfigNode( wkey, groups.getConfigurationSection("Groups." + key + ".Flags.World")); list.setParent(worldperm.getValue()); perms.put("global." + worldperm.getKey().toLowerCase(), list); } } else { perms.put(wkey.toLowerCase(), list); } } for (Entry<String, FlagPermissions> entry : perms.entrySet()) { String wkey = entry.getKey(); FlagPermissions list = entry.getValue(); if (!wkey.startsWith("global.")) { list.setParent(perms.get("global." + wkey)); if (list.getParent() == null) { list.setParent(worldperms.get(wkey)); } if (list.getParent() == null) { list.setParent(globaldefaults); } } } groupperms.put(key.toLowerCase(), perms); } } } catch (Exception ex) { Logger.getLogger(WorldFlagManager.class.getName()).log(Level.SEVERE, null, ex); } }