/** * Gets the list of limits that may apply to the player. For group limits, it uses the highest one * found. * * @param player * @return */ public List<Limit> getPlayerLimits(Player player) { LWC lwc = LWC.getInstance(); List<Limit> limits = new LinkedList<Limit>(); // get all of their own limits String playerName = player.getName().toLowerCase(); if (playerLimits.containsKey(playerName)) { limits.addAll(playerLimits.get(playerName)); } // Look over the group limits for (String group : lwc.getPermissions().getGroups(player)) { if (groupLimits.containsKey(group)) { for (Limit limit : groupLimits.get(group)) { // try to match one already inside what we found Limit matched = findLimit(limits, limit); if (matched != null) { // Is our limit better? if (limit.getLimit() > matched.getLimit()) { limits.remove(matched); limits.add(limit); } } else { limits.add(limit); } } } } // Look at the default limits for (Limit limit : defaultLimits) { // try to match one already inside what we found Limit matched = findLimit(limits, limit); if (matched == null) { limits.add(limit); } } return limits; }