示例#1
0
        /// <summary>
        /// Forge библиотеки
        /// </summary>
        /// <param name="cfg"></param>
        private JsonForge loadLibrariesForge(string version)
        {
            string jsonFileVersionForge = ConfigApp.currentDir + DIR_GAME_VERSIONS + @"\" + version + @"\" + version + "-forge.json";

            if (File.Exists(jsonFileVersionForge))
            {
                JsonForge json = jsonParseForge(jsonFileVersionForge);

                //mainClass = json.mainClass;
                if (json.arguments != null)
                {
                    modParams = String.Join(" ", json.arguments.game);
                }

                foreach (JsonForge.Libraries lib in json.libraries)
                {
                    if (json.inheritsFrom == "1.12.2" || json.inheritsFrom == "1.11.2")
                    {
                        //string name = lib.name.Replace(":", @"\");
                        string[] dirs = lib.name.Split(':');
                        string   name = dirs[0].Replace('.', '\\');

                        for (int j = 1; j < dirs.Length; j++)
                        {
                            name += "\\" + dirs[j];
                        }

                        string dir = ConfigApp.currentDir + @"\libraries\" + name + "\\";
                        if (Directory.Exists(dir))
                        {
                            string[] files = Directory.GetFiles(dir);
                            for (int i = 0; i < files.Length; i++)
                            {
                                libraries.Add(files[i]);
                            }
                        }
                    }
                    else
                    {
                        string filepath = ConfigApp.currentDir + @"\libraries\" + lib.downloads.artifact.path.Replace('/', '\\');
                        libraries.Add(filepath);
                    }
                }
                return(json);
            }
            return(null);
        }
示例#2
0
        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);
        }