Exemple #1
0
        private List <MVersionMetadata> getFromLocal(MinecraftPath path)
        {
            var versionDirectory = new DirectoryInfo(path.Versions);

            if (!versionDirectory.Exists)
            {
                return(new List <MVersionMetadata>());
            }

            var dirs = versionDirectory.GetDirectories();
            var arr  = new List <MVersionMetadata>(dirs.Length);

            for (int i = 0; i < dirs.Length; i++)
            {
                var dir      = dirs[i];
                var filepath = Path.Combine(dir.FullName, dir.Name + ".json");
                if (File.Exists(filepath))
                {
                    var info = new MVersionMetadata(dir.Name);
                    info.IsLocalVersion = true;
                    info.Path           = filepath;
                    info.Type           = "local";
                    info.MType          = MVersionType.Custom;
                    arr.Add(info);
                }
            }

            return(arr);
        }
        private List <MVersionMetadata> parseVersions(string res, string loader)
        {
            var jarr        = JArray.Parse(res);
            var versionList = new List <MVersionMetadata>(jarr.Count);

            foreach (var item in jarr)
            {
                string?versionName = item["version"]?.ToString();
                if (string.IsNullOrEmpty(versionName))
                {
                    continue;
                }

                string jsonUrl = $"{ApiServer}/v2/versions/loader/{versionName}/{loader}/profile/json";

                string id = GetVersionName(versionName, loader);
                var    versionMetadata = new MVersionMetadata(id)
                {
                    IsLocalVersion = false,
                    MType          = MVersionType.Custom,
                    Path           = jsonUrl,
                    Type           = "fabric"
                };
                versionList.Add(versionMetadata);
            }

            return(versionList);
        }
Exemple #3
0
        public Process Start(string _version)
        {
            System.Net.ServicePointManager.DefaultConnectionLimit = 256;

            var game     = new MinecraftPath(path);
            var launcher = new CMLauncher(game);

            launcher.ProgressChanged += Download_Progress;
            launcher.FileChanged     += Download_ChangeFile;

            var lv = new LocalVersionLoader(game).GetVersionMetadatas();

            MVersion findVersion = null;

            try
            {
                findVersion = lv.GetVersion(_version);
            }
            catch (KeyNotFoundException)
            {
            }


            //var findVersion = lv.GetVersion(_version);

            if (findVersion == null)
            {
                MVersionMetadata findMVersion = null;

                try
                {
                    findMVersion = lv.GetVersionMetadata(_version);
                }
                catch (KeyNotFoundException)
                {
                }

                if (findMVersion != null)
                {
                    findMVersion.Save(game);
                }
                else
                {
                    var findWVersion = new MojangVersionLoader().GetVersionMetadatas().GetVersionMetadata(_version);

                    if (findWVersion != null)
                    {
                        findWVersion.Save(game);
                    }
                    else
                    {
                        return(null);
                    }
                }
            }

            try
            {
                findVersion = lv.GetVersion(_version);
            }
            catch (KeyNotFoundException)
            {
                return(null);
            }

            var launchOption = new MLaunchOption
            {
                MaximumRamMb        = ram,
                Session             = se,
                Path                = game,
                StartVersion        = findVersion,
                GameLauncherName    = "JML",
                GameLauncherVersion = "1.0"
            };

            MLaunch launch  = new MLaunch(launchOption);
            var     process = launch.GetProcess();

            process.Start();

            //Process process = launcher.CreateProcess(launchOption);
            //process.Start();

            return(process);
        }