@@ -345,7 +345,7 @@ export function installAssetsTask(version: ResolvedVersion, options: AssetsOptio
345
345
346
346
let { objects } = JSON . parse ( await readFile ( jsonPath ) . then ( ( b ) => b . toString ( ) ) ) as AssetIndex ;
347
347
let objectArray = Object . keys ( objects ) . map ( ( k ) => ( { name : k , ...objects [ k ] } ) ) ;
348
- let tasks = objectArray . map ( ( o ) => installAssetTask ( version . id , o , folder , options ) ) ;
348
+ let tasks = objectArray . map ( ( o ) => installAssetTask ( o , folder , options ) ) ;
349
349
let sizes = objectArray . map ( ( a ) => a . size ) . map ( ( a , b ) => a + b , 0 ) ;
350
350
351
351
await batchedTask ( context , tasks , sizes , options . assetsDownloadConcurrency || options . maxConcurrency , options . throwErrorImmediately ,
@@ -384,6 +384,44 @@ export function installLibrariesTask<T extends Pick<ResolvedVersion, "minecraftD
384
384
} , { version : Reflect . get ( version , "id" ) || "" } ) ;
385
385
}
386
386
387
+ /**
388
+ * Only install several resolved assets.
389
+ * @param assets The assets to install
390
+ * @param folder The minecraft folder
391
+ * @param options The asset option
392
+ */
393
+ export function installResolvedAssetsTask ( assets : {
394
+ name : string ;
395
+ hash : string ;
396
+ size : number ;
397
+ } [ ] , folder : MinecraftFolder , options : AssetsOption = { } ) {
398
+ async function installAssets ( context : Task . Context ) {
399
+ normailzeDownloader ( options ) ;
400
+ await ensureDir ( folder . getPath ( "assets" , "objects" ) ) ;
401
+
402
+ let tasks = assets . map ( ( o ) => installAssetTask ( o , folder , options ) ) ;
403
+ let sizes = assets . map ( ( a ) => a . size ) . map ( ( a , b ) => a + b , 0 ) ;
404
+
405
+ await batchedTask ( context , tasks , sizes , options . assetsDownloadConcurrency || options . maxConcurrency , options . throwErrorImmediately ,
406
+ ( ) => `Errors during install assets at ${ folder . root } ` ) ;
407
+ }
408
+ return task ( "installAssets" , installAssets ) ;
409
+ }
410
+
411
+ /**
412
+ * Only install several resolved assets.
413
+ * @param assets The assets to install
414
+ * @param folder The minecraft folder
415
+ * @param options The asset option
416
+ */
417
+ export function installResolvedAssets ( assets : {
418
+ name : string ;
419
+ hash : string ;
420
+ size : number ;
421
+ } [ ] , folder : MinecraftFolder , options : AssetsOption = { } ) {
422
+ return installResolvedAssetsTask ( assets , folder , options ) . execute ( ) . wait ( ) ;
423
+ }
424
+
387
425
/**
388
426
* Only install several resolved libraries
389
427
* @param libraries The resolved libraries
@@ -602,7 +640,10 @@ function installVersionJarTask(type: "client" | "server", version: ResolvedVersi
602
640
} ) ;
603
641
}
604
642
605
- function installLibraryTask ( lib : ResolvedLibrary , folder : MinecraftFolder , options : HasDownloader < Option > ) {
643
+ /**
644
+ * Install single library task.
645
+ */
646
+ function installLibraryTask ( lib : ResolvedLibrary , folder : MinecraftFolder , options : HasDownloader < LibraryOption > ) {
606
647
return task ( "library" , async function library ( context : Task . Context ) {
607
648
context . update ( 0 , - 1 , lib . name ) ;
608
649
@@ -624,7 +665,10 @@ function installLibraryTask(lib: ResolvedLibrary, folder: MinecraftFolder, optio
624
665
} , { lib : lib . name } ) ;
625
666
}
626
667
627
- function installAssetTask ( version : string , asset : { name : string , hash : string , size : number } , folder : MinecraftFolder , option : HasDownloader < AssetsOption > ) {
668
+ /**
669
+ * Install single asset task.
670
+ */
671
+ function installAssetTask ( asset : { name : string , hash : string , size : number } , folder : MinecraftFolder , option : HasDownloader < AssetsOption > ) {
628
672
return task ( "assets" , async function assets ( context : Task . Context ) {
629
673
const assetsHosts = [
630
674
...normalizeArray ( option . assetsHost ) ,
@@ -647,7 +691,7 @@ function installAssetTask(version: string, asset: { name: string, hash: string,
647
691
} ,
648
692
destination : file ,
649
693
} , option ) ( context ) ;
650
- } , { version } ) ;
694
+ } ) ;
651
695
}
652
696
653
697
const DEFAULT_MAVENS = [ "https://repo1.maven.org/maven2/" ] ;
0 commit comments