Ejemplo n.º 1
0
        public static MVersion Parse(MVersionMetadata info)
        {
            if (string.IsNullOrEmpty(info.Path))
            {
                throw new NullReferenceException("info.Path was null");
            }

            try
            {
                if (!info.IsLocalVersion)
                {
                    using (var wc = new WebClient())
                    {
                        var json = wc.DownloadString(info.Path);
                        return(ParseFromJson(json));
                    }
                }
                else
                {
                    return(ParseFromFile(info.Path));
                }
            }
            catch (MVersionParseException ex)
            {
                ex.VersionName = info.Name;
                throw;
            }
        }
Ejemplo n.º 2
0
        public static MVersion ParseAndSave(MVersionMetadata info, MinecraftPath savePath)
        {
            try
            {
                string json;
                if (!info.IsLocalVersion)
                {
                    using (var wc = new WebClient())
                    {
                        json = wc.DownloadString(info.Path);
                        var path = savePath.GetVersionJsonPath(info.Name);
                        Directory.CreateDirectory(Path.GetDirectoryName(path));
                        File.WriteAllText(path, json);

                        return(ParseFromJson(json));
                    }
                }
                else
                {
                    return(ParseFromFile(info.Path));
                }
            }
            catch (MVersionParseException ex)
            {
                ex.VersionName = info.Name;
                throw ex;
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Get All MVersionInfo from mojang server
        /// </summary>
        public MVersionCollection GetVersionMetadatasFromWeb()
        {
            string latestReleaseId  = null;
            string latestSnapshotId = null;

            MVersionMetadata latestRelease  = null;
            MVersionMetadata latestSnapshot = null;

            JArray jarr;

            using (WebClient wc = new WebClient())
            {
                var jobj = JObject.Parse(wc.DownloadString(MojangServer.Version));
                jarr = JArray.Parse(jobj["versions"].ToString());

                var latest = jobj["latest"];
                if (latest != null)
                {
                    latestReleaseId  = latest["release"]?.ToString();
                    latestSnapshotId = latest["snapshot"]?.ToString();
                }
            }

            var checkLatestRelease  = !string.IsNullOrEmpty(latestReleaseId);
            var checkLatestSnapshot = !string.IsNullOrEmpty(latestSnapshotId);

            var arr = new List <MVersionMetadata>(jarr.Count);

            for (int i = 0; i < jarr.Count; i++)
            {
                var obj = jarr[i].ToObject <MVersionMetadata>();
                obj.IsLocalVersion = false;
                obj.MType          = MVersionTypeConverter.FromString(obj.Type);
                arr.Add(obj);

                if (checkLatestRelease && obj.Name == latestReleaseId)
                {
                    latestRelease = obj;
                }
                if (checkLatestSnapshot && obj.Name == latestSnapshotId)
                {
                    latestSnapshot = obj;
                }
            }

            return(new MVersionCollection(arr.ToArray(), null, latestRelease, latestSnapshot));
        }
        public static MVersion Parse(MVersionMetadata info)
        {
            string json;

            if (!info.IsLocalVersion)
            {
                using (var wc = new WebClient())
                {
                    json = wc.DownloadString(info.Path);
                    return(ParseFromJson(json));
                }
            }
            else
            {
                return(ParseFromFile(info.Path));
            }
        }
Ejemplo n.º 5
0
        public static MVersion ParseAndSave(MVersionMetadata info, MinecraftPath savePath)
        {
            if (string.IsNullOrEmpty(info.Path))
            {
                throw new NullReferenceException("info.Path was null");
            }

            try
            {
                if (!info.IsLocalVersion)
                {
                    using (var wc = new WebClient())
                    {
                        var json = wc.DownloadString(info.Path);

                        if (!string.IsNullOrEmpty(info.Name))
                        {
                            string path          = savePath.GetVersionJsonPath(info.Name);
                            var    directoryName = Path.GetDirectoryName(path);
                            if (!string.IsNullOrEmpty((directoryName)))
                            {
                                Directory.CreateDirectory(directoryName);
                            }
                            File.WriteAllText(path, json);
                        }

                        return(ParseFromJson(json));
                    }
                }
                else
                {
                    return(ParseFromFile(info.Path));
                }
            }
            catch (MVersionParseException ex)
            {
                ex.VersionName = info.Name;
                throw;
            }
        }
        public static MVersion ParseAndSave(MVersionMetadata info, MinecraftPath savePath)
        {
            string json;

            if (!info.IsLocalVersion)
            {
                using (var wc = new WebClient())
                {
                    json = wc.DownloadString(info.Path);

                    var jsonpath = Path.Combine(savePath.Versions, info.Name);
                    Directory.CreateDirectory(jsonpath);
                    File.WriteAllText(Path.Combine(jsonpath, info.Name + ".json"), json);

                    return(ParseFromJson(json));
                }
            }
            else
            {
                return(ParseFromFile(info.Path));
            }
        }
Ejemplo n.º 7
0
        private List <MVersionMetadata> getFromLocal(MinecraftPath path)
        {
            var dirs = new DirectoryInfo(path.Versions).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();
                    info.IsLocalVersion = true;
                    info.Name           = dir.Name;
                    info.Path           = filepath;
                    info.Type           = "local";
                    info.MType          = MVersionType.Custom;
                    arr.Add(info);
                }
            }

            return(arr);
        }
Ejemplo n.º 8
0
 public static MVersion Parse(MVersionMetadata info)
 {
     try
     {
         string json;
         if (!info.IsLocalVersion)
         {
             using (var wc = new WebClient())
             {
                 json = wc.DownloadString(info.Path);
                 return(ParseFromJson(json));
             }
         }
         else
         {
             return(ParseFromFile(info.Path));
         }
     }
     catch (MVersionParseException ex)
     {
         ex.VersionName = info.Name;
         throw ex;
     }
 }