Пример #1
0
  private List<AppliedRegion> filtered() throws InvalidRegionException {
    List<AppliedRegion> filtered = new ArrayList<>();

    Element regions = document.getRootElement().element("regions");
    for (Element region : XMLUtil.getElements(regions, "apply")) {
      AppliedRegion applied = RegionBuilder.parseFiltered(this, region);
      filtered.add(applied);
      // Log.info("Found an AppliedRegion (" + (applied instanceof AppliedRegion) + ") current total
      // = " + filtered.size());
    }

    return filtered;
  }
  public DestroyableModule parseDestroyable(SporkMap map, Element element)
      throws ModuleBuildException {
    String name = XMLUtil.getElementOrParentValue(element, "name");

    String[] names = new String[0];
    String types = XMLUtil.getElementOrParentValue(element, "materials");
    if (types != null) {
      names = new String[] {types};
      if (types.contains(";")) {
        types.split(";");
      }
    }

    List<Material> materialList = new ArrayList<>();
    for (String type : names) {
      Material material = StringUtil.convertStringToMaterial(type);
      if (material == null) {
        throw new ModuleBuildException("'" + type + "' is not a valid Minecraft material");
      }
      materialList.add(material);
    }

    int i = 0;
    Material[] materials = new Material[materialList.size()];
    for (Material material : materialList) {
      materials[i] = material;
      i++;
    }

    int completion = 0;
    String complete = XMLUtil.getElementOrParentValue(element, "completion");
    if (complete != null) {
      if (complete.endsWith("%")) {
        complete = complete.substring(0, complete.length() - 1);
      }

      completion = Integer.parseInt(complete);
    }

    TeamModule other = null;
    String team = XMLUtil.getElementOrParentValue(element, "owner");
    if (team != null) {
      other = map.getTeams().getTeam(team);
    }

    Region region = RegionBuilder.parseRegion(element.getChildren().get(0));
    TeamModule owner = other.getOpposite();

    if (name == null) {
      throw new ModuleBuildException("A Destroyable name could not be found");
    } else if (materials.length == 0) {
      throw new ModuleBuildException("No Materials were supplied");
    } else if (materialList.contains(null)) {
      throw new ModuleBuildException("An invalid list of Materials was found");
    } else if (completion <= 0) {
      throw new ModuleBuildException("Completion % must be greater than 0");
    } else if (owner == null) {
      throw new ModuleBuildException("The owner of a Destroyable can't be null");
    } else if (region == null) {
      throw new ModuleBuildException("The region of a Destroyable can't be null");
    }

    return new DestroyableModule(name, owner, region, materials, completion);
  }