public TerrainGen(int minSize, float typeNoise, Object... gradient) {
    this.mapSize = checkMapSize(minSize) ;
    this.typeNoise = Visit.clamp(typeNoise, 0, 1) ;
    this.sectorGridSize = mapSize / World.SECTOR_SIZE ;
    //
    //  Here, we verify amd compile the gradient of habitat proportions.
    final Batch <Habitat> habB  = new Batch <Habitat> () ;
    final Batch <Float> amountB = new Batch <Float> ()   ;
    boolean habNext = true ;
    for (Object o : gradient) {
      if (habNext) {
        if (! (o instanceof Habitat)) I.complain("Expected habitat...") ;
        habB.add((Habitat) o) ;
        habNext = false ;
      }
      else {
        if (! (o instanceof Float)) I.complain("Expected amount as float...") ;
        amountB.add((Float) o) ;
        habNext = true ;
      }
    }
    if (gradient.length % 2 != 0) I.complain("Missing argument...") ;
    habitats = habB.toArray(Habitat.class) ;
    habitatAmounts = amountB.toArray(Float.class) ;
  }