示例#1
0
 internal static extern bool GetCPInfo(int codePage, out CPINFO lpCpInfo);
示例#2
0
        public static string Arguments()
        {
            StringBuilder Main = new StringBuilder();

            Main.Append(" -Xmx" + Memory + "M");
            Main.Append(MoreValue);
            Main.Append(" -Djava.library.path=" + GamePath + "\\versions\\" + Selected_Version + "\\" + Selected_Version + "-natives");
            Main.Append(" -Dminecraft.launcher.brand=XMCL.Core  -Dminecraft.launcher.version=2.3");
            Main.Append(" -Dminecraft.client.jar=" + GamePath + "\\versions\\" + Selected_Version + "\\" + Selected_Version + ".jar");

            string        MainJson  = File.ReadAllText(GamePath + "\\versions\\" + Selected_Version + "\\" + Selected_Version + ".json");
            JObject       jObject   = JObject.Parse(MainJson);
            StringBuilder CP        = new StringBuilder(" -cp ");
            bool          IsVanilla = true;
            string        CPINFO;

            if (MainJson.Contains("inheritsFrom"))
            {
                IsVanilla = false;
            }
            if (IsVanilla == false)
            {
                CPINFO = GamePath + "\\versions\\" + jObject["inheritsFrom"].ToString() + "\\" + jObject["inheritsFrom"].ToString() + ".json";
            }
            else
            {
                CPINFO = GamePath + "\\versions\\" + Selected_Version + "\\" + Selected_Version + ".json";
            }

            string  VersionJson = File.ReadAllText(CPINFO);
            JObject jObject1    = JObject.Parse(VersionJson);
            JArray  jArray      = JArray.Parse(jObject1["libraries"].ToString());
            int     ID;

            try
            {
                ID = Convert.ToInt32(jObject1["id"].ToString().Split('.')[1]);
            }
            catch
            {
                ID = Convert.ToInt32(jObject1["assets"].ToString().Split('.')[1]);
            }
            string url1 = null;

            if (File.Exists(CPINFO.Replace("json", "jar")))
            {
                if (new FileInfo(CPINFO.Replace("json", "jar")).Length == Convert.ToInt32(jObject1["downloads"]["client"]["size"].ToString()))
                {
                }
                else
                {
                    url1 = jObject1["downloads"]["client"]["url"].ToString();
                }
            }
            else
            {
                url1 = jObject1["downloads"]["client"]["url"].ToString();
            }
            if (url1 == null)
            {
            }
            else
            {
                if (DownloadSource == "BMCLAPI")
                {
                    url1 = url1.Replace("https://launcher.mojang.com/", BMCLAPI_URL);
                }
                Game.downLoadHelper.DownloadFileList.Add(CPINFO.Replace("json", "jar")); Game.downLoadHelper.DownloadURLList.Add(url1);
            }
            if (Directory.Exists(CPINFO.Substring(0, CPINFO.Length - CPINFO.Replace("\\", "!").Split('!')[CPINFO.Replace("\\", "!").Split('!').Length - 1].Length)))
            {
            }
            else
            {
                Directory.CreateDirectory(CPINFO.Substring(0, CPINFO.Length - CPINFO.Replace("\\", "!").Split('!')[CPINFO.Replace("\\", "!").Split('!').Length - 1].Length));
            }
            for (int i = 0; i < jArray.Count; i++)
            {
                JObject  jObject2 = JObject.Parse(jArray[i].ToString());
                string[] name     = jObject2["name"].ToString().Split(':');
                if (jObject2["name"].ToString().Contains("3.2.1"))
                {
                    continue;
                }
                if (IsVanilla == false)
                {
                    if (name[1] + "-" + name[2] + ".jar" == "guava-15.0.jar")
                    {
                        continue;
                    }
                }
                string path = GamePath + "\\libraries\\" + name[0].Replace(".", "\\") + "\\" + name[1] + "\\" + name[2] + "\\" + name[1] + "-" + name[2] + ".jar";
                if (Directory.Exists(GamePath + "\\libraries\\" + name[0].Replace(".", "\\") + "\\" + name[1] + "\\" + name[2] + "\\"))
                {
                }
                else
                {
                    Directory.CreateDirectory(GamePath + "\\libraries\\" + name[0].Replace(".", "\\") + "\\" + name[1] + "\\" + name[2] + "\\");
                }
                if (jArray[i].ToString().Contains("natives-windows"))
                {
                    if (jObject2["natives"]["windows"].ToString() == "natives-windows-${arch}")
                    {
                        path = path.Replace(".jar", "-natives-windows-64.jar");
                    }
                    else
                    {
                        path = path.Replace(".jar", "-natives-windows.jar");
                    }
                    Game.ZipList.Add(path);
                    string url = null;
                    try
                    {
                        if (File.Exists(path))
                        {
                            if (jObject2["natives"]["windows"].ToString() == "natives-windows-${arch}")
                            {
                                if (new FileInfo(path).Length == Convert.ToInt32(jObject2["downloads"]["classifiers"]["natives-windows-64"]["size"].ToString()))
                                {
                                }
                                else
                                {
                                    url = jObject2["downloads"]["classifiers"]["natives-windows-64"]["url"].ToString();
                                }
                            }
                            else
                            {
                                if (new FileInfo(path).Length == Convert.ToInt32(jObject2["downloads"]["classifiers"]["natives-windows"]["size"].ToString()))
                                {
                                }
                                else
                                {
                                    url = jObject2["downloads"]["classifiers"]["natives-windows"]["url"].ToString();
                                }
                            }
                        }
                        else
                        {
                            if (jObject2["natives"]["windows"].ToString() == "natives-windows-${arch}")
                            {
                                url = jObject2["downloads"]["classifiers"]["natives-windows-64"]["url"].ToString();
                            }
                            else
                            {
                                url = jObject2["downloads"]["classifiers"]["natives-windows"]["url"].ToString();
                            }
                        }
                    } catch { url = null; }
                    if (url == null)
                    {
                    }
                    else
                    {
                        if (DownloadSource == "BMCLAPI")
                        {
                            url.Replace("https://libraries.minecraft.net/", BMCLAPI_URL + "maven");
                        }
                        Game.downLoadHelper.DownloadFileList.Add(path);
                        Game.downLoadHelper.DownloadURLList.Add(url);
                    }
                }
                else
                {
                    CP.Append(path + ";");
                    string url = null;
                    if (File.Exists(path))
                    {
                        if (new FileInfo(path).Length == Convert.ToInt32(jObject2["downloads"]["artifact"]["size"].ToString()))
                        {
                        }
                        else
                        {
                            url = jObject2["downloads"]["artifact"]["url"].ToString();
                        }
                    }
                    else
                    {
                        url = jObject2["downloads"]["artifact"]["url"].ToString();
                    }
                    if (url == null)
                    {
                    }
                    else
                    {
                        if (DownloadSource == "BMCLAPI")
                        {
                            url.Replace("https://libraries.minecraft.net/", BMCLAPI_URL + "maven");
                        }
                        Game.downLoadHelper.DownloadFileList.Add(path);
                        Game.downLoadHelper.DownloadURLList.Add(url);
                    }
                }
            }
            if (IsVanilla == false)
            {
                JArray jArray1 = JArray.Parse(jObject["libraries"].ToString());
                for (int i = 0; i < jArray1.Count; i++)
                {
                    JObject  jObject2 = JObject.Parse(jArray1[i].ToString());
                    string[] name     = jObject2["name"].ToString().Split(':');
                    string   path     = GamePath + "\\libraries\\" + name[0].Replace(".", "\\") + "\\" + name[1] + "\\" + name[2] + "\\" + name[1] + "-" + name[2] + ".jar";
                    CP.Append(path + ";");
                }
            }
            if (MainJson.ToLower().Contains("optifine"))
            {
                CP.Append(GamePath + "\\versions\\" + Selected_Version + "\\" + Selected_Version + ".jar ");
            }
            else
            {
                CP.Append(GamePath + "\\versions\\" + jObject1["id"] + "\\" + jObject1["id"] + ".jar ");
            }
            Main.Append(CP.ToString());
            Main.Append(jObject["mainClass"].ToString());
            if (ID >= 13)
            {
                StringBuilder minecraftArguments = new StringBuilder();
                minecraftArguments.Append("--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userType ${user_type} --versionType ${version_type} ");
                if (IsVanilla == false)
                {
                    JArray jArray2 = JArray.Parse(jObject["arguments"]["game"].ToString());
                    for (int i = 0; i < jArray2.Count; i++)
                    {
                        minecraftArguments.Append(" " + jArray2[i].ToString());
                    }
                }
                string assets_index_name;
                if (IsVanilla == true)
                {
                    assets_index_name = jObject["assets"].ToString();
                }
                else
                {
                    assets_index_name = jObject1["assets"].ToString();
                }
                string Finally = minecraftArguments.ToString().Replace("${auth_player_name}", UserName)
                                 .Replace("${version_name}", Selected_Version).Replace("${game_directory}", GamePath).Replace("${assets_root}", GamePath + "\\assets")
                                 .Replace("${assets_index_name}", assets_index_name).Replace("${auth_uuid}", UUID).Replace("${auth_access_token}", AccessToken)
                                 .Replace("${user_type}", "Mojang").Replace("${version_type}", "XMCL.Core");
                Main.Append(" " + Finally);
            }
            else
            {
                string assets_index_name;
                if (IsVanilla == true)
                {
                    assets_index_name = jObject["assets"].ToString();
                }
                else
                {
                    assets_index_name = jObject1["assets"].ToString();
                }
                string minecraftArguments = jObject["minecraftArguments"].ToString().Replace("${auth_player_name}", UserName)
                                            .Replace("${version_name}", Selected_Version).Replace("${game_directory}", GamePath).Replace("${assets_root}", GamePath + "\\assets")
                                            .Replace("${assets_index_name}", assets_index_name).Replace("${auth_uuid}", UUID).Replace("${auth_access_token}", AccessToken)
                                            .Replace("${user_type}", "Mojang").Replace("${version_type}", "XMCL.Core").Replace("${user_properties}", "{}");
                Main.Append(" " + minecraftArguments);
            }
            if (ServerIP == null)
            {
            }
            else
            {
                if (ServerIP.Length == 0)
                {
                }
                else
                {
                    if (ServerIP.Contains(";"))
                    {
                        string[] a = ServerIP.Split(';');
                        Main.Append(" --server " + a[0]);
                        Main.Append(" --port " + a[1]);
                    }
                    else
                    {
                        Main.Append(" --server " + ServerIP);
                        Main.Append(" --port " + "25565");
                    }
                }
            }
            if (IsDemo == true)
            {
                Main.Append(" --demo");
            }
            return(Main.ToString());
        }
示例#3
0
 internal static extern bool GetCPInfo(int codePage, out CPINFO lpCpInfo);
 internal static unsafe extern int GetCPInfo(uint codePage, CPINFO* lpCpInfo);