use crate::state::{JavaVersion, State}; pub async fn get_optimal_jre_key( instance_id: &str, ) -> crate::Result> { let state = State::get().await?; let context = crate::state::instances::commands::get_instance_launch_context( instance_id, &state.pool, ) .await? .ok_or_else(|| { crate::ErrorKind::OtherError(format!( "Tried to resolve a nonexistent instance {instance_id}!" )) })?; let (minecraft, version_index) = crate::launcher::resolve_minecraft_manifest( &context.applied_content_set.game_version, &state, ) .await?; let version = &minecraft.versions[version_index]; let loader_version = crate::launcher::get_loader_version_from_profile( &context.applied_content_set.game_version, context.applied_content_set.loader, context.applied_content_set.loader_version.as_deref(), ) .await?; let version_info = crate::launcher::download::download_version_info( &state, version, context.applied_content_set.loader, loader_version.as_ref(), None, None, None, ) .await?; let major_version = version_info .java_version .as_ref() .map_or(8, |java| java.major_version); crate::api::jre::find_java_for_version(major_version).await }