Don't search for external JDKs in OneClient
This commit is contained in:
parent
fbb30b7187
commit
80c7797ad1
7 changed files with 59 additions and 38 deletions
|
|
@ -301,15 +301,12 @@ export type VersionType =
|
|||
*/
|
||||
"old_beta"
|
||||
|
||||
const ARGS_MAP = { 'oneclient':'{"getClustersGroupedByMajor":[],"getVersions":[],"getBundlesFor":["cluster_id"]}', 'core':'{"getLoadersForVersion":["mc_version"],"convertUsernameUUID":["username_uuid"],"getClusters":[],"getGameVersions":[],"getUsers":[],"killProcess":["pid"],"getClusterById":["id"],"getMultiplePackages":["provider","slugs"],"removePackage":["cluster_id","package_hash"],"fetchMinecraftProfile":["uuid"],"changeSkin":["access_token","skin_url","skin_variant"],"getPackageBody":["provider","body"],"getWorlds":["id"],"createSettingsProfile":["name"],"removeUser":["uuid"],"getLinkedPackages":["cluster_id"],"installModpack":["modpack","cluster_id"],"removeCluster":["id"],"changeCape":["access_token","cape_uuid"],"uploadSkinBytes":["access_token","skin_data","image_format","skin_variant"],"getLogByName":["id","name"],"getRunningProcessesByClusterId":["cluster_id"],"fetchLoggedInProfile":["access_token"],"removeCape":["access_token"],"open":["input"],"getDefaultUser":["fallback"],"getLogs":["id"],"updateClusterProfile":["name","profile"],"setDiscordRPCMessage":["message"],"isClusterRunning":["cluster_id"],"updateClusterById":["id","request"],"getUser":["uuid"],"writeSettings":["setting"],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"getProfileOrDefault":["name"],"getPackage":["provider","slug"],"getGlobalProfile":[],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"setDefaultUser":["uuid"],"getRunningProcesses":[],"createCluster":["options"],"openMsaLogin":[],"launchCluster":["id","uuid"],"getScreenshots":["id"],"readSettings":[],"searchPackages":["provider","query"],"downloadExternalPackage":["package","cluster_id","force","skip_compatibility"],"getUsersFromAuthor":["provider","author"]}', 'debug':'{"getOsVersion":[],"getType":[],"getFamily":[],"getBuildTimestamp":[],"isInDev":[],"getArch":[],"getLocale":[],"openDevTools":[],"getPlatform":[],"getGitCommitHash":[],"getPackageVersion":[]}', 'events':'{"ingress":["event"],"message":["event"],"process":["event"]}', 'folders':'{"fromCluster":["folder_name"],"openCluster":["folder_name"]}' }
|
||||
export type Router = { 'events': { ingress: (event: IngressPayload) => Promise<void>,
|
||||
message: (event: MessagePayload) => Promise<void>,
|
||||
process: (event: ProcessPayload) => Promise<void> },
|
||||
'folders': { fromCluster: (folderName: string) => Promise<string>,
|
||||
openCluster: (folderName: string) => Promise<null> },
|
||||
'oneclient': { getClustersGroupedByMajor: () => Promise<Partial<{ [key in number]: ClusterModel[] }>>,
|
||||
const ARGS_MAP = { 'events':'{"message":["event"],"process":["event"],"ingress":["event"]}', 'folders':'{"fromCluster":["folder_name"],"openCluster":["folder_name"]}', 'oneclient':'{"getClustersGroupedByMajor":[],"getBundlesFor":["cluster_id"],"getVersions":[]}', 'debug':'{"openDevTools":[],"getType":[],"getOsVersion":[],"isInDev":[],"getArch":[],"getFamily":[],"getPackageVersion":[],"getLocale":[],"getPlatform":[],"getBuildTimestamp":[],"getGitCommitHash":[]}', 'core':'{"convertUsernameUUID":["username_uuid"],"getMultiplePackages":["provider","slugs"],"removeCluster":["id"],"getLinkedPackages":["cluster_id"],"getClusterById":["id"],"getDefaultUser":["fallback"],"createCluster":["options"],"getRunningProcesses":[],"openMsaLogin":[],"getGlobalProfile":[],"downloadExternalPackage":["package","cluster_id","force","skip_compatibility"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"getScreenshots":["id"],"changeSkin":["access_token","skin_url","skin_variant"],"getProfileOrDefault":["name"],"removeCape":["access_token"],"getClusters":[],"getUser":["uuid"],"killProcess":["pid"],"getUsers":[],"setDiscordRPCMessage":["message"],"open":["input"],"getLogs":["id"],"getPackage":["provider","slug"],"uploadSkinBytes":["access_token","skin_data","image_format","skin_variant"],"getPackageBody":["provider","body"],"isClusterRunning":["cluster_id"],"getGameVersions":[],"createSettingsProfile":["name"],"getUsersFromAuthor":["provider","author"],"getRunningProcessesByClusterId":["cluster_id"],"installModpack":["modpack","cluster_id"],"getLoadersForVersion":["mc_version"],"changeCape":["access_token","cape_uuid"],"updateClusterById":["id","request"],"removePackage":["cluster_id","package_hash"],"getWorlds":["id"],"readSettings":[],"removeUser":["uuid"],"fetchLoggedInProfile":["access_token"],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"getLogByName":["id","name"],"searchPackages":["provider","query"],"fetchMinecraftProfile":["uuid"],"launchCluster":["id","uuid","search_for_java"],"updateClusterProfile":["name","profile"],"writeSettings":["setting"],"setDefaultUser":["uuid"]}' }
|
||||
export type Router = { 'oneclient': { getClustersGroupedByMajor: () => Promise<Partial<{ [key in number]: ClusterModel[] }>>,
|
||||
getBundlesFor: (clusterId: number) => Promise<ModpackArchive[]>,
|
||||
getVersions: () => Promise<OnlineClusterManifest> },
|
||||
'folders': { fromCluster: (folderName: string) => Promise<string>,
|
||||
openCluster: (folderName: string) => Promise<null> },
|
||||
'debug': { openDevTools: () => Promise<void>,
|
||||
isInDev: () => Promise<boolean>,
|
||||
getArch: () => Promise<string>,
|
||||
|
|
@ -325,7 +322,7 @@ getPackageVersion: () => Promise<string> },
|
|||
getClusterById: (id: number) => Promise<ClusterModel | null>,
|
||||
removeCluster: (id: number) => Promise<null>,
|
||||
createCluster: (options: CreateCluster) => Promise<ClusterModel>,
|
||||
launchCluster: (id: number, uuid: string | null) => Promise<null>,
|
||||
launchCluster: (id: number, uuid: string | null, searchForJava: boolean | null) => Promise<null>,
|
||||
updateClusterById: (id: number, request: ClusterUpdate) => Promise<null>,
|
||||
getScreenshots: (id: number) => Promise<string[]>,
|
||||
getWorlds: (id: number) => Promise<string[]>,
|
||||
|
|
@ -368,7 +365,10 @@ changeCape: (accessToken: string, capeUuid: string) => Promise<MojangFullPlayerP
|
|||
removeCape: (accessToken: string) => Promise<MojangFullPlayerProfile>,
|
||||
convertUsernameUUID: (usernameUuid: string) => Promise<MowojangProfile>,
|
||||
setDiscordRPCMessage: (message: string) => Promise<null>,
|
||||
open: (input: string) => Promise<null> } };
|
||||
open: (input: string) => Promise<null> },
|
||||
'events': { ingress: (event: IngressPayload) => Promise<void>,
|
||||
message: (event: MessagePayload) => Promise<void>,
|
||||
process: (event: ProcessPayload) => Promise<void> } };
|
||||
|
||||
|
||||
export type { InferCommandOutput }
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ export function useLaunchCluster(clusterId?: number | undefined | null) {
|
|||
return;
|
||||
|
||||
try {
|
||||
await bindings.core.launchCluster(targetId, null);
|
||||
await bindings.core.launchCluster(targetId, null, false);
|
||||
|
||||
navigate({
|
||||
to: '/app/cluster/process',
|
||||
|
|
|
|||
|
|
@ -1,4 +1,8 @@
|
|||
use onelauncher_core::{api::{self, proxy::ProxyDynamic}, error::LauncherResult, initialize_core, store::CoreOptions};
|
||||
use onelauncher_core::api::proxy::ProxyDynamic;
|
||||
use onelauncher_core::api::{self};
|
||||
use onelauncher_core::error::LauncherResult;
|
||||
use onelauncher_core::initialize_core;
|
||||
use onelauncher_core::store::CoreOptions;
|
||||
use onelauncher_entity::loader::GameLoader;
|
||||
|
||||
#[tokio::main]
|
||||
|
|
@ -12,18 +16,14 @@ async fn main() -> LauncherResult<()> {
|
|||
}
|
||||
|
||||
println!("creating cluster");
|
||||
let cluster = &mut api::cluster::create_cluster(
|
||||
"Test Cluster",
|
||||
"1.8.9",
|
||||
GameLoader::Vanilla,
|
||||
None,
|
||||
None,
|
||||
).await?;
|
||||
let cluster =
|
||||
&mut api::cluster::create_cluster("Test Cluster", "1.8.9", GameLoader::Vanilla, None, None)
|
||||
.await?;
|
||||
|
||||
println!("cluster created: {cluster:#?}");
|
||||
|
||||
println!("preparing cluster for launch");
|
||||
api::cluster::prepare_cluster(cluster, None).await?;
|
||||
api::cluster::prepare_cluster(cluster, None, Some(true)).await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -117,6 +117,7 @@ pub async fn create_cluster(
|
|||
pub async fn prepare_cluster(
|
||||
cluster: &mut clusters::Model,
|
||||
force: Option<bool>,
|
||||
search_for_java: Option<bool>,
|
||||
) -> LauncherResult<&clusters::Model> {
|
||||
tracing::debug!("preparing cluster {}", cluster.name);
|
||||
|
||||
|
|
@ -131,7 +132,7 @@ pub async fn prepare_cluster(
|
|||
})
|
||||
.await?;
|
||||
|
||||
if let Err(err) = install_cluster(cluster, force).await {
|
||||
if let Err(err) = install_cluster(cluster, force, search_for_java).await {
|
||||
tracing::error!("failed to prepare cluster: {}", err);
|
||||
dao::update_cluster(cluster, async |mut cluster| {
|
||||
cluster.stage = Set(ClusterStage::NotReady);
|
||||
|
|
@ -151,7 +152,11 @@ pub async fn prepare_cluster(
|
|||
Ok(cluster)
|
||||
}
|
||||
|
||||
async fn install_cluster(cluster: &clusters::Model, force: Option<bool>) -> LauncherResult<()> {
|
||||
async fn install_cluster(
|
||||
cluster: &clusters::Model,
|
||||
force: Option<bool>,
|
||||
search_for_java: Option<bool>,
|
||||
) -> LauncherResult<()> {
|
||||
const INGRESS_TOTAL: f64 = 100.0;
|
||||
const INGRESS_TASKS: f64 = 4.0;
|
||||
const INGRESS_STEP: f64 = INGRESS_TOTAL / INGRESS_TASKS;
|
||||
|
|
@ -211,7 +216,7 @@ async fn install_cluster(cluster: &clusters::Model, force: Option<bool>) -> Laun
|
|||
return Err(ClusterError::MissingJavaVersion.into());
|
||||
};
|
||||
|
||||
java::prepare_java(ver.major_version).await?
|
||||
java::prepare_java(ver.major_version, search_for_java.unwrap_or(true)).await?
|
||||
};
|
||||
|
||||
// TASK 3
|
||||
|
|
|
|||
|
|
@ -24,12 +24,13 @@ pub async fn launch_minecraft(
|
|||
cluster: &mut Cluster,
|
||||
creds: MinecraftCredentials,
|
||||
force: Option<bool>,
|
||||
search_for_java: Option<bool>,
|
||||
) -> LauncherResult<Arc<RwLock<Process>>> {
|
||||
if cluster.stage.is_downloading() {
|
||||
return Err(ClusterError::ClusterDownloading.into());
|
||||
}
|
||||
|
||||
prepare_cluster(cluster, force).await?;
|
||||
prepare_cluster(cluster, force, search_for_java).await?;
|
||||
let mut settings = get_global_profile().await;
|
||||
if let Some(name) = &cluster.setting_profile_name
|
||||
&& let Some(profile) = get_profile_by_name(name).await?
|
||||
|
|
|
|||
|
|
@ -155,7 +155,10 @@ pub async fn get_recommended_java(
|
|||
dao::get_latest_java_by_major(supported_ver.major_version).await
|
||||
}
|
||||
|
||||
pub async fn prepare_java(major: u32) -> LauncherResult<java_versions::Model> {
|
||||
pub async fn prepare_java(
|
||||
major: u32,
|
||||
search_for_java: bool,
|
||||
) -> LauncherResult<java_versions::Model> {
|
||||
let id = init_ingress(
|
||||
IngressType::JavaPrepare,
|
||||
&format!("preparing java {}", major),
|
||||
|
|
@ -169,16 +172,18 @@ pub async fn prepare_java(major: u32) -> LauncherResult<java_versions::Model> {
|
|||
return Ok(java.clone());
|
||||
}
|
||||
|
||||
let java = locate_java().await?;
|
||||
if search_for_java {
|
||||
let java = locate_java().await?;
|
||||
|
||||
if !java.is_empty() {
|
||||
for (path, info) in java {
|
||||
dao::insert_java(path, info).await?;
|
||||
}
|
||||
if !java.is_empty() {
|
||||
for (path, info) in java {
|
||||
dao::insert_java(path, info).await?;
|
||||
}
|
||||
|
||||
if let Some(java) = dao::get_latest_java_by_major(major).await? {
|
||||
send_ingress(&id, 100.0).await?;
|
||||
return Ok(java);
|
||||
if let Some(java) = dao::get_latest_java_by_major(major).await? {
|
||||
send_ingress(&id, 100.0).await?;
|
||||
return Ok(java);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -251,8 +256,8 @@ fn internal_locate_java() -> Vec<PathBuf> {
|
|||
|
||||
// epic common paths
|
||||
let common_paths = [
|
||||
r"C:\Program Files\Java",
|
||||
r"C:\Program Files (x86)\Java",
|
||||
//r"C:\Program Files\Java", # These can be shitty 32-bit installations, we'd rather not deal with that lol
|
||||
//r"C:\Program Files (x86)\Java",
|
||||
r"C:\Program Files\OpenJDK",
|
||||
r"C:\Program Files\Eclipse Adoptium",
|
||||
r"C:\Program Files\Zulu",
|
||||
|
|
|
|||
|
|
@ -42,7 +42,11 @@ pub trait TauriLauncherApi {
|
|||
async fn create_cluster(options: CreateCluster) -> LauncherResult<Cluster>;
|
||||
|
||||
#[taurpc(alias = "launchCluster")]
|
||||
async fn launch_cluster(id: ClusterId, uuid: Option<uuid::Uuid>) -> LauncherResult<()>;
|
||||
async fn launch_cluster(
|
||||
id: ClusterId,
|
||||
uuid: Option<uuid::Uuid>,
|
||||
search_for_java: Option<bool>,
|
||||
) -> LauncherResult<()>;
|
||||
|
||||
#[taurpc(alias = "updateClusterById")]
|
||||
async fn update_cluster_by_id(id: ClusterId, request: ClusterUpdate) -> LauncherResult<()>;
|
||||
|
|
@ -346,7 +350,12 @@ impl TauriLauncherApi for TauriLauncherApiImpl {
|
|||
Ok(cluster)
|
||||
}
|
||||
|
||||
async fn launch_cluster(self, id: ClusterId, uuid: Option<uuid::Uuid>) -> LauncherResult<()> {
|
||||
async fn launch_cluster(
|
||||
self,
|
||||
id: ClusterId,
|
||||
uuid: Option<uuid::Uuid>,
|
||||
search_for_java: Option<bool>,
|
||||
) -> LauncherResult<()> {
|
||||
let mut cluster = api::cluster::dao::get_cluster_by_id(id)
|
||||
.await?
|
||||
.ok_or_else(|| anyhow::anyhow!("cluster with id {} not found", id))?;
|
||||
|
|
@ -364,7 +373,8 @@ impl TauriLauncherApi for TauriLauncherApiImpl {
|
|||
|
||||
// let user = api::credentials::get_fake_user();
|
||||
|
||||
let _ = api::game::launch::launch_minecraft(&mut cluster, user, None).await?;
|
||||
let _ =
|
||||
api::game::launch::launch_minecraft(&mut cluster, user, None, search_for_java).await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue