@@ -641,9 +641,7 @@ pub async fn retrieve_data(
641641 . expect ( "Safe to unwrap since we ensure it's valid in version_json already" )
642642 } ) ,
643643 compliance_level : 1 ,
644- assets_index_url : Some (
645- version_info. asset_index . sha1 . clone ( ) ,
646- ) ,
644+ assets_index_url : Some ( format_url ( & assets_path) ) ,
647645 assets_index_sha1 : Some (
648646 version_info. asset_index . sha1 . clone ( ) ,
649647 ) ,
@@ -691,19 +689,16 @@ pub async fn retrieve_data(
691689 }
692690
693691 let version_bytes = serde_json:: to_vec ( & version_info) ?;
694- let version_hash = uploader. upload_cas (
692+ let _version_hash = uploader. upload_cas (
695693 version_bytes. clone ( ) ,
696694 Some ( "application/json" . to_string ( ) ) ,
697695 s3_client,
698696 semaphore. clone ( ) ,
699697 ) . await ?;
700698
701- manifest_builder. add_version (
702- "minecraft" ,
703- version_info. id . clone ( ) ,
704- version_hash,
705- version_bytes. len ( ) as u64 ,
706- ) ;
699+ // NOTE: We don't call manifest_builder.add_version() for minecraft here.
700+ // Instead, we use set_loader_versions() with the full VersionManifest at the end
701+ // to preserve rich metadata (type, url, time, releaseTime, sha1, etc.)
707702
708703 Ok :: < ( ) , crate :: infrastructure:: error:: Error > ( ( ) )
709704 }
@@ -861,6 +856,7 @@ pub async fn retrieve_data(
861856 lwjgl. version . clone ( ) ,
862857 lwjgl_hash,
863858 lwjgl_bytes. len ( ) as u64 ,
859+ lwjgl. release_time ,
864860 ) ;
865861
866862 } else {
@@ -887,13 +883,22 @@ pub async fn retrieve_data(
887883 let elapsed = now. elapsed ( ) ;
888884 info ! ( "Elapsed: {:.2?}" , elapsed) ;
889885
890- Ok ( Arc :: try_unwrap ( cloned_manifest)
886+ // Get the final manifest with all processed versions
887+ let final_manifest = Arc :: try_unwrap ( cloned_manifest)
891888 . map_err ( |err| {
892889 crate :: infrastructure:: error:: invalid_input (
893890 format ! ( "Failed to unwrap Arc<Mutex<VersionManifest>>: {:?}" , err)
894891 )
895892 } ) ?
896- . into_inner ( ) )
893+ . into_inner ( ) ;
894+
895+ // Set the full Minecraft versions JSON in manifest_builder
896+ // This preserves rich metadata (type, url, time, releaseTime, sha1, complianceLevel, etc.)
897+ let versions_json = serde_json:: to_value ( & final_manifest. versions ) ?;
898+ manifest_builder. set_loader_versions ( "minecraft" , versions_json) ;
899+ info ! ( version_count = final_manifest. versions. len( ) , "Set Minecraft versions with rich metadata in CAS manifest builder" ) ;
900+
901+ Ok ( final_manifest)
897902}
898903
899904#[ derive( Deserialize , Debug , Clone ) ]
0 commit comments