public void removeResidence(Player player, String name, boolean resadmin) { ClaimedResidence res = this.getByName(name); if (res != null) { if (player != null && !resadmin) { if (!res.getPermissions().hasResidencePermission(player, true) && !resadmin) { player.sendMessage("§c" + Residence.getLanguage().getPhrase("NoPermission")); return; } } ResidenceDeleteEvent resevent = new ResidenceDeleteEvent( player, res, player == null ? DeleteCause.OTHER : DeleteCause.PLAYER_DELETE); Residence.getServ().getPluginManager().callEvent(resevent); if (resevent.isCancelled()) return; ClaimedResidence parent = res.getParent(); if (parent != null) { String[] split = name.split("\\."); parent.removeSubzone(split[split.length - 1]); } else { residences.remove(name); } // Residence.getLeaseManager().removeExpireTime(name); - causing concurrent modification // exception in lease manager... worked around for now Residence.getRentManager().removeRentable(name); if (player != null) player.sendMessage( "§a" + Residence.getLanguage().getPhrase("ResidenceRemove", "§e" + name + "§a")); } else { if (player != null) player.sendMessage("§c" + Residence.getLanguage().getPhrase("InvalidResidence")); } }
public void listAllResidences(Player player, int page, boolean showhidden) { Set<Entry<String, ClaimedResidence>> set = residences.entrySet(); ArrayList<String> temp = new ArrayList<String>(); synchronized (residences) { Iterator<Entry<String, ClaimedResidence>> it = set.iterator(); while (it.hasNext()) { Entry<String, ClaimedResidence> next = it.next(); ClaimedResidence res = next.getValue(); boolean hidden = res.getPermissions().has("hidden", false); if ((showhidden && hidden) || (!showhidden && !hidden) || player.getName().equals(res.getOwner())) temp.add( "§a" + next.getKey() + "§e - " + Residence.getLanguage().getPhrase("Owner") + ": " + res.getOwner() + " - " + Residence.getLanguage().getPhrase("World") + ": " + res.getWorld()); } } InformationPager.printInfo(player, Residence.getLanguage().getPhrase("Residences"), temp, page); }
public String checkAreaCollision(CuboidArea newarea, ClaimedResidence parentResidence) { Set<Entry<String, ClaimedResidence>> set = residences.entrySet(); for (Entry<String, ClaimedResidence> entry : set) { ClaimedResidence check = entry.getValue(); if (check != parentResidence && check.checkCollision(newarea)) { return entry.getKey(); } } return null; }
public int getOwnedZoneCount(String player) { Collection<ClaimedResidence> set = residences.values(); int count = 0; synchronized (residences) { for (ClaimedResidence res : set) { if (res.getPermissions().getOwner().equalsIgnoreCase(player)) { count++; } } } return count; }
public void removeAllByOwner(String owner) { Set<Entry<String, ClaimedResidence>> set = residences.entrySet(); synchronized (residences) { Iterator<ClaimedResidence> it = residences.values().iterator(); while (it.hasNext()) { ClaimedResidence res = it.next(); if (res.getOwner().equalsIgnoreCase(owner)) { it.remove(); } } } }
public void removeAllFromWorld(CommandSender sender, String world) { int count = 0; Iterator<ClaimedResidence> it = residences.values().iterator(); while (it.hasNext()) { ClaimedResidence next = it.next(); if (next.getWorld().equals(world)) { it.remove(); count++; } } if (count == 0) sender.sendMessage("§cNo residences found in world: §e" + world); else sender.sendMessage("§cRemoved §e" + count + "§c residences in world: §e" + world); }
public void applyListToResidence( Player player, String listname, String areaname, boolean resadmin) { FlagPermissions list = this.getList(player.getName(), listname); if (list == null) { player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidList")); return; } ClaimedResidence res = Residence.getResidenceManager().getByName(areaname); if (res == null) { player.sendMessage(ChatColor.RED + Residence.getLanguage().getPhrase("InvalidResidence")); return; } res.getPermissions().applyTemplate(player, list, resadmin); }
public ClaimedResidence getByName(String name) { if (name == null) return null; String[] split = name.split("\\."); if (split.length == 1) { return residences.get(name); } ClaimedResidence res = residences.get(split[0]); for (int i = 1; i < split.length; i++) { if (res != null) { res = res.getSubzone(split[i]); } else { return null; } } return res; }
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 void giveResidence( Player reqPlayer, String targPlayer, String residence, boolean resadmin) { ClaimedResidence res = getByName(residence); if (res == null) { reqPlayer.sendMessage("§c" + Residence.getLanguage().getPhrase("InvalidResidence")); return; } if (!res.getPermissions().hasResidencePermission(reqPlayer, true) && !resadmin) { reqPlayer.sendMessage("§c" + Residence.getLanguage().getPhrase("NoPermission")); return; } Player giveplayer = Residence.getServ().getPlayer(targPlayer); if (giveplayer == null || !giveplayer.isOnline()) { reqPlayer.sendMessage("§c" + Residence.getLanguage().getPhrase("NotOnline")); return; } CuboidArea[] areas = res.getAreaArray(); PermissionGroup g = Residence.getPermissionManager().getGroup(giveplayer); if (areas.length > g.getMaxPhysicalPerResidence() && !resadmin) { reqPlayer.sendMessage("§c" + Residence.getLanguage().getPhrase("ResidenceGiveLimits")); return; } if (getOwnedZoneCount(giveplayer.getName()) >= g.getMaxZones() && !resadmin) { reqPlayer.sendMessage("§c" + Residence.getLanguage().getPhrase("ResidenceGiveLimits")); return; } if (!resadmin) { for (CuboidArea area : areas) { if (!g.inLimits(area)) { reqPlayer.sendMessage("§c" + Residence.getLanguage().getPhrase("ResidenceGiveLimits")); return; } } } res.getPermissions().setOwner(giveplayer.getName(), true); reqPlayer.sendMessage( "§a" + Residence.getLanguage() .getPhrase( "ResidenceGive", "§e" + residence + "§a.§e" + giveplayer.getName() + "§a")); giveplayer.sendMessage( Residence.getLanguage() .getPhrase( "ResidenceRecieve", "§a" + reqPlayer.getName() + "§e.§a" + residence + "§e")); }
public String getNameByLoc(Location loc) { if (loc == null) return null; Set<Entry<String, ClaimedResidence>> set = residences.entrySet(); ClaimedResidence res = null; String name = null; synchronized (residences) { for (Entry<String, ClaimedResidence> key : set) { res = key.getValue(); if (res.containsLoc(loc)) { name = key.getKey(); break; } } } if (name == null) return null; String szname = res.getSubzoneNameByLoc(loc); if (szname != null) { return name + "." + szname; } return name; }
public boolean addResidence(String name, String owner, Location loc1, Location loc2) { if (!Residence.validName(name)) return false; if (loc1 == null || loc2 == null || !loc1.getWorld().getName().equals(loc2.getWorld().getName())) { return false; } PermissionGroup group = Residence.getPermissionManager().getGroup(owner, loc1.getWorld().getName()); CuboidArea newArea = new CuboidArea(loc1, loc2); ClaimedResidence newRes = new ClaimedResidence(owner, loc1.getWorld().getName()); newRes.getPermissions().applyDefaultFlags(); newRes.setEnterMessage(group.getDefaultEnterMessage()); newRes.setLeaveMessage(group.getDefaultLeaveMessage()); ResidenceCreationEvent resevent = new ResidenceCreationEvent(null, name, newRes, newArea); Residence.getServ().getPluginManager().callEvent(resevent); if (resevent.isCancelled()) { return false; } newArea = resevent.getPhysicalArea(); name = resevent.getResidenceName(); if (residences.containsKey(name)) { return false; } newRes.addArea(newArea, "main"); if (newRes.getAreaCount() != 0) { residences.put(name, newRes); } return true; }
public ClaimedResidence getByLoc(Location loc) { if (loc == null) return null; ClaimedResidence res = null; boolean found = false; Set<Entry<String, ClaimedResidence>> set = residences.entrySet(); synchronized (residences) { for (Entry<String, ClaimedResidence> key : set) { res = key.getValue(); if (res.containsLoc(loc)) { found = true; break; } } } if (!found) { return null; } ClaimedResidence subres = res.getSubzoneByLoc(loc); if (subres == null) { return res; } return subres; }
public void addResidence( Player player, String name, Location loc1, Location loc2, boolean resadmin) { if (!Residence.validName(name)) { player.sendMessage("§c" + Residence.getLanguage().getPhrase("InvalidNameCharacters")); return; } if (player == null) return; if (loc1 == null || loc2 == null || !loc1.getWorld().getName().equals(loc2.getWorld().getName())) { player.sendMessage("§c" + Residence.getLanguage().getPhrase("SelectPoints")); return; } PermissionGroup group = Residence.getPermissionManager().getGroup(player); boolean createpermission = group.canCreateResidences() || Residence.getPermissionManager().hasAuthority(player, "residence.create", false); if (!createpermission && !resadmin) { player.sendMessage("§c" + Residence.getLanguage().getPhrase("NoPermission")); return; } if (getOwnedZoneCount(player.getName()) >= group.getMaxZones() && !resadmin) { player.sendMessage("§c" + Residence.getLanguage().getPhrase("ResidenceTooMany")); return; } CuboidArea newArea = new CuboidArea(loc1, loc2); ClaimedResidence newRes = new ClaimedResidence(player.getName(), loc1.getWorld().getName()); newRes.getPermissions().applyDefaultFlags(); newRes.setEnterMessage(group.getDefaultEnterMessage()); newRes.setLeaveMessage(group.getDefaultLeaveMessage()); ResidenceCreationEvent resevent = new ResidenceCreationEvent(player, name, newRes, newArea); Residence.getServ().getPluginManager().callEvent(resevent); if (resevent.isCancelled()) return; newArea = resevent.getPhysicalArea(); name = resevent.getResidenceName(); if (residences.containsKey(name)) { player.sendMessage( "§c" + Residence.getLanguage().getPhrase("ResidenceAlreadyExists", "§e" + name + "§c")); return; } newRes.addArea(player, newArea, "main", resadmin); if (newRes.getAreaCount() != 0) { residences.put(name, newRes); Residence.getLeaseManager().removeExpireTime(name); player.sendMessage( "§a" + Residence.getLanguage().getPhrase("ResidenceCreate", "§e" + name + "§a")); if (Residence.getConfigManager().useLeases()) Residence.getLeaseManager().setExpireTime(player, name, group.getLeaseGiveTime()); } }
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 hasResidencePermission(Player player, boolean requireOwner) { if (Residence.getConfigManager().enabledRentSystem()) { String resname = residence.getName(); if (Residence.getRentManager().isRented(resname)) { if (requireOwner) { return false; } String renter = Residence.getRentManager().getRentingPlayer(resname); if (player.getName().equalsIgnoreCase(renter)) { return true; } else { return (playerHas(player.getName(), "admin", false)); } } } if (requireOwner) { return (this.getOwner().equalsIgnoreCase(player.getName())); } return (playerHas(player.getName(), "admin", false) || this.getOwner().equalsIgnoreCase(player.getName())); }
public void mirrorPerms( Player reqPlayer, String targetArea, String sourceArea, boolean resadmin) { ClaimedResidence reciever = this.getByName(targetArea); ClaimedResidence source = this.getByName(sourceArea); if (source == null || reciever == null) { reqPlayer.sendMessage("§c" + Residence.getLanguage().getPhrase("InvalidResidence")); return; } if (!resadmin) { if (!reciever.getPermissions().hasResidencePermission(reqPlayer, true) || !source.getPermissions().hasResidencePermission(reqPlayer, true)) { reqPlayer.sendMessage("§c" + Residence.getLanguage().getPhrase("NoPermission")); return; } } reciever.getPermissions().applyTemplate(reqPlayer, source.getPermissions(), resadmin); }
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 static ResidenceManager loadMap(Map<String, Object> root, ResidenceManager resm) throws Exception { if (root != null) { for (Entry<String, Object> res : root.entrySet()) { try { resm.residences.put( res.getKey(), ClaimedResidence.load((Map<String, Object>) res.getValue(), null)); } catch (Exception ex) { System.out.print( "[Residence] Failed to load residence (" + res.getKey() + ")! Reason:" + ex.getMessage() + " Error Log:"); Logger.getLogger(ResidenceManager.class.getName()).log(Level.SEVERE, null, ex); if (Residence.getConfigManager().stopOnSaveError()) { throw (ex); } } } } return resm; }
public boolean renameResidence(Player player, String oldName, String newName, boolean resadmin) { if (!Residence.validName(newName)) { player.sendMessage("§c" + Residence.getLanguage().getPhrase("InvalidNameCharacters")); return false; } ClaimedResidence res = this.getByName(oldName); if (res == null) { if (player != null) player.sendMessage("§c" + Residence.getLanguage().getPhrase("InvalidResidence")); return false; } if (res.getPermissions().hasResidencePermission(player, true) || resadmin) { if (res.getParent() == null) { if (residences.containsKey(newName)) { if (player != null) player.sendMessage( "§c" + Residence.getLanguage() .getPhrase("ResidenceAlreadyExists", "§e" + newName + "§c")); return false; } residences.put(newName, res); residences.remove(oldName); if (Residence.getConfigManager().useLeases()) Residence.getLeaseManager().updateLeaseName(oldName, newName); if (Residence.getConfigManager().enabledRentSystem()) { Residence.getRentManager().updateRentableName(oldName, newName); } if (player != null) player.sendMessage( "§a" + Residence.getLanguage() .getPhrase("ResidenceRename", "§e" + oldName + "§a.§e" + newName + "§a")); return true; } else { String[] oldname = oldName.split("\\."); ClaimedResidence parent = res.getParent(); return parent.renameSubzone(player, oldname[oldname.length - 1], newName, resadmin); } } else { if (player != null) player.sendMessage("§c" + Residence.getLanguage().getPhrase("NoPermission")); return false; } }
public void printAreaInfo(String areaname, Player player) { ClaimedResidence res = this.getByName(areaname); if (res == null) { player.sendMessage("§c" + Residence.getLanguage().getPhrase("InvalidResidence")); return; } ResidencePermissions perms = res.getPermissions(); if (Residence.getConfigManager().enableEconomy()) player.sendMessage( "§e" + Residence.getLanguage().getPhrase("Residence") + ":§2 " + areaname + " §eBank: §6" + res.getBank().getStoredMoney()); else player.sendMessage("§e" + Residence.getLanguage().getPhrase("Residence") + ":§2 " + areaname); if (Residence.getConfigManager().enabledRentSystem() && Residence.getRentManager().isRented(areaname)) player.sendMessage( "§e" + Residence.getLanguage().getPhrase("Owner") + ":§c " + perms.getOwner() + "§e Rented by: §c" + Residence.getRentManager().getRentingPlayer(areaname)); else player.sendMessage( "§e" + Residence.getLanguage().getPhrase("Owner") + ":§c " + perms.getOwner() + "§e - " + Residence.getLanguage().getPhrase("World") + ": §c" + perms.getWorld()); player.sendMessage( "§e" + Residence.getLanguage().getPhrase("Flags") + ":§9 " + perms.listFlags()); player.sendMessage( "§e" + Residence.getLanguage().getPhrase("Your.Flags") + ": §a" + perms.listPlayerFlags(player.getName())); player.sendMessage( "§e" + Residence.getLanguage().getPhrase("Group.Flags") + ":§c " + perms.listGroupFlags()); player.sendMessage( "§e" + Residence.getLanguage().getPhrase("Others.Flags") + ":§c " + perms.listOtherPlayersFlags(player.getName())); String aid = res.getAreaIDbyLoc(player.getLocation()); if (aid != null) player.sendMessage("§e" + Residence.getLanguage().getPhrase("CurrentArea") + ": §6" + aid); player.sendMessage( "§e" + Residence.getLanguage().getPhrase("Total.Size") + ":§d " + res.getTotalSize()); if (Residence.getConfigManager().useLeases() && Residence.getLeaseManager().leaseExpires(areaname)) { player.sendMessage( "§e" + Residence.getLanguage().getPhrase("LeaseExpire") + ":§a " + Residence.getLeaseManager().getExpireTime(areaname)); } }