public boolean selectPrimary(Vector pos) {
    if (pos.equals(pos1)) {
      return false;
    }

    pos1 = pos.toBlockVector();
    region = new Polygonal2DRegion(region.getWorld());
    region.addPoint(pos);
    region.expandY(pos.getBlockY());

    return true;
  }
  public boolean selectSecondary(Vector pos) {
    if (region.size() > 0) {
      final List<BlockVector2D> points = region.getPoints();

      final BlockVector2D lastPoint = points.get(region.size() - 1);
      if (lastPoint.getBlockX() == pos.getBlockX() && lastPoint.getBlockZ() == pos.getBlockZ()) {
        return false;
      }

      if (maxPoints >= 0 && points.size() > maxPoints) {
        return false;
      }
    }

    region.addPoint(pos);
    region.expandY(pos.getBlockY());

    return true;
  }