Example #1
0
        public static MinecraftVersion fromJson(string json)
        {
            MinecraftVersion version = new MinecraftVersion();

            try
            {

                JObject obj = JObject.Parse(json);

                version.Key = (string)obj["id"];
                try
                {
                    version.Type = (ReleaseType)Enum.Parse(typeof(ReleaseType), (string)obj["type"]);
                }
                catch
                {
                    version.Type = ReleaseType.unknown;
                }
                try
                {
                    version.Arguments = (ProcessArguments)Enum.Parse(typeof(ProcessArguments), (string)obj["processArguments"]);
                }
                catch {
                    version.Arguments = ProcessArguments.legacy;
                }
                version.MinecraftArguments = (string)obj["minecraftArguments"];
                version.minimumLauncherVersion = Convert.ToInt32((string)obj["minimumLauncherVersion"]);
                version.mainClass = (string)obj["mainClass"];
                version.Libraries = new List<Library>();

                foreach (JObject obj2 in obj["libraries"].Children<JObject>())
                {
                    Library lib = new Library();
                    lib.Name = (string)obj2["name"];
                    if (obj2["natives"] == null)
                        lib.IsNative = false;
                    else
                    {
                        lib.IsNative = true;
                        lib.ExtractExclusions = new List<string>();
                    }
                    if (obj2["extract"] != null)
                    {
                        foreach (JObject obj3 in obj2["extract"]["exclude"].Children<JObject>())
                        {
                            lib.ExtractExclusions.Add((string)obj3);
                        }
                    }
                    bool allow = true;
                    if (obj2["rules"] != null)
                    {

                        foreach (JObject obj3 in obj2["rules"].Children<JObject>())
                        {
                            if (obj3["action"].ToString() == "allow" && obj3["os"] != null)
                            {
                                if (obj3["os"]["name"].ToString() == "windows")
                                    allow = true;
                                else
                                    allow = false;
                            }
                            else if (obj3["action"].ToString() == "disallow" && obj3["os"] != null)
                            {
                                if (obj3["os"]["name"].ToString() == "windows")
                                    allow = false;
                            }
                        }
                    }

                    if(allow)
                        version.Libraries.Add(lib);
                }

                return version;
            }
            catch (Exception ex)
            {
                App.Log("An error occured while loading Minecraft version from json");
                App.Log("Error: " + ex.ToString());
                return null;
            }
        }
Example #2
0
 public static void ChooseVersion(MinecraftVersion version, MCVersionPage page)
 {
     MinecraftData.selectedVersion = version;
 }
Example #3
0
        public static MinecraftVersion fromJson(string json)
        {
            MinecraftVersion version = new MinecraftVersion();

            try
            {
                JObject obj = JObject.Parse(json);

                version.Key = (string)obj["id"];
                try
                {
                    version.Type = (ReleaseType)Enum.Parse(typeof(ReleaseType), (string)obj["type"]);
                }
                catch
                {
                    version.Type = ReleaseType.unknown;
                }
                try
                {
                    version.Arguments = (ProcessArguments)Enum.Parse(typeof(ProcessArguments), (string)obj["processArguments"]);
                }
                catch {
                    version.Arguments = ProcessArguments.legacy;
                }
                version.MinecraftArguments     = (string)obj["minecraftArguments"];
                version.minimumLauncherVersion = Convert.ToInt32((string)obj["minimumLauncherVersion"]);
                version.mainClass = (string)obj["mainClass"];
                version.Libraries = new List <Library>();

                foreach (JObject obj2 in obj["libraries"].Children <JObject>())
                {
                    Library lib = new Library();
                    lib.Name = (string)obj2["name"];
                    if (obj2["natives"] == null)
                    {
                        lib.IsNative = false;
                    }
                    else
                    {
                        lib.IsNative          = true;
                        lib.ExtractExclusions = new List <string>();
                    }
                    if (obj2["extract"] != null)
                    {
                        foreach (JObject obj3 in obj2["extract"]["exclude"].Children <JObject>())
                        {
                            lib.ExtractExclusions.Add((string)obj3);
                        }
                    }
                    bool allow = true;
                    if (obj2["rules"] != null)
                    {
                        foreach (JObject obj3 in obj2["rules"].Children <JObject>())
                        {
                            if (obj3["action"].ToString() == "allow" && obj3["os"] != null)
                            {
                                if (obj3["os"]["name"].ToString() == "windows")
                                {
                                    allow = true;
                                }
                                else
                                {
                                    allow = false;
                                }
                            }
                            else if (obj3["action"].ToString() == "disallow" && obj3["os"] != null)
                            {
                                if (obj3["os"]["name"].ToString() == "windows")
                                {
                                    allow = false;
                                }
                            }
                        }
                    }

                    if (allow)
                    {
                        version.Libraries.Add(lib);
                    }
                }

                return(version);
            }
            catch (Exception ex)
            {
                App.Log("An error occured while loading Minecraft version from json");
                App.Log("Error: " + ex.ToString());
                return(null);
            }
        }