public static void main(String username, String password, String ram) throws IOException {
		List<String> args = new ArrayList<String>();
		args.add(System.getProperty("java.home") + File.separator + "bin" + File.separator + "java" + (System.getProperty("os.name").toLowerCase().contains("win") ? "w" : ""));
		args.add("-Xms256M");
		args.add("-Xmx" + ram + "M");
		args.add("-XX:PermSize=256M");
		args.add("-Dfml.ignorePatchDiscrepancies=true");
		args.add("-Dfml.ignoreInvalidMinecraftCertificates=true");
		args.add("-Dfml.log.level=INFO");
		args.add("-Djava.library.path=" + getWorkingDirectory() + File.separator + "bin" + File.separator + "natives-" + getOS());
		args.add("-cp");
		String classpath = "";
		File libs = new File(getWorkingDirectory() + File.separator + "bin");
		for (int i = 0; i < libs.list().length; i++) {
			if (! libs.list()[i].contains("natives")) {
				classpath += libs.getAbsolutePath() + File.separator + libs.list()[i];
				if (i != libs.list().length - 1)
					classpath +=File.pathSeparator;
			}
		}
		args.add(classpath);
		args.add("net.minecraft.launchwrapper.Launch");
		args.add("--username");
		args.add(username);
		args.add("--session");
		args.add("****:****");
		args.add("--accessToken");
		args.add(username);
		args.add("--userProperties");
		args.add("{}");
		args.add("--version");
		args.add(Unity.mc_version); 
		args.add("--gameDir");
		args.add(getWorkingDirectory());
		args.add("--assetIndex");
		args.add(Unity.mc_version);		
		args.add("--assetsDir");
		args.add(getWorkingDirectory() + File.separator + "assets");
		args.add("--tweakClass=cpw.mods.fml.common.launcher.FMLTweaker");
		System.out.print("Executing: ");
		for (int i = 0; i < args.size(); i++) {
			System.out.print(args.get(i) + " ");
		}
		ProcessBuilder processBuilder = new ProcessBuilder(args);
		processBuilder.directory(new File(getWorkingDirectory()));
        processBuilder.redirectErrorStream(true);
        processBuilder.start();
	}