示例#1
0
文件: LimitsV2.java 项目: Kainzo/LWC
  /**
   * 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;
  }