package sk.tomsik68.mclauncher.api.versions;
import sk.tomsik68.mclauncher.api.common.mc.MinecraftInstance;
import sk.tomsik68.mclauncher.api.ui.IProgressMonitor;
/**
* Installer can install versions of some type
*
* @author Tomsik68
*/
public interface IVersionInstaller {
/**
* Installs specified version to MC instance
*
* @param changed Version to be installed
* @param mc Target MinecraftInstance
* @param progress ProgressMonitor which will watch the whole progress
* @throws Exception I/O errors, download errors, incompatibility etc.
*/
public void install(IVersion changed, MinecraftInstance mc, IProgressMonitor progress) throws Exception;
/**
* Adds listener to be notified when version installation finishes. <b>Listeners will be cleared after ONE installation.</b>
*
* @param listener Listener to be notified
*/
public void addVersionInstallListener(IVersionInstallListener listener);
}