Browse Source

fixed assets download for pre1.6 versions

Veloe 1 year ago
parent
commit
be9006a0ef

+ 18 - 9
VeloeMinecraftLauncher/Utils/Downloader.cs

@@ -291,7 +291,7 @@ internal class Downloader
     private async Task DownloadAssets(HttpClient httpClient, Entity.Version.Version versionJson, CancellationToken cancellationToken)
     {
         var assetsJson = await Downloader.DownloadAndDeserializeJsonData<AssetsManifest>(versionJson.AssetIndex.Url);
-        var assetsPath = Settings.minecraftForlderPath + "assets/" + versionJson.Assets + "/objects";
+        var assetsPath = $"{Settings.minecraftForlderPath}{(versionJson.Assets == "pre-1.6" ? "resources" :   $"assets/{versionJson.Assets}/objects")}";
         var assetsUrl = "https://resources.download.minecraft.net/";
 
         //download assets json
@@ -313,32 +313,41 @@ internal class Downloader
         {
             assetsDownloadTasks.Add(Task.Run(async () =>
             {
+                var isPreVersion = versionJson.Assets == "pre-1.6";
 
-                var folder = asset.Value.Hash[..2];
+                var folder = isPreVersion ?
+                    Path.GetDirectoryName(asset.Key) :
+                    asset.Value.Hash[..2];
+
+                var name = isPreVersion ?
+                    Path.GetFileName(asset.Key) :
+                    asset.Value.Hash;
+
+                var assetRoot = folder.Contains("icons") ? $"{Settings.minecraftForlderPath}assets/{versionJson.Assets}" : assetsPath;
 
                 var chksum = String.Empty;
                 //here hash check
-                if (File.Exists(assetsPath + "/" + folder + "/" + asset.Value.Hash))
+                if (File.Exists(Path.Combine(assetRoot, folder, name)))
                 {
                     Parameters.Action.DownloadingFileName($"Checking hash {assetsIterator} of {assetsCount}");
-                    using FileStream fop = File.OpenRead(assetsPath + "/" + folder + "/" + asset.Value.Hash);
+                    using FileStream fop = File.OpenRead(Path.Combine(assetRoot, folder, name));
                     byte[] hash = System.Security.Cryptography.SHA1.Create().ComputeHash(fop);
                     chksum = BitConverter.ToString(hash).Replace("-", String.Empty).ToLower();
                     fop.Close();
                 }
 
-                if (chksum != asset.Value.Hash)
+                if (chksum != (isPreVersion ? asset.Value.Hash : name))
                 {
                     await concurrencySemaphore.WaitAsync(cancellationToken);
                     try
                     {
-                        if (!Directory.Exists(assetsPath + "/" + folder))
-                            Directory.CreateDirectory(assetsPath + "/" + folder);
+                        if (!Directory.Exists(assetRoot + "/" + folder))
+                            Directory.CreateDirectory(assetRoot + "/" + folder);
 
-                        Settings.logger.Debug("Downloading asset: {0} ", asset.Value.Hash);
+                        Settings.logger.Debug("Downloading asset: {0} ", name);
                         //DownloadingFileName($"Asset {assetsIterator} of {assetsCount}");
                         Parameters.Action.DownloadingFileName($"Asset {assetsIterator} of {assetsCount}");
-                        await DownloadFileAsync(assetsUrl + folder + "/" + asset.Value.Hash, assetsPath + "/" + folder + "/" + asset.Value.Hash, cancellationToken);
+                        await DownloadFileAsync(assetsUrl + asset.Value.Hash[..2] + "/" + asset.Value.Hash, Path.Combine(assetRoot, folder , name), cancellationToken, httpClient);
                     }
                     finally
                     {

+ 2 - 2
VeloeMinecraftLauncher/VeloeMinecraftLauncher.csproj

@@ -9,8 +9,8 @@
 		<DebugType>embedded</DebugType>
 		<StartupObject>VeloeMinecraftLauncher.Program</StartupObject>
 		<PlatformTarget>x64</PlatformTarget>
-		<AssemblyVersion>1.5.0.11</AssemblyVersion>
-		<FileVersion>1.5.0.11</FileVersion>
+		<AssemblyVersion>1.5.0.19</AssemblyVersion>
+		<FileVersion>1.5.0.19</FileVersion>
 		<Configurations>Debug;Release</Configurations>
 	</PropertyGroup>
 	<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">