private string generateParamString(string memory, string pathNatives, JsonMinecraft json, string username, string server, string port) { // Начальная строка запуска string param = @" -Dfml.ignoreInvalidMinecraftCertificates=true -Dfml.ignorePatchDiscrepancies=true -Xmx" + memory + "M -Djava.library.path=" + pathNatives + " -cp "; // Формирование перебором добавленных файлов библиотоек из списка, в строку с ; foreach (string file in libraries) { param += file + ";"; } //Параметры запуска! param += ConfigApp.currentDir + @"\versions\" + json.id + @"\" + json.id + ".jar " + mainClass //" net.minecraft.launchwrapper.Launch net.minecraft.client.main.Main" + @" --username " + username + @" --version " + json.id + @" --gameDir " + ConfigApp.currentDir + @" --assetsDir " + ConfigApp.currentDir + @"\" + "assets" + @" --assetIndex " + json.assets + @" --uuid " + UUID + @" --accessToken " + accessToken //"FML" //Сессия + @" --userType legacy" //Тип аккаунта mojang/legacy mojang + @" --versionType CraftZone"; //+ @" --server localhost" //IP сервера, к которому будет осуществлено подключение после запуска игры(Необязательно) //+ @" --port 25565"; //Порт сервера, к которому будет осуществлено подключение после запуска игры(При введённом IP) //+ @" --userProperties {} " без этого параметра все отлично запускается!!!; if (!String.IsNullOrEmpty(server) && !String.IsNullOrEmpty(port)) { param += @" --server " + server + @" --port " + port; } return(param); }
public bool run(ConfigClient cfg, string java) { string pathNatives = ConfigApp.currentDir + @"\natives\" + cfg.VersionGame; if (!existNatives(pathNatives)) { System.Windows.MessageBox.Show("Библиотеки natives не найдены"); return(false); } libraries = new List <String>(); JsonForge jsonForge = null; JsonMinecraft jsonNative = null; JsonRift jsonRift = null; // Загрузка Rift библиотек if (cfg.IsRift) { jsonRift = addRaftLibs(cfg.VersionGame); } // Загрузка Forge библиотек if (cfg.IsForge) { jsonForge = loadLibrariesForge(cfg.VersionGame); } //Загрузка Native библиотек jsonNative = loadNativeLibraries(cfg.VersionGame); if (jsonNative == null) { System.Windows.MessageBox.Show("Библиотеки не загружены"); return(false); } // Установка класса запуска if (cfg.IsForge) { mainClass = jsonForge.mainClass; } else { mainClass = jsonNative.mainClass; } // Переустановка модов if (cfg.IsinstallMods) { ModForge.install(cfg.VersionGame); } // Строка запуска string param = generateParamString(cfg.Memory, pathNatives, jsonNative, cfg.Username, cfg.HostServer, cfg.PortGameServer); if (cfg.IsForge) { if (cfg.VersionGame == "1.12.2" || cfg.VersionGame == "1.11.2") { param += @" --tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker"; // --tweakClass cpw.mods.fml.common.launcher.FMLTweaker } param += " " + modParams; } try { Process start = new Process(); start.StartInfo.CreateNoWindow = true; start.StartInfo.UseShellExecute = false; start.StartInfo.Arguments = param; start.StartInfo.FileName = java + @"\javaw.exe"; start.Start(); return(true); } catch (Exception ex) { System.Windows.MessageBox.Show(ex.Message + " " + ex.StackTrace); } return(false); }
/// <summary> /// Нативные библотеки /// </summary> /// <param name="version"></param> /// <returns></returns> private JsonMinecraft loadNativeLibraries(string version) { string jsonMinecraft = ConfigApp.currentDir + DIR_GAME_VERSIONS + @"\" + version + @"\" + version + ".json"; if (File.Exists(jsonMinecraft)) { JsonMinecraft json = jsonParseMinecraft(jsonMinecraft); //mainClass = json.mainClass; foreach (JsonMinecraft.Libraries lib in json.libraries) { if (lib.downloads.artifact == null) { Console.WriteLine("artifact: null"); continue; } string fileJar = ConfigApp.currentDir + @"\libraries\" + lib.downloads.artifact.path.Replace('/', '\\'); if (File.Exists(fileJar)) { string item = libraries.Find(x => x.Contains(fileJar)); //foreach (var item in libraries) //{ // if (item == fileJar) // break; //} if (item == null) { libraries.Add(fileJar); } else { Console.WriteLine("Повторный элемент: " + item); } } else { Console.WriteLine("Не найден файл: " + fileJar); Console.WriteLine(lib.downloads.artifact.url); Console.WriteLine("---------------"); //try //{ //Directory.CreateDirectory(fileJar); // Качает файл //WebClient wb = new WebClient(); //wb.DownloadFile(lib.downloads.artifact.url, fileJar); //} //catch (WebException ex) { Console.WriteLine(ex.InnerException); } } } return(json); } else { return(null); } }