private void button2_Click(object sender, EventArgs e) { //启动 LauncherReturn lr = new LauncherReturn(); String FrArgs = "";//初始化 foreach (String ait in arge.CheckedItems) { FrArgs = FrArgs + ait + " "; //循环加入附加参数 } String[] TCfg = System.IO.File.ReadAllLines(Application.StartupPath + "\\JLConfig.JLConfig"); //读取配置 Launcher launcher = new Launcher(); String emca = ""; //以下是后置参数加载部分 if (TCfg[6] == "1") { emca = emca + " --fullscreen"; } if (TCfg[7] == "1") { emca = emca + " --demo"; } if (TCfg[8] != "") { emca = emca + " --width " + TCfg[8]; } if (TCfg[9] != "") { emca = emca + " --height " + TCfg[9]; } if (TCfg[10].IndexOf(":") != -1) { emca = emca + " --server " + TCfg[10].Split(":".ToCharArray())[0] + " --port " + TCfg[10].Split(":".ToCharArray())[1]; } String[] vers = Directory.GetDirectories(Application.StartupPath + "\\.minecraft\\versions"); //读取版本 int m = 0; //读取版本 for (int i = 0; i < vers.Length; i++) //读取版本 { if (File.Exists(vers[i] + "\\JLSelVer.sym")) //读取版本 { m = i; //读取版本 } } lr = launcher.Launch(TCfg[0], TCfg[1], TCfg[2], vers[m].Replace(Application.StartupPath + "\\.minecraft\\versions\\", ""), 2, false, emca, FrArgs); //启动 if (bat.Checked == true) //生成bat { File.WriteAllText(genPath.Text, "@echo off\r\nset appdata=\"" + Application.StartupPath + "\\.minecraft\"\r\n" + lr.rtv, Encoding.Default); } if (vbs.Checked == true) //生成vbs { File.WriteAllText(genPath.Text, "Set Wsl = CreateObject(\"Wscript.Shell\")\r\nWsl.Run \"" + lr.rtv.Replace("\"", "\"\"") + "\"", Encoding.Default); } }
public void DebugGame(Object[] DebugOptions) { //启动 String[] TCfg = System.IO.File.ReadAllLines(Application.StartupPath + "\\JLConfig.JLConfig"); //读取配置 Launcher launcher = new Launcher(); String emca = ""; //以下是后置参数加载部分 if (TCfg[6] == "1") { emca = emca + " --fullscreen"; } if (TCfg[7] == "1") { emca = emca + " --demo"; } if (TCfg[8] != "") { emca = emca + " --width " + TCfg[8]; } if (TCfg[9] != "") { emca = emca + " --height " + TCfg[9]; } if (TCfg[10].IndexOf(":") != -1) { emca = emca + " --server " + TCfg[10].Split(":".ToCharArray())[0] + " --port " + TCfg[10].Split(":".ToCharArray())[1]; } String[] vers = Directory.GetDirectories(Application.StartupPath + "\\.minecraft\\versions"); //读取版本 int m = 0; //读取版本 for (int i = 0; i < vers.Length; i++) //读取版本 { if (File.Exists(vers[i] + "\\JLSelVer.sym")) //读取版本 { m = i; //读取版本 } } lr = launcher.Launch(TCfg[0], TCfg[1], TCfg[2], vers[m].Replace(Application.StartupPath + "\\.minecraft\\versions\\", ""), 3, false, emca, DebugOptions[0].ToString());//启动 if (lr.LP == null) { lr.LP = lr.sdd.plr.LP; //为空就用代存的值 } lr.LP.OutputDataReceived += new DataReceivedEventHandler(this.onRD); //注册事件 lr.LP.BeginOutputReadLine(); //开始异步读写 }
private void NextDownload(object sender, AsyncCompletedEventArgs e) { //下载任务队列执行方法 String[] uat; //声明公共数组uat if (pointer != 0) //如果不是刚开始 { uat = targetURL[pointer - 1].Replace(":::", "|").Split("|".ToCharArray()); //处理下载地址和目标文件路径 if (new FileInfo(uat[1]).Length == 0) //检查上一个下载的文件 { //如果下载出错 File.Delete(uat[1]); //删掉有问题的文件 } } if (pointer == targetURL.Count) //如果下载完成 { if (reCall == "restart") //如果要重启 { System.Diagnostics.Process.Start(Application.ExecutablePath); //运行 Application.Exit(); //退出 return; //返回 } if (reCall == "installforge") //如果要安装forge { uat = targetURL[pointer - 1].Replace(":::", "|").Split("|".ToCharArray()); //处理下载地址和目标文件路径 new Launcher().decompress(uat[1], Application.StartupPath + "\\Forge_Install_Temp"); //解压安装文件 String fr = File.ReadAllText(Application.StartupPath + "\\Forge_Install_Temp\\install_profile.json").Replace(" ", "").Replace("\n", "").Replace("\r", "").Replace("\t", ""); //读取install_profile.json int tp = fr.IndexOf("\"versionInfo\":") + "\"versionInfo".Length + 2; //读取versionInfo的值 String vi = fr.Substring(tp, fr.LastIndexOf("}") - tp); //同上 tp = fr.IndexOf("\"target") + "\"target".Length + 3; //读取版本名 if (!Directory.Exists(Application.StartupPath + "\\.minecraft\\versions\\" + fr.Substring(tp, fr.IndexOf("\"", tp) - tp))) //如果版本文件夹不存在 { Directory.CreateDirectory(Application.StartupPath + "\\.minecraft\\versions\\" + fr.Substring(tp, fr.IndexOf("\"", tp) - tp)); //创建 } if (Directory.Exists(Application.StartupPath + "\\.minecraft\\versions\\" + fr.Substring(tp, fr.IndexOf("\"", tp) - tp).Substring(0, fr.Substring(tp, fr.IndexOf("\"", tp) - tp).IndexOf("-")))) //如果安装了纯净版 { if (vi.IndexOf("\"jar\":") == -1) //如果文件中未指定jar { vi = "{\"jar\":\"" + fr.Substring(tp, fr.IndexOf("\"", tp) - tp).Substring(0, fr.Substring(tp, fr.IndexOf("\"", tp) - tp).IndexOf("-")) + "\"," + vi.Substring(1); //指定 } } else//未安装纯净版 { MessageBox.Show("请先安装纯净版!");//提示用户安装 this.Close(); //关闭窗体 return; //返回 } File.WriteAllText(Application.StartupPath + "\\.minecraft\\versions\\" + fr.Substring(tp, fr.IndexOf("\"", tp) - tp) + "\\" + fr.Substring(tp, fr.IndexOf("\"", tp) - tp) + ".json", vi); //写入读取到的json值 this.Close(); //关闭窗体 System.Diagnostics.Process.Start(Application.ExecutablePath); //运行 Application.Exit(); //退出 return; //返回 } if (reCall != "") //如果调用不为空 { String[] ra = reCall.Replace(",%,%,", "\"").Split("\"".ToCharArray()); //处理参数 plr = new Launcher().Launch(ra[0], ra[1], ra[2], ra[3], 0, true); //重新调用Launch方法并传参 } this.Close(); //关闭窗体 return; //退出方法执行 } uat = targetURL[pointer].Replace(":::", "|").Split("|".ToCharArray()); //处理下载地址和目标文件路径 listBox1.SelectedIndex = pointer; //选中正在下载的项,以告诉用户 String s = uat[1].Replace(Path.GetFileName(uat[1]), ""); //获得文件所在文件夹路径 if (!Directory.Exists(s)) //如果文件夹不存在 { Directory.CreateDirectory(s); //创建文件夹(在C#里面可能是多余的,但是在其他编程语言中要这么做) } wc.DownloadFileAsync(new Uri(uat[0]), uat[1]); //下载指定的文件 pointer = pointer + 1; //指针后退 int per = pointer * 100 / targetURL.Count; //计算下载完成的百分比 progressBar1.Step = per - progressBar1.Value; //设置进度条的单次前进值 progressBar1.PerformStep(); //进度条前进 progperc.Text = per + "%"; //显示最新的进度百分比(已取整) }