Example #1
0
        public static MProfile Parse(MProfileInfo info)
        {
            string json;

            if (info.IsWeb)
            {
                using (var wc = new WebClient())
                {
                    json = wc.DownloadString(info.Path);
                    return(ParseFromJson(json, true));
                }
            }
            else
            {
                return(ParseFromFile(info.Path));
            }
        }
        /// <summary>
        /// 모장 서버에서 존재하는 모든 프로파일을 가져와 반환합니다.
        /// </summary>
        /// <returns>프로파일 리스트</returns>
        public static MProfileInfo[] GetProfilesFromWeb()
        {
            JArray jarr;

            using (WebClient wc = new WebClient())
            {
                var jobj = JObject.Parse(wc.DownloadString("https://launchermeta.mojang.com/mc/game/version_manifest.json"));
                jarr = JArray.Parse(jobj["versions"].ToString());
            }

            var arr = new MProfileInfo[jarr.Count];

            for (int i = 0; i < jarr.Count; i++)
            {
                var obj = jarr[i].ToObject <MProfileInfo>();
                obj.IsWeb = true;
                arr[i]    = obj;
            }
            return(arr);
        }
        /// <summary>
        /// 설정한 경로에서 다운로드된 프로파일 목록을 검색하고 반환합니다.
        /// </summary>
        /// <param name="path">검색할 폴더의 경로</param>
        /// <returns>프로파일 리스트</returns>
        public static MProfileInfo[] GetProfilesFromLocal()
        {
            var dirs = new DirectoryInfo(Minecraft.Versions).GetDirectories();
            var arr  = new List <MProfileInfo>(dirs.Length);

            for (int i = 0; i < dirs.Length; i++)
            {
                var dir      = dirs[i];
                var filepath = dir.FullName + "\\" + dir.Name + ".json";
                if (File.Exists(filepath))
                {
                    var info = new MProfileInfo();
                    info.IsWeb = false;
                    info.Name  = dir.Name;
                    info.Path  = filepath;
                    arr.Add(info);
                }
            }

            return(arr.ToArray());
        }