public Map(String name, String author, String version, String url, String logo, String image, String compatible, String mcversion, String mapname, String info, int idx)
            throws NoSuchAlgorithmException, IOException {
        index = idx;
        this.name = name;
        this.author = author;
        this.version = version;
        this.url = url;
        this.compatible = compatible.split(",");
        this.mcversion = mcversion;
        this.mapname = mapname;
        String installPath = OSUtils.getCacheStorageLocation();
        this.info = info;
        logoName = logo;
        imageName = image;
        File tempDir = new File(installPath, "Maps" + sep + mapname);
        File verFile = new File(tempDir, "version");

        if (!upToDate(verFile)) {
            DownloadUtils.saveImage(logo, tempDir,  "png");
            DownloadUtils.saveImage(image, tempDir,  "png");

        } else {
            if (!new File(tempDir, logo).exists()) {
                DownloadUtils.saveImage(logo, tempDir,  "png");
            }
            if (!new File(tempDir, image).exists()) {
                DownloadUtils.saveImage(image, tempDir,  "png");
            }
        }

        // image and logo should now exists, if not use placeholder images
        if (!new File(tempDir, logo).exists()) {
            this.logoName = logo = "logo_ftb.png";
            DownloadUtils.saveImage(logo, tempDir, "png");
        }
        this.logo = Toolkit.getDefaultToolkit().createImage(tempDir.getPath() + sep + logo);

        if (!new File(tempDir, image).exists()) {
            this.imageName = image = "default_splash.png";
            DownloadUtils.saveImage(image, tempDir, "png");
        }
        this.image = Toolkit.getDefaultToolkit().createImage(tempDir.getPath() + sep + image);
    }