public GameVersion GetGameVersion(string mcversion)
        {
            VersionsVersion oVersion = null;

            try
            {
                if (_versions == null)
                {
                    GetVersionManifest();
                }

                foreach (VersionsVersion version in _versions.Versions)
                {
                    if (version.Id.Equals(mcversion))
                    {
                        oVersion = version;
                        break;
                    }
                }
                // throw execption when version not found
                if (oVersion == null)
                {
                    throw new Exception("Minecraft version not found.");
                }

                string sVersion = Http.GET(oVersion.Url);
                return(GameVersion.FromJson(sVersion));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #2
0
        public void StartPack(string sPackName, string sPackVersion)
        {
            FilesMojang MCMojangFiles = new FilesMojang(dhelper)
            {
                LibraryDir  = _sLibraryDir,
                VersionDir  = _sVersionDir,
                NativesDir  = _sNativesDir,
                AssetsDir   = _sAssetsDir,
                OfflineMode = Offline
            };

            // check if pack is installed with given version
            if (!IsPackInstalled(sPackName, sPackVersion))
            {
                InstallPack(sPackName, sPackVersion);
            }

            // getting pack json file
            MCPack pack = MCPack.FromJson(File.ReadAllText(_sPacksDir + @"\" + sPackName + @"\pack.json").Trim());

            // vanilla Minecraft
            MCMojangFiles.DownloadVersionJson(pack.MCVersion);
            GameVersion MCMojang = GameVersion.FromJson(File.ReadAllText(_sVersionDir + @"\" + pack.MCVersion + @"\" + pack.MCVersion + ".json").Trim());

            // download game jar
            MCMojangFiles.DownloadClientJar(MCMojang);
            // download libraries if needed
            Dictionary <string, string> ClassPath = MCMojangFiles.DownloadClientLibraries(MCMojang);

            // download assets if needed
            MCMojangFiles.DownloadClientAssets(MCMojang);

            // additional things for forge
            if (pack.Type.Equals("forge"))
            {
                isForge      = true;
                forgeVersion = pack.ForgeVersion;
                FilesForge MCForgeFiles = new FilesForge(dhelper)
                {
                    LibraryDir  = _sLibraryDir,
                    VersionDir  = _sVersionDir,
                    OfflineMode = Offline
                };

                // Install Forge
                Dictionary <string, string> ForgeClassPath = MCForgeFiles.InstallForge(pack.ForgeVersion);

                //Merge Classpath
                foreach (KeyValuePair <string, string> entry in ForgeClassPath)
                {
                    if (ClassPath.ContainsKey(entry.Key))
                    {
                        ClassPath.Remove(entry.Key);
                    }
                    ClassPath.Add(entry.Key, entry.Value);
                }

                // Merge startup parameter
                MCMojang = MCForgeFiles.MergeArguments(MCMojang);
            }

            // set selected version
            SetSelectedVersion(sPackName, sPackVersion);
            // start the pack
            Start(BuildArgs(MCMojang, sPackName, ClassPath), sPackName);
            // close bar if open
            if (dhelper.IsBarVisible() == true)
            {
                dhelper.HideBar();
            }
            //if (_bar.Visible == true) _bar.Hide();
        }