package com.github.to2mbn.jmccc.mcdownloader;

import java.util.concurrent.Future;
import java.util.concurrent.RejectedExecutionException;
import com.github.to2mbn.jmccc.mcdownloader.download.concurrent.Shutdownable;
import com.github.to2mbn.jmccc.mcdownloader.download.group.MultipleDownloadCallback;
import com.github.to2mbn.jmccc.option.MinecraftDirectory;

public interface MinecraftDownloader extends Shutdownable {

	/**
	 * Downloads a minecraft version incrementally and asynchronously.
	 * <p>
	 * This methods checks assets, libraries, game jars. And downloads the missing or broken files.
	 * 
	 * @param dir the minecraft dir
	 * @param version the version to download
	 * @param callback the callback
	 * @return future representing pending completion of the operation
	 * @throws NullPointerException if <code>dir==null || version==null</code>
	 * @throws RejectedExecutionException if the downloader has been shutdown
	 */
	Future<Object> downloadIncrementally(MinecraftDirectory dir, String version, MultipleDownloadCallback<Object> callback);

}

@@ -511,17 +511,16 @@
 s method
-s
  checks 
@@ -1053,10 +1053,284 @@
 back);%0A%0A
+%09/**%0A%09 * Fetches the remote version list asynchronously.%0A%09 * %0A%09 * @param callback the callback%0A%09 * @return future representing pending completion of the operation%0A%09 */%0A%09Future%3CRemoteVersionList%3E fetchRemoteVersionList(MultipleDownloadCallback%3CRemoteVersionList%3E callback);%0A%0A
 %7D%0A

add fetchRemoteVersionList