Skip to content

Commit d15a2ea

Browse files
authored
feat(core): Mod data overrides (#414)
1 parent ddba559 commit d15a2ea

File tree

4 files changed

+27
-9
lines changed

4 files changed

+27
-9
lines changed

apps/oneclient/frontend/src/bindings.gen.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ export type DirectoryError = { type: "BaseDir"; data: string }
2525

2626
export type DiscordError = { type: "MissingClientId"; data: string } | { type: "ConnectError"; data: string }
2727

28-
export type ExternalPackage = { name: string; url: string; sha1: string; size: number; package_type: PackageType }
28+
export type ExternalPackage = { name: string; url: string; sha1: string; size: number; package_type: PackageType; overrides: ExternalPackageOverrides | null }
29+
30+
export type ExternalPackageOverrides = { icon: string | null; name: string | null; authors: string[] | null; description: string | null }
2931

3032
export type Filters = { game_versions: string[] | null; loaders: GameLoader[] | null; categories: PackageCategories | null; package_type: PackageType | null }
3133

@@ -190,7 +192,7 @@ export type SettingProfileModel = { name: string; java_id: number | null; res: R
190192

191193
export type Settings = { global_game_settings: SettingProfileModel; allow_parallel_running_clusters: boolean; enable_gamemode: boolean; discord_enabled: boolean; seen_onboarding: boolean; max_concurrent_requests: number; settings_version: number; native_window_frame: boolean; show_tanstack_dev_tools: boolean }
192194

193-
export type SettingsOsExtra = { enable_gamemode: boolean | null }
195+
export type SettingsOsExtra = Record<string, never>
194196

195197
export type SkinVariant = "classic" | "slim"
196198

@@ -255,7 +257,7 @@ export type VersionType =
255257
*/
256258
"old_beta"
257259

258-
const ARGS_MAP = { 'core':'{"open":["input"],"fetchLoggedInProfile":["access_token"],"convertUsernameUUID":["username_uuid"],"getGlobalProfile":[],"getRunningProcessesByClusterId":["cluster_id"],"getClusterById":["id"],"readSettings":[],"getClusters":[],"updateClusterProfile":["name","profile"],"createCluster":["options"],"getGameVersions":[],"writeSettings":["setting"],"getLoadersForVersion":["mc_version"],"getUser":["uuid"],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"changeCape":["access_token","cape_uuid"],"updateClusterById":["id","request"],"fetchMinecraftProfile":["uuid"],"getPackage":["provider","slug"],"getLogByName":["id","name"],"launchCluster":["id","uuid"],"getWorlds":["id"],"uploadSkinBytes":["access_token","skin_data","image_format","skin_variant"],"removeUser":["uuid"],"getMultiplePackages":["provider","slugs"],"installModpack":["modpack","cluster_id"],"getRunningProcesses":[],"getLogs":["id"],"searchPackages":["provider","query"],"getPackageBody":["provider","body"],"changeSkin":["access_token","skin_url","skin_variant"],"removeCape":["access_token"],"removeCluster":["id"],"isClusterRunning":["cluster_id"],"killProcess":["pid"],"getUsersFromAuthor":["provider","author"],"createSettingsProfile":["name"],"getDefaultUser":["fallback"],"getUsers":[],"getProfileOrDefault":["name"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"getScreenshots":["id"],"setDefaultUser":["uuid"],"openMsaLogin":[]}', 'oneclient':'{"openDevTools":[],"getClustersGroupedByMajor":[],"getBundlesFor":["cluster_id"]}', 'events':'{"ingress":["event"],"message":["event"],"process":["event"]}', 'folders':'{"fromCluster":["folder_name"],"openCluster":["folder_name"]}' }
260+
const ARGS_MAP = { 'oneclient':'{"getBundlesFor":["cluster_id"],"getClustersGroupedByMajor":[],"openDevTools":[]}', 'events':'{"ingress":["event"],"message":["event"],"process":["event"]}', 'core':'{"changeCape":["access_token","cape_uuid"],"getUser":["uuid"],"updateClusterById":["id","request"],"getGlobalProfile":[],"isClusterRunning":["cluster_id"],"writeSettings":["setting"],"removeCluster":["id"],"getProfileOrDefault":["name"],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"getGameVersions":[],"getUsers":[],"killProcess":["pid"],"getRunningProcesses":[],"removeUser":["uuid"],"getDefaultUser":["fallback"],"setDefaultUser":["uuid"],"getPackage":["provider","slug"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"uploadSkinBytes":["access_token","skin_data","image_format","skin_variant"],"getLogByName":["id","name"],"getWorlds":["id"],"changeSkin":["access_token","skin_url","skin_variant"],"getClusters":[],"getScreenshots":["id"],"createSettingsProfile":["name"],"getLogs":["id"],"readSettings":[],"fetchMinecraftProfile":["uuid"],"removeCape":["access_token"],"installModpack":["modpack","cluster_id"],"getMultiplePackages":["provider","slugs"],"launchCluster":["id","uuid"],"open":["input"],"getLoadersForVersion":["mc_version"],"getClusterById":["id"],"getRunningProcessesByClusterId":["cluster_id"],"openMsaLogin":[],"fetchLoggedInProfile":["access_token"],"createCluster":["options"],"getUsersFromAuthor":["provider","author"],"convertUsernameUUID":["username_uuid"],"searchPackages":["provider","query"],"updateClusterProfile":["name","profile"],"getPackageBody":["provider","body"]}', 'folders':'{"fromCluster":["folder_name"],"openCluster":["folder_name"]}' }
259261
export type Router = { 'core': { getClusters: () => Promise<ClusterModel[]>,
260262
getClusterById: (id: number) => Promise<ClusterModel | null>,
261263
removeCluster: (id: number) => Promise<null>,
@@ -300,14 +302,14 @@ changeCape: (accessToken: string, capeUuid: string) => Promise<MojangFullPlayerP
300302
removeCape: (accessToken: string) => Promise<MojangFullPlayerProfile>,
301303
convertUsernameUUID: (usernameUuid: string) => Promise<MowojangProfile>,
302304
open: (input: string) => Promise<null> },
303-
'oneclient': { openDevTools: () => Promise<void>,
304-
getClustersGroupedByMajor: () => Promise<Partial<{ [key in number]: ClusterModel[] }>>,
305-
getBundlesFor: (clusterId: number) => Promise<ModpackArchive[]> },
305+
'folders': { fromCluster: (folderName: string) => Promise<string>,
306+
openCluster: (folderName: string) => Promise<null> },
306307
'events': { ingress: (event: IngressPayload) => Promise<void>,
307308
message: (event: MessagePayload) => Promise<void>,
308309
process: (event: ProcessPayload) => Promise<void> },
309-
'folders': { fromCluster: (folderName: string) => Promise<string>,
310-
openCluster: (folderName: string) => Promise<null> } };
310+
'oneclient': { openDevTools: () => Promise<void>,
311+
getClustersGroupedByMajor: () => Promise<Partial<{ [key in number]: ClusterModel[] }>>,
312+
getBundlesFor: (clusterId: number) => Promise<ModpackArchive[]> } };
311313

312314

313315
export type { InferCommandOutput }

packages/core/src/api/packages/data.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,16 @@ pub struct ExternalPackage {
8686
pub sha1: String,
8787
pub size: usize,
8888
pub package_type: PackageType,
89+
pub overrides: Option<ExternalPackageOverrides>,
90+
}
91+
92+
#[onelauncher_macro::specta]
93+
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
94+
pub struct ExternalPackageOverrides {
95+
pub icon: Option<String>,
96+
pub name: Option<String>,
97+
pub authors: Option<Vec<String>>,
98+
pub description: Option<String>,
8999
}
90100

91101
#[onelauncher_macro::specta]

packages/core/src/api/packages/modpack/mrpack.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ use serde::Deserialize;
1010
use tokio::sync::OnceCell;
1111

1212
use crate::api::cluster::ClusterError;
13-
use crate::api::packages::data::{ExternalPackage, ManagedVersion, PackageSide};
13+
use crate::api::packages::data::{
14+
ExternalPackage, ExternalPackageOverrides, ManagedVersion, PackageSide,
15+
};
1416
use crate::api::packages::modpack::data::{
1517
ModpackArchive, ModpackFile, ModpackFileKind, ModpackManifest,
1618
};
@@ -344,6 +346,7 @@ async fn to_modpack_files(mrpack_files: &Vec<MrPackFile>) -> LauncherResult<Vec<
344346
sha1: file.hashes.sha1.clone(),
345347
size: file.file_size,
346348
package_type,
349+
overrides: file.overrides.clone(),
347350
}),
348351
enabled: true,
349352
});
@@ -405,6 +408,8 @@ pub(super) struct MrPackFile {
405408
pub env: MrPackFileEnv,
406409
pub downloads: Vec<String>,
407410
pub file_size: usize,
411+
#[serde(default)]
412+
pub overrides: Option<ExternalPackageOverrides>,
408413
}
409414

410415
#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]

packages/core/src/api/packages/modpack/polymrpack.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,7 @@ async fn to_modpack_files(mrpack_files: &Vec<PolyMrPackFile>) -> LauncherResult<
260260
sha1: file.base.hashes.sha1.clone(),
261261
size: file.base.file_size,
262262
package_type,
263+
overrides: file.base.overrides.clone(),
263264
}),
264265
});
265266
}

0 commit comments

Comments
 (0)