Ejemplo n.º 1
0
        private static string GetLibraries_Optifine()
        {
            VersionJson versionJson        = Global.LaunchConfiguation.MinecraftSetting.VersionJson;
            VersionJson versionJsonVanilla = JsonStorage.ParseVersionJson($"{Global.LaunchConfiguation.MinecraftSetting.MinecraftSource}\\versions\\{versionJson.inheritsFrom}");
            String      re = String.Empty;

            for (int i = 0; i < versionJson.libraries.Count; i++)
            {
                String[] split    = $"{versionJson.libraries[i].name}".Split(':');
                String   tempPath = $"{Global.LaunchConfiguation.MinecraftSetting.MinecraftSource}\\libraries\\{split[0].Replace(".", "\\")}\\{split[1]}\\{split[2]}";
                Console.WriteLine("==========================TEMP" + tempPath);
                foreach (String item in Directory.GetFiles(tempPath))
                {
                    re += $"{item};";
                }
            }
            Console.WriteLine(GetClientType(versionJsonVanilla));
            String vanilla = String.Empty;

            switch (GetClientType(versionJsonVanilla))
            {
            case 2:
                vanilla = GetLibraries_VanillaHigh();
                break;

            case 0:
                vanilla = GetLibraries_Vanilla();
                break;
            }
            return(vanilla + re);
        }
    private void OnVersionFileDownloadSuccess(byte[] pBytes)
    {
        string      json        = Encoding.UTF8.GetString(pBytes);
        VersionJson versionJson = JsonUtility.FromJson <VersionJson>(json);

        Debug.Log(json);
        AppVersion newVersion = AppVersion.Create(versionJson.version);

#if UNITY_ANDROID
        AppConst.s_AppUrl = versionJson.aOSAppUrl;
        AppConst.s_AppUrl = versionJson.aOSResUrl;
#else
        AppConst.s_AppUrl = versionJson.iOSAppUrl;
        AppConst.s_ResUrl = versionJson.iOSResUrl;
#endif
        if (AppVersion.Bigger(newVersion, AppConst.s_AppVersion))
        {
            //需要版更
            Target.ShowAlert(2, OnAppUpdate);
        }
        else if (newVersion.d > AppConst.s_AppVersion.d)
        {
            //需要热更
            Target.ShowAlert(3, OnResUpdate);
        }
        else
        {
            Target.GetFSM().ChangeState(MainState_LoadDll.Instance);
        }
    }
Ejemplo n.º 3
0
    public static void WriteVersionCodes()
    {
        Debug.Log("Writing Version Codes");
        if (!Directory.Exists("Assets/Resources"))
        {
            Directory.CreateDirectory("Assets/Resources");
        }

        var path   = "Assets/Resources/VersionCodes.json";
        var writer = new StreamWriter(path, false);
        var json   = new VersionJson
        {
            android = new VersionPlatform
            {
                versionCode   = PlayerSettings.Android.bundleVersionCode,
                versionString = PlayerSettings.bundleVersion
            },
            ios = new VersionPlatform
            {
                versionCode   = int.Parse(PlayerSettings.iOS.buildNumber),
                versionString = PlayerSettings.bundleVersion
            }
        };

        writer.Write(JsonUtility.ToJson(json));
        writer.Close();
        AssetDatabase.ImportAsset(path);
    }
Ejemplo n.º 4
0
        private void HandleRequest(object state)
        {
            try
            {
                var context = (HttpListenerContext)state;

                context.Response.StatusCode  = 200;
                context.Response.SendChunked = true;

                int totalTime = 0;


                if (context.Request.RawUrl == "/ver")
                {
                    UpgradeHelper helper = new UpgradeHelper();
                    string        baseVersion;
                    string        latestVersion;
                    string[]      vers;
                    string        currentVersion;
                    helper.ShowVersion(out baseVersion, out latestVersion, out vers, out currentVersion);



                    VersionJson json = new VersionJson();
                    json.baseVersion    = baseVersion;
                    json.latestVersion  = latestVersion;
                    json.vers           = vers;
                    json.currentVersion = currentVersion;

                    string jsonString;
                    jsonString = JsonMapper.ToJson(json);

                    var data = Encoding.UTF8.GetBytes(jsonString);
                    context.Response.OutputStream.Write(data, 0, data.Length);
                }
                else if (context.Request.RawUrl == "/upgrade")
                {
                    UpgradeHelper helper = new UpgradeHelper();
                    helper.Upgrade("");

                    var data = Encoding.UTF8.GetBytes("Launched");
                    context.Response.OutputStream.Write(data, 0, data.Length);
                }
                else if (context.Request.RawUrl == "/progress")
                {
                    string jsonString;
                    jsonString = JsonMapper.ToJson(currentProgress);
                    var data = Encoding.UTF8.GetBytes(jsonString);
                    context.Response.OutputStream.Write(data, 0, data.Length);
                }

                context.Response.OutputStream.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                // Client disconnected or some other error - ignored for this example
            }
        }
Ejemplo n.º 5
0
        void webServer_ProcessRequest(object sender, ProcessRequestEventArgs args)
        {
            try
            {
                string cmd = args.Request.Path;
                if (cmd == "/ver")
                {
                    UpgradeHelper helper = new UpgradeHelper();
                    string        baseVersion;
                    string        latestVersion;
                    string[]      vers;
                    string        currentVersion;
                    helper.ShowVersion(out baseVersion, out latestVersion, out vers, out currentVersion);



                    VersionJson json = new VersionJson();
                    json.baseVersion    = baseVersion;
                    json.latestVersion  = latestVersion;
                    json.vers           = vers;
                    json.currentVersion = currentVersion;

                    string jsonString;
                    jsonString = JsonMapper.ToJson(json);

                    var data = Encoding.UTF8.GetBytes(jsonString);
                    args.Response.BinaryWrite(data);
                }
                else if (cmd == "/upgrade")
                {
                    Thread thread1 = new Thread(() =>
                    {
                        UpgradeHelper helper = new UpgradeHelper();
                        helper.Upgrade("");
                    });
                    thread1.Start();

                    var data = Encoding.UTF8.GetBytes("Launched");
                    args.Response.BinaryWrite(data);
                }
                else if (cmd == "/progress")
                {
                    string jsonString;
                    jsonString = JsonMapper.ToJson(currentProgress);
                    var data = Encoding.UTF8.GetBytes(jsonString);
                    args.Response.BinaryWrite(data);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Http Request Exception:" + e.Message);
            }
        }
Ejemplo n.º 6
0
 private static void CheckLoad()
 {
     if (_json == null && !_failed)
     {
         var res = Resources.Load <TextAsset>("VersionCodes").text;
         _json = JsonUtility.FromJson <VersionJson>(res);
         if (_json == null)
         {
             _failed = true;
         }
     }
 }
Ejemplo n.º 7
0
 /// <summary>
 /// 0:Vanilla Low 1:Forge 2:VanillaHigh 3:Optifine
 /// </summary>
 /// <param name="versionJson"></param>
 /// <returns></returns>
 public static int GetClientType(VersionJson versionJson)
 {
     if (Convert.ToInt32(versionJson.id.Split('.')[1]) >= 13 && !versionJson.id.ToLower().Contains("optifine") && !versionJson.id.ToLower().Contains("forge"))
     {
         return(2);
     }
     else if (versionJson.id.ToLower().Contains("optifine"))
     {
         return(3);
     }
     else
     {
         return(versionJson.id.ToLower().Contains("forge") ? 1 : 0);
     }
 }
Ejemplo n.º 8
0
        private static string GetLibraries_VanillaHigh()
        {
            VersionJson versionJson = Global.LaunchConfiguation.MinecraftSetting.VersionJson;
            String      re          = String.Empty;

            for (int i = 0; i < versionJson.libraries.Count; i++)
            {
                try
                {
                    re += $"{Global.LaunchConfiguation.MinecraftSetting.MinecraftSource}\\libraries\\{versionJson.libraries[i].downloads.artifact.path};".Replace("/", "\\");
                }
                catch {}
            }
            return(re);
        }
Ejemplo n.º 9
0
        public VersionJson ReadJson(string versionNumber)
        {
            if (!File.Exists($"Resources/VersionJSONs/{ versionNumber }.json"))
            {
                throw new FileNotFoundException("This version does not yet exist.");;
            }

            var json = string.Empty;

            using (var fs = File.OpenRead($"Resources/VersionJSONs/{ versionNumber }.json"))
                using (var sr = new StreamReader(fs, new UTF8Encoding(false)))
                    json = sr.ReadToEnd();

            VersionJson Json = JsonConvert.DeserializeObject <VersionJson>(json);

            return(Json);
        }
Ejemplo n.º 10
0
        void webServer_ProcessRequest(object sender, ProcessRequestEventArgs args)
        {
            string cmd = args.Request.Path;

            if (cmd == "/ver")
            {
                UpgradeHelper helper = new UpgradeHelper();
                string        baseVersion;
                string        latestVersion;
                string[]      vers;
                string        currentVersion;
                helper.ShowVersion(out baseVersion, out latestVersion, out vers, out currentVersion);



                VersionJson json = new VersionJson();
                json.baseVersion    = baseVersion;
                json.latestVersion  = latestVersion;
                json.vers           = vers;
                json.currentVersion = currentVersion;

                string jsonString;
                jsonString = JsonMapper.ToJson(json);

                var data = Encoding.UTF8.GetBytes(jsonString);
                args.Response.BinaryWrite(data);
            }
            else if (cmd == "/upgrade")
            {
                UpgradeHelper helper = new UpgradeHelper();
                helper.Upgrade("");

                var data = Encoding.UTF8.GetBytes("Launched");
                args.Response.BinaryWrite(data);
            }
            else if (cmd == "/progress")
            {
                string jsonString;
                jsonString = JsonMapper.ToJson(currentProgress);
                var data = Encoding.UTF8.GetBytes(jsonString);
                args.Response.BinaryWrite(data);
            }
        }
Ejemplo n.º 11
0
        public static List <LibrariesInfo> GetExistLibraries()
        {
            VersionJson          versionJson = Global.LaunchConfiguation.MinecraftSetting.VersionJson;
            List <String>        libs        = new List <String>();
            List <LibrariesInfo> re          = new List <LibrariesInfo>();

            switch (GetClientType(versionJson))
            {
            case 0:
                libs = GetLibraries_Vanilla().Split(';').ToList();
                break;

            case 1:
                libs = GetLibraries_Forge().Split(';').ToList();
                break;

            case 2:
                libs = GetLibraries_VanillaHigh().Split(';').ToList();
                break;

            case 3:
                libs = GetLibraries_Optifine().Split(';').ToList();
                break;
            }
            foreach (var item in libs)
            {
                Console.WriteLine(item);
                if (!File.Exists(item))
                {
                    String uriPart = item.Replace($"{Global.LaunchConfiguation.MinecraftSetting.MinecraftSource}\\libraries\\", String.Empty).Replace("\\", "/");
                    if (String.IsNullOrEmpty(uriPart))
                    {
                        re.Add(new LibrariesInfo
                        {
                            DownloadUri = $"https://bmclapi2.bangbang93.com/maven/{uriPart}",
                            FileName    = item
                        });
                    }
                }
            }
            return(re);
        }
Ejemplo n.º 12
0
        public void CreateNewVersionJson(string versionNumber, string versionName)
        {
            if (File.Exists($"Resources/VersionJSONs/{ versionNumber }.json"))
            {
                throw new Exception("This version already exists.");
            }

            var json = new VersionJson
            {
                Version     = versionNumber,
                Name        = versionName,
                ReleaseDate = new ReleaseDate
                {
                    Started = DateTime.Now, Release = DateTime.Now
                },
                PatchNotes = "empty",
                MinorNotes = "empty"
            };

            SaveJson(json, versionNumber);
        }
Ejemplo n.º 13
0
        public static async Task <List <AssetsModule> > ParseAssetsAsync()
        {
            VersionJson versionName = Global.LaunchConfiguation.MinecraftSetting.VersionJson;
            String      jsonName;

            VersionJson versionJson;
            int         clientType = GetClientType(Global.LaunchConfiguation.MinecraftSetting.VersionJson);

            if (clientType == 1 || clientType == 3)
            {
                versionJson = JsonStorage.ParseVersionJson(Global.LaunchConfiguation.MinecraftSetting.VersionJson.inheritsFrom);
                jsonName    = $"{Global.LaunchConfiguation.MinecraftSetting.MinecraftSource}\\assets\\indexes\\{versionJson.assetIndex.id}.json";
                if (!File.Exists(jsonName))
                {
                    await NetTools.DownloadFileAsync(new Uri($"https://bmclapi2.bangbang93.com/v1/packages/{versionJson.assetIndex.sha1}/{versionJson.assetIndex.id}.json"), jsonName);
                }
            }
            else
            {
                versionJson = Global.LaunchConfiguation.MinecraftSetting.VersionJson;
                jsonName    = $"{Global.LaunchConfiguation.MinecraftSetting.MinecraftSource}\\assets\\indexes\\{versionName.assetIndex.id}.json";
                if (!File.Exists(jsonName))
                {
                    await NetTools.DownloadFileAsync(new Uri($"https://bmclapi2.bangbang93.com/v1/packages/{versionJson.assetIndex.sha1}/{versionJson.assetIndex.id}.json"), jsonName);
                }
            }

            String jsonText        = File.ReadAllText(jsonName);
            List <AssetsModule> re = new List <AssetsModule>();

            foreach (DictionaryEntry item in AnalayJson(jsonText))
            {
                foreach (DictionaryEntry sub in AnalayJson(item.Value.ToString()))
                {
                    re.Add(JsonConvert.DeserializeObject <AssetsModule>(sub.Value.ToString()));
                }
            }

            return(re);
        }
Ejemplo n.º 14
0
        public static string GetLibraries()
        {
            VersionJson versionJson = Global.LaunchConfiguation.MinecraftSetting.VersionJson;

            switch (GetClientType(versionJson))
            {
            case 0:
                return(GetLibraries_Vanilla());

            case 1:
                return(GetLibraries_Forge());

            case 2:
                return(GetLibraries_VanillaHigh());

            case 3:
                return(GetLibraries_Optifine());

            default:
                return(null);
            }
        }
Ejemplo n.º 15
0
    static void GenVersion()
    {
        VersionJson version = new VersionJson()
        {
            Version = GameConfig.Version
        };

        string outPath = GameConfig.GetAssetBundleOutputPath();
        string path    = outPath + "/" + GameConfig.GameName.ToLower() + "/version.txt";

        if (File.Exists(path))
        {
            File.Delete(path);
        }

        string content = JsonUtility.ToJson(version, true);

        File.WriteAllText(path, content);

        AssetDatabase.Refresh();
        Debug.Log("产生版本文件");
    }
Ejemplo n.º 16
0
        public void SaveJson(VersionJson json, string versionNumber)
        {
            string jsonString = JsonConvert.SerializeObject(json, Formatting.Indented);

            File.WriteAllText($"Resources/VersionJSONs/{ versionNumber }.json", jsonString);
        }
Ejemplo n.º 17
0
        void ThreadFunc()
        {
            //listener = new HttpListener();

            ////listener.Prefixes.Add("http://+:8081/");
            //listener.Prefixes.Add("http://localhost:8081/");
            //listener.Prefixes.Add("http://127.0.0.1:8081/");

            //listener.Start();
            //while (working)
            //{
            //    try
            //    {
            //        var context = listener.GetContext();
            //        ThreadPool.QueueUserWorkItem(o => HandleRequest(context));
            //    }
            //    catch (Exception)
            //    {
            //        // Ignored for this example
            //    }
            //}

            //listener.Close();



            //TinyWeb.WebServer webServer = new TinyWeb.WebServer();

            //webServer.EndPoint = new IPEndPoint(0, 8081);
            //webServer.ProcessRequest += new TinyWeb.ProcessRequestEventHandler(this.webServer_ProcessRequest);
            //webServer.IsStarted = true;


            using (var server = new NHttp.HttpServer())
            {
                server.RequestReceived += (s, e) =>
                {
                    // The response must be written to e.Response.OutputStream.
                    // When writing text, a StreamWriter can be used.
                    string cmd = e.Request.RawUrl;


                    using (System.IO.BinaryWriter writer = new BinaryWriter(e.Response.OutputStream))
                    {
                        if (cmd == "/ver")
                        {
                            UpgradeHelper helper = new UpgradeHelper();
                            string        baseVersion;
                            string        latestVersion;
                            string[]      vers;
                            string        currentVersion;
                            helper.ShowVersion(out baseVersion, out latestVersion, out vers, out currentVersion);


                            VersionJson json = new VersionJson();
                            json.baseVersion    = baseVersion;
                            json.latestVersion  = latestVersion;
                            json.vers           = vers;
                            json.currentVersion = currentVersion;

                            string jsonString;
                            jsonString = JsonMapper.ToJson(json);

                            var data = Encoding.UTF8.GetBytes(jsonString);
                            writer.Write(data, 0, data.Length);
                        }
                        else if (cmd == "/upgrade")
                        {
                            Thread thread1 = new Thread(() =>
                            {
                                UpgradeHelper helper = new UpgradeHelper();
                                helper.Upgrade("");
                            });
                            thread1.Start();

                            var data = Encoding.UTF8.GetBytes("Launched");
                            writer.Write(data, 0, data.Length);
                        }
                        else if (cmd == "/progress")
                        {
                            string jsonString;
                            jsonString = JsonMapper.ToJson(currentProgress);
                            var data = Encoding.UTF8.GetBytes(jsonString);
                            writer.Write(data, 0, data.Length);
                        }
                    }
                };

                server.EndPoint = new IPEndPoint(IPAddress.Any, 8081);

                server.Start();
                Console.ReadKey();
            }
        }
Ejemplo n.º 18
0
        public string GenerateLaunchArgs()
        {
            LaunchConfiguation launchConfiguation = Global.LaunchConfiguation;
            VersionJson        versionJson        = Global.LaunchConfiguation.MinecraftSetting.VersionJson;;

            int    ClientType      = Libraries.GetClientType(versionJson);
            String VersionPath     = launchConfiguation.MinecraftSetting.MinecraftSource + $"\\versions\\{launchConfiguation.MinecraftSetting.VersionJson.id}";
            String VersionName     = launchConfiguation.MinecraftSetting.VersionJson.id;
            String MinecraftSource = launchConfiguation.MinecraftSetting.MinecraftSource;

            String LauncherArg_NativesPath = VersionPath.Contains("Roaming") ? $"\"{launchConfiguation}\\$natives\"" : $"{VersionPath}\\{VersionName}-natives";
            String LauncherArg_JarPath     = ClientType == 1 ? $"{MinecraftSource}\\versions\\{versionJson.inheritsFrom}\\{versionJson.inheritsFrom}.jar" : $"{VersionPath}\\{VersionName}.jar";

            String LauncherArgs = launchConfiguation.JavaSetting.JvmArgument;

            LauncherArgs += "-XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump ";
            if (ClientType == 1)
            {
                LauncherArgs += $"-Dminecraft.client.jar=\"{MinecraftSource}\\versions\\{versionJson.inheritsFrom}\\{versionJson.inheritsFrom}.jar\" ";
            }
            LauncherArgs += $"-Xss1M -Djava.library.path={LauncherArg_NativesPath} ";
            LauncherArgs += $"-Dminecraft.launcher.brand={launchConfiguation.MinecraftSetting.LauncherName } -Dminecraft.launcher.version=ML.net ";

            LauncherArgs += $"-Xmx{launchConfiguation.JavaSetting.MaxMemorySize}G -Xmn{launchConfiguation.JavaSetting.MinMemorySize}G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 ";
            LauncherArgs += $"-XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M ";
            LauncherArgs += $"-cp \"{Libraries.GetLibraries()}{LauncherArg_JarPath}\" {versionJson.mainClass} ";

            LauncherArgs += $"--username {Global.AuthConfiguation.PlayerName} ";
            LauncherArgs += $"--version \"{launchConfiguation.MinecraftSetting.LauncherName}\" ";

            LauncherArgs += $"--gameDir {launchConfiguation.MinecraftSetting.MinecraftSource} ";
            LauncherArgs += $"--assetsDir {launchConfiguation.MinecraftSetting.MinecraftSource}\\assets ";
            LauncherArgs += ClientType == 3 ? $"--assetIndex {versionJson.inheritsFrom.Split('.')[0]}.{versionJson.inheritsFrom.Split('.')[1]} " : $"--assetIndex {versionJson.assets} ";

            LauncherArgs += $"--uuid {Global.AuthConfiguation.PlayerUUID} ";
            LauncherArgs += $"--accessToken {Global.AuthConfiguation.PlayerToken} ";
            LauncherArgs += $"--userType mojang ";

            if (!String.IsNullOrEmpty(launchConfiguation.MinecraftSetting.AutoConnectServer))
            {
                LauncherArgs += $"--server {launchConfiguation.MinecraftSetting.AutoConnectServer} --port 25565 ";
            }
            if (launchConfiguation.MinecraftSetting.WindowWidth != 0 && launchConfiguation.MinecraftSetting.WindowHeight != 0)
            {
                LauncherArgs += $"--width {launchConfiguation.MinecraftSetting.WindowWidth} --height {launchConfiguation.MinecraftSetting.WindowHeight} ";
            }

            LauncherArgs += "--userProperties {}";
            switch (ClientType)
            {
            case 1:
                LauncherArgs += " --tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker";
                break;

            case 3:
                LauncherArgs += " --tweakClass optifine.OptiFineTweaker";
                break;

            default:
                break;
            }

            return(LauncherArgs);
        }
Ejemplo n.º 19
0
        void ThreadFunc()
        {
            //listener = new HttpListener();

            ////listener.Prefixes.Add("http://+:8081/");
            //listener.Prefixes.Add("http://localhost:8081/");
            //listener.Prefixes.Add("http://127.0.0.1:8081/");

            //listener.Start();
            //while (working)
            //{
            //    try
            //    {
            //        var context = listener.GetContext();
            //        ThreadPool.QueueUserWorkItem(o => HandleRequest(context));
            //    }
            //    catch (Exception)
            //    {
            //        // Ignored for this example
            //    }
            //}

            //listener.Close();



            //TinyWeb.WebServer webServer = new TinyWeb.WebServer();

            //webServer.EndPoint = new IPEndPoint(0, 8081);
            //webServer.ProcessRequest += new TinyWeb.ProcessRequestEventHandler(this.webServer_ProcessRequest);
            //webServer.IsStarted = true;

            using (var server = new NHttp.HttpServer())
            {
                server.RequestReceived += (s, e) =>
                {
                    using (System.IO.BinaryWriter writer = new BinaryWriter(e.Response.OutputStream))
                    {
                        string cmd = e.Request.RawUrl;


                        try
                        {
                            // The response must be written to e.Response.OutputStream.
                            // When writing text, a StreamWriter can be used.



                            if (cmd == "/ver")
                            {
                                UpgradeHelper helper = new UpgradeHelper();
                                string        baseVersion;
                                string        latestVersion;
                                string[]      vers;
                                string        currentVersion;
                                helper.ShowVersion(out baseVersion, out latestVersion, out vers, out currentVersion);


                                VersionJson json = new VersionJson();
                                json.baseVersion    = baseVersion;
                                json.latestVersion  = latestVersion;
                                json.vers           = vers;
                                json.currentVersion = currentVersion;
                                json.state          = "success";

                                string jsonString;
                                jsonString = JsonMapper.ToJson(json);

                                var data = Encoding.UTF8.GetBytes(jsonString);
                                writer.Write(data, 0, data.Length);
                            }
                            else if (cmd == "/upgrade")
                            {
                                string progressName = "\nu准备升级";
                                AsyncServer.Instance.SetProgress(progressName, 0);

                                StateJson json = new StateJson();
                                if (upgrading)
                                {
                                    json.state = "already launched";
                                }
                                else
                                {
                                    Thread thread1 = new Thread(() =>
                                    {
                                        upgrading            = true;
                                        UpgradeHelper helper = new UpgradeHelper();
                                        helper.Upgrade("");
                                        upgrading = false;
                                    });
                                    thread1.Start();

                                    json.state = "success";
                                }

                                string jsonString;
                                jsonString = JsonMapper.ToJson(json);
                                var data = Encoding.UTF8.GetBytes(jsonString);
                                writer.Write(data, 0, data.Length);
                            }
                            else if (cmd == "/progress")
                            {
                                string jsonString;
                                currentProgress.state = "success";
                                jsonString            = JsonMapper.ToJson(currentProgress);
                                var data = Encoding.UTF8.GetBytes(jsonString);
                                writer.Write(data, 0, data.Length);
                            }
                        }
                        catch (Exception ex)
                        {
                            AsyncServer.Instance.SetProgress("Idle", 0);

                            string jsonString = "";
                            if (cmd == "/ver")
                            {
                                VersionJson json = new VersionJson();
                                json.state = "net error";
                                jsonString = JsonMapper.ToJson(json);
                            }
                            else if (cmd == "/upgrade")
                            {
                                StateJson json = new StateJson();
                                json.state = "net error";
                                jsonString = JsonMapper.ToJson(json);
                            }
                            else if (cmd == "/progress")
                            {
                                ProgressJson json = new ProgressJson();
                                json.state = "net error";
                                jsonString = JsonMapper.ToJson(json);
                            }

                            var data = Encoding.UTF8.GetBytes(jsonString);
                            writer.Write(data, 0, data.Length);

                            Console.WriteLine("Http Request Exception:" + ex.Message);
                        }
                    }
                };

                server.EndPoint = new IPEndPoint(IPAddress.Any, 8081);

                server.Start();

                while (true)
                {
                    Thread.Sleep(1000);
                }
            }
        }
        public Task UpdateMappingDataTask()
        {
            return(new Task(() => {
                RefreshTimer.Stop();
                OnUpdate?.Invoke();
                JsonTextReader jReader;
                using (var client = new WebClient()) {
                    var data = Encoding.UTF8.GetString(client.DownloadData(Properties.Settings.Default.VersionJsonUrl));
                    jReader = new JsonTextReader(new StringReader(data));
                }

                MappingData.Clear();
                VersionJson jsonInput = VersionJson.Init;
                string keyVersion = null;
                MappingType keyMapType = MappingType.Snapshot;

                while (jReader.Read())
                {
                    var value = jReader.Value;
                    if (jReader.Value != null)
                    {
                        switch (jsonInput)
                        {
                        case VersionJson.MCVersion:
                            MappingData[keyVersion = (string)value] = new Dictionary <MappingType, SortedSet <int> >();
                            break;

                        case VersionJson.MapType:
                            if (!Enum.TryParse((string)value, true, out keyMapType))
                            {
                                throw new InvalidDataException("Expected Mapping type.");
                            }
                            break;

                        case VersionJson.Version:
                            if (!MappingData[keyVersion].ContainsKey(keyMapType))
                            {
                                MappingData[keyVersion][keyMapType] = new SortedSet <int>();
                            }
                            MappingData[keyVersion][keyMapType].Add((int)(long)value);
                            break;

                        default:
                            break;
                        }
                    }
                    else
                    {
                        if (jReader.TokenType == JsonToken.StartObject)
                        {
                            jsonInput += 1;
                        }
                        else if (jReader.TokenType == JsonToken.StartArray)
                        {
                            jsonInput += 1;
                        }
                        else if (jReader.TokenType == JsonToken.EndObject)
                        {
                            jsonInput -= 1;
                        }
                        else if (jReader.TokenType == JsonToken.EndArray)
                        {
                            jsonInput -= 1;
                        }
                    }
                }

                Dispatcher.Invoke(() => {
                    var versions = new List <string>(MappingData.Keys);
                    versions.Sort(MCVersionComparer.Comparer);
                    versions.Reverse();
                    versions.Insert(0, "Semi-Live");
                    versions.Add("Custom");
                    MCVersionDropDown.ItemsSource = versions;
                });

                RefreshTimer.Start();
                OnUpdateFinished?.Invoke();
                IsUpdating = false;
            }));
        }