/// <summary> /// 获取Forge下载 /// </summary> /// <param name="downloadSource">下载源</param> /// <param name="forge">Forge信息</param> /// <returns></returns> public static DownloadTask GetForgeDownloadURL(DownloadSource downloadSource, APIModules.JWForge forge, MCVersion mc) { string local = PathManager.TempDirectory + "\\forge-" + forge.Build + ".jar"; string Source = BMCLUrl; switch (downloadSource) { case DownloadSource.Mojang: Source = BMCLUrl; break; case DownloadSource.BMCLAPI: Source = BMCLUrl; break; case DownloadSource.MCBBS: Source = MCBBSUrl; break; } Source += $"maven/net/minecraftforge/forge/{mc.ID}-{forge.Version}" + $"/forge-{mc.ID}-{forge.Version}-installer.jar"; DownloadTask dt = new(App.GetResourceString("String.NewDownloadTaskWindow.Core.Forge"), Source, local); dt.Todo = new Func <ProgressCallback, CancellationToken, Exception>((callback, cancelToken) => { try { IInstaller installer = new ForgeInstaller(local, new CommonInstallOptions() { GameRootPath = App.Handler.GameRootPath, IsClient = true, DownloadSource = App.Config.MainConfig.Download.DownloadSource, Java = App.Handler.Java }); installer.BeginInstall(callback, cancelToken).Wait(); return(null); } catch (Exception ex) { return(ex); } }); return(dt); }
/// <summary> /// 获取Forge下载 /// </summary> /// <param name="downloadSource">下载源</param> /// <param name="mcversion">Mc版本</param> /// <param name="forgeversion">Forge版本</param> /// <returns></returns> public static DownloadTask GetForgeDownloadURL(DownloadSource downloadSource, string mcversion, string forgeversion) { string local = App.Handler.GameRootPath + "\\forge-" + mcversion + "-" + forgeversion + "-installer.jar"; string forgePath = string.Format("maven/net/minecraftforge/forge/{0}-{1}/forge-{0}-{1}-installer.jar", mcversion, forgeversion); string Source = ForgeUrl; switch (downloadSource) { case DownloadSource.Mojang: Source = ForgeUrl; break; case DownloadSource.BMCLAPI: Source = BMCLUrl; break; case DownloadSource.MCBBS: Source = MCBBSUrl; break; } Source += forgePath; DownloadTask dt = new DownloadTask(App.GetResourceString("String.NewDownloadTaskWindow.Core.Forge"), Source, local); dt.Todo = new Func <ProgressCallback, CancellationToken, Exception>((callback, cancelToken) => { try { IInstaller installer = new ForgeInstaller(local, new CommonInstallOptions() { GameRootPath = App.Handler.GameRootPath, IsClient = true, DownloadSource = App.Config.MainConfig.Download.DownloadSource, Java = App.Handler.Java }); installer.BeginInstall(callback, cancelToken).Wait(); return(null); } catch (Exception ex) { return(ex); } }); return(dt); }
private Dictionary <string, string> DownloadForgeLibraries(ForgeInstaller Forge) { Dictionary <string, string> ClassPath = new Dictionary <string, string>(); // Library list for startup foreach (Json.ForgeInstaller.Library Lib in Forge.VersionInfo.Libraries) { string sLocalPath = LibraryDir; string sRemotePath = "https://libraries.minecraft.net/"; string sLibPath = null; string[] sLibName = Lib.Name.Split(':'); // use download url from Forge if (Lib.Url != null) { sRemotePath = Lib.Url.ToString(); } // fix for typesafe libraries if (sLibName[0].Contains("com.typesafe")) { sRemotePath = "http://central.maven.org/maven2/"; } sLibPath = string.Format("{0}/{1}/{2}/{1}-{2}.jar", sLibName[0].Replace('.', '/'), sLibName[1], sLibName[2]); sLocalPath += @"\" + sLibPath.Replace('/', '\\'); sRemotePath += sLibPath; // dont download Forge itself if (!sLibName[0].Equals("net.minecraftforge") || !sLibName[1].Equals("forge")) { dhelper.DownloadFileTo(sRemotePath, sLocalPath, true); // add to classpath (replace) if (ClassPath.ContainsKey(sLibName[0] + ":" + sLibName[1])) { ClassPath.Remove(sLibName[0] + ":" + sLibName[1]); } ClassPath.Add(sLibName[0] + ":" + sLibName[1], sLocalPath); } } return(ClassPath); }
public GameVersion MergeArguments(GameVersion MCMojang) { if (post_1_13 == true) { ForgeVersion MCForge = ForgeVersion.FromJson(File.ReadAllText(LibraryDir + _sForgeTree.Replace('/', '\\') + sForgeVersion + @"\version.json").Trim()); // replace vanilla values MCMojang.MainClass = MCForge.MainClass; // append forge arguments List <GameElement> itemList = MCMojang.Arguments.Game.ToList(); List <GameElement> moreItems = MCForge.Arguments.Game.ToList(); itemList.AddRange(moreItems); MCMojang.Arguments.Game = itemList.ToArray(); } else { ForgeInstaller MCForge = ForgeInstaller.FromJson(File.ReadAllText(LibraryDir + _sForgeTree.Replace('/', '\\') + sForgeVersion + @"\install_profile.json").Trim()); // replace vanilla settings MCMojang.MainClass = MCForge.VersionInfo.MainClass; MCMojang.MinecraftArguments = MCForge.VersionInfo.MinecraftArguments; } return(MCMojang); }
private static void ExecuteInBackground(object index) { CommonData.packageName = packageConfiguration.Packages[(int)index].PackageName.ToLower(); CommonData.packageVersion = packageConfiguration.Packages[(int)index].Version; CommonData.packageServerAddress = packageConfiguration.Packages[(int)index].ServerAddress; CommonData.updatePackageName(); ManifestManager.GetAllManifests(); if (DownloadManager.startDownload()) { ForgeInstaller.installForge(); /* start the selected version */ MinecraftManager.StartMinecraft(); ChangeDownloadButtonContent(null); ChangeDownloadButtonVisibility(Visibility.Hidden); } else { MessageBox.Show("Erreur lors du téléchargement...", "Erreur", MessageBoxButton.OK); ChangeDownloadButtonContent(null); } ChangeDownloadButtonContent(null); ChangeDownloadButtonVisibility(Visibility.Hidden); }
public Dictionary <string, string> InstallForge(string sForgeVersion) { this.sForgeVersion = sForgeVersion; Dictionary <string, string> ClassPath = new Dictionary <string, string>(); // Library list for startup sForgeVersionDir = LibraryDir + _sForgeTree.Replace('/', '\\') + sForgeVersion; sForgeInstallerFile = sForgeVersionDir + @"\forge-" + sForgeVersion + "-installer.jar"; string remoteFile = _sForgeMaven + _sForgeTree + sForgeVersion + "/forge-" + sForgeVersion + "-installer.jar"; //check if file exists if (!File.Exists(sForgeInstallerFile)) { dhelper.DownloadFileTo(remoteFile, sForgeInstallerFile, true, null); } // always extract files List <string> extractList = new List <string> { "install_profile.json", "version.json" }; dhelper.ExtractZipFiles(sForgeInstallerFile, sForgeVersionDir, extractList); if (File.Exists(LibraryDir + _sForgeTree.Replace('/', '\\') + sForgeVersion + @"\version.json")) { post_1_13 = true; } // post 1.13 files if (post_1_13 == true) { post_1_13 = true; ForgeVersion MCForge = ForgeVersion.FromJson(File.ReadAllText(LibraryDir + _sForgeTree.Replace('/', '\\') + sForgeVersion + @"\version.json").Trim()); // download Forge libraries ClassPath = DownloadForgeLibraries(MCForge); // extract Forge Jar extractList = new List <string> { "maven/net/minecraftforge/forge/" + sForgeVersion + "/forge-" + sForgeVersion + ".jar" }; dhelper.ExtractZipFiles(sForgeInstallerFile, sForgeVersionDir, extractList, false); // build client.jar BuildForgeClientJar(); // append Forge to classpath ClassPath.Add("net.minecraftforge:forge", sForgeVersionDir + @"\forge-" + sForgeVersion + ".jar"); } // pre 1.13 files else if (post_1_13 == false) { post_1_13 = false; ForgeInstaller MCForge = ForgeInstaller.FromJson(File.ReadAllText(LibraryDir + _sForgeTree.Replace('/', '\\') + sForgeVersion + @"\install_profile.json").Trim()); // download Forge libraries ClassPath = DownloadForgeLibraries(MCForge); // Extract Universal Jar extractList = new List <string> { "forge-" + sForgeVersion + "-universal.jar" }; dhelper.ExtractZipFiles(sForgeInstallerFile, sForgeVersionDir, extractList); // append Forge to classpath ClassPath.Add("net.minecraftforge:forge", sForgeVersionDir + @"\forge-" + sForgeVersion + "-universal.jar"); } return(ClassPath); }