Browse Source

fix forge crash for new minecraft versions, decreased delay between file downloads

Veloe 2 years ago
parent
commit
d81afbb271

+ 19 - 19
VeloeMinecraftLauncher/MinecraftLauncher/Downloader.cs

@@ -296,8 +296,8 @@ namespace VeloeMinecraftLauncher.MinecraftLauncher
                         {
                             if (!((
                                 library.downloads.classifiers.NativesWindows is not null ||
-                                    library.downloads.classifiers.NativesWindows64 is not null ||
-                                    library.downloads.classifiers.NativesWindows32 is not null) && OperatingSystem.IsWindows() ||
+                                library.downloads.classifiers.NativesWindows64 is not null ||
+                                library.downloads.classifiers.NativesWindows32 is not null) && OperatingSystem.IsWindows() ||
                                 library.downloads.classifiers.NativesLinux is not null && OperatingSystem.IsLinux()))
                                 continue;
 
@@ -570,25 +570,25 @@ namespace VeloeMinecraftLauncher.MinecraftLauncher
                     jsonData = webClient.GetStringAsync(url).Result;
                 
 
-                if (string.IsNullOrEmpty(jsonData))
-                {
-                    Settings.logger.Warning("Empty string!");
-                    return new T();
-                }
-                else
-                {
-                    if (filename != "")
+                    if (string.IsNullOrEmpty(jsonData))
+                    {
+                        Settings.logger.Warning("Empty string!");
+                        return new T();
+                    }
+                    else
                     {
-                        if (!Directory.Exists(path))
+                        if (!string.IsNullOrEmpty(filename) && !string.IsNullOrEmpty(path))
                         {
-                            Settings.logger.Debug("Creating path: {0}", path);
-                            Directory.CreateDirectory(path);
+                            if (!Directory.Exists(path))
+                            {
+                                Settings.logger.Debug("Creating path: {0}", path);
+                                Directory.CreateDirectory(path);
+                            }
+                            File.WriteAllText(path + filename, jsonData);
                         }
-                        File.WriteAllText(path + filename, jsonData);
+                        //Settings.logger.Debug("Return serialized string.");
+                        return JsonSerializer.Deserialize<T>(jsonData);
                     }
-                    //Settings.logger.Debug("Return serialized string.");
-                    return JsonSerializer.Deserialize<T>(jsonData);
-                }
                     /*
                     return string.IsNullOrEmpty(jsonData)
                                 ? new T()
@@ -631,10 +631,10 @@ namespace VeloeMinecraftLauncher.MinecraftLauncher
         }
 
         private static void waitWhileBisy(ref WebClient webClient)
-        {
+        { 
             while (webClient.IsBusy)
             {
-                Task.Delay(100).Wait();
+                Task.Delay(10).Wait();
             }
         }
     }

+ 24 - 2
VeloeMinecraftLauncher/MinecraftLauncher/StartCommandBuilder.cs

@@ -164,10 +164,24 @@ namespace VeloeMinecraftLauncher.MinecraftLauncher
                         if (!(((JsonElement)argument).ValueKind == JsonValueKind.String))
                             continue;
 
-                        var value = ((JsonElement)argument).Deserialize(typeof(string));
+                        var value = ((JsonElement)argument).Deserialize(typeof(string)) as string;
+
+                        //for new forge versions (1.18, 1.19)
+                        if (value.Contains("${version_name}"))
+                        {
+                            value = value.Replace("${version_name}", version.inheritsFrom);
+                        }
+                        if (value.Contains("${library_directory}"))
+                        {
+                            value = value.Replace("${library_directory}", Settings.MinecraftForlderPath + "libraries/");
+                        }
+                        if (value.Contains("${classpath_separator}"))
+                        {
+                            value = value.Replace("${classpath_separator}", ";");
+                        }
 
                         returnString.Append(" ");
-                        returnString.Append((value as string).Replace(" ", ""));
+                        returnString.Append(value.Replace(" ", ""));
                     }
             }
 
@@ -343,6 +357,14 @@ namespace VeloeMinecraftLauncher.MinecraftLauncher
                         if (argsValues[i] is not null)
                             returnString.Append(" " + argsValues[i]);
                         break;
+                    //for new forge
+                    default:
+                        if (argsValues[i] is not null && !argsValues[i].Contains("${"))
+                        {
+                            returnString.Append($" {args[i]} {argsValues[i]}");
+                        }
+                        break;
+
                 }
             }
             return returnString.ToString();

+ 2 - 2
VeloeMinecraftLauncher/VeloeMinecraftLauncher.csproj

@@ -9,8 +9,8 @@
     <DebugType>embedded</DebugType>
     <StartupObject>VeloeMinecraftLauncher.Program</StartupObject>
     <PlatformTarget>x64</PlatformTarget>
-    <AssemblyVersion>1.1.1.4</AssemblyVersion>
-    <FileVersion>1.1.1.4</FileVersion>
+    <AssemblyVersion>1.1.1.5</AssemblyVersion>
+    <FileVersion>1.1.1.5</FileVersion>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
     <NoWarn>NU1605</NoWarn>

+ 0 - 1
VeloeMinecraftLauncher/ViewModels/MainWindowViewModel.cs

@@ -20,7 +20,6 @@ using Avalonia.Threading;
 using System.Net;
 using System.IO.Compression;
 using ReactiveUI.Validation.Extensions;
-using Microsoft.CodeAnalysis.CSharp.Syntax;
 
 namespace VeloeMinecraftLauncher.ViewModels
 {

+ 2 - 2
VeloeMinecraftLauncher/Views/MainWindow.axaml

@@ -224,13 +224,13 @@
 									</TextBlock>
 									<TextBlock
 										FontSize="16"
-										Text="Unpublished v 1.1.2.0 (win x64, linux x64)">
+										Text="v 1.1.1.5 (win x64, linux x64)">
 									</TextBlock>
 									<TextBlock
 										VerticalAlignment="Stretch"
 										TextWrapping="Wrap"
 										ScrollViewer.VerticalScrollBarVisibility="Visible"
-										Text="Обновление интерфейса.&#10;Добавлена поддержка установщиков Fabric.&#10;Добавлена проверка файлов ванильной версии игры перед запуском.&#10;Добавлены настройки для логов игры.&#10;Добавлена проверка на пустое значение имени игрока.&#10;Добавлено открытие окна с ошибкой при неудачном запуске игры или ее краше.&#10;Исправление открытия диалогов на linux.&#10;Исправление диалога для выбора Java.&#10;Исправление ошибки при скачивании файла с ассетами игры.&#10;Вырезня неопубликованной фичи с настройкой цвета окон. (Но осадочек остался)&#10;Собрано на .NET 7.&#10;&#10;">
+										Text="Обновление интерфейса.&#10;Добавлена поддержка установщиков Fabric.&#10;Добавлена проверка файлов ванильной версии игры перед запуском.&#10;Добавлены настройки для логов игры.&#10;Добавлена проверка на пустое значение имени игрока.&#10;Добавлено открытие окна с ошибкой при неудачном запуске игры или ее краше.&#10;Исправление открытия диалогов на linux.&#10;Исправление диалога для выбора Java.&#10;Исправление ошибки при скачивании файла с ассетами игры.&#10;Исправлена работа с forge на новых версиях (1.18,1.19)&#10;Немного ускорена скорость загрузки файлов.&#10;Собрано на .NET 7.&#10;Известные проблемы: ошибка при скачивании версий ниже 1.7.2.&#10;&#10;">
 									</TextBlock>
 									<TextBlock
 										FontSize="16"