diff options
Diffstat (limited to 'src-tauri/src/core')
| -rw-r--r-- | src-tauri/src/core/fabric.rs | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/src-tauri/src/core/fabric.rs b/src-tauri/src/core/fabric.rs index fd38f41..3e4d50d 100644 --- a/src-tauri/src/core/fabric.rs +++ b/src-tauri/src/core/fabric.rs @@ -63,10 +63,31 @@ pub struct FabricLibrary { } /// Main class configuration for Fabric. +/// Can be either a struct with client/server fields or a simple string. #[derive(Debug, Deserialize, Serialize, Clone)] -pub struct FabricMainClass { - pub client: String, - pub server: String, +#[serde(untagged)] +pub enum FabricMainClass { + Structured { + client: String, + server: String, + }, + Simple(String), +} + +impl FabricMainClass { + pub fn client(&self) -> &str { + match self { + FabricMainClass::Structured { client, .. } => client, + FabricMainClass::Simple(s) => s, + } + } + + pub fn server(&self) -> &str { + match self { + FabricMainClass::Structured { server, .. } => server, + FabricMainClass::Simple(s) => s, + } + } } /// Represents a Minecraft version supported by Fabric. |