mirror of
				https://github.com/WarrenHood/MCModpackManager.git
				synced 2025-11-04 01:58:41 +00:00 
			
		
		
		
	Store metadata on whether the mod is needed on client and server sides
This commit is contained in:
		
							parent
							
								
									08e8bf4ede
								
							
						
					
					
						commit
						21b5e443bf
					
				| 
						 | 
				
			
			@ -18,5 +18,9 @@ pub struct PinnedMod {
 | 
			
		|||
    /// Version of mod
 | 
			
		||||
    pub version: String,
 | 
			
		||||
    /// Pinned dependencies of a pinned mod
 | 
			
		||||
    pub deps: Option<HashSet<ModMeta>>
 | 
			
		||||
    pub deps: Option<HashSet<ModMeta>>,
 | 
			
		||||
    /// Server side
 | 
			
		||||
    pub server_side: bool,
 | 
			
		||||
    /// Required on client side
 | 
			
		||||
    pub client_side: bool
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -15,6 +15,8 @@ pub struct Modrinth {
 | 
			
		|||
#[derive(Serialize, Deserialize)]
 | 
			
		||||
struct ModrinthProject {
 | 
			
		||||
    slug: String,
 | 
			
		||||
    client_side: String,
 | 
			
		||||
    server_side: String
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[derive(Serialize, Deserialize, Debug)]
 | 
			
		||||
| 
						 | 
				
			
			@ -63,8 +65,8 @@ impl Modrinth {
 | 
			
		|||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub async fn get_project_slug(&self, project_id: &str) -> Result<String, Box<dyn Error>> {
 | 
			
		||||
        let mut project: ModrinthProject = self
 | 
			
		||||
    pub async fn get_project(&self, project_id: &str) -> Result<ModrinthProject, Box<dyn Error>> {
 | 
			
		||||
        let project: ModrinthProject = self
 | 
			
		||||
            .client
 | 
			
		||||
            .get(format!("https://api.modrinth.com/v2/project/{project_id}"))
 | 
			
		||||
            .send()
 | 
			
		||||
| 
						 | 
				
			
			@ -72,7 +74,7 @@ impl Modrinth {
 | 
			
		|||
            .json()
 | 
			
		||||
            .await?;
 | 
			
		||||
 | 
			
		||||
        Ok(project.slug)
 | 
			
		||||
        Ok(project)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub async fn get_mod_meta(
 | 
			
		||||
| 
						 | 
				
			
			@ -92,7 +94,7 @@ impl Modrinth {
 | 
			
		|||
                game_version_override,
 | 
			
		||||
            )
 | 
			
		||||
            .await?;
 | 
			
		||||
        let project_slug = self.get_project_slug(project_id).await?;
 | 
			
		||||
        let project_slug = self.get_project(project_id).await?.slug;
 | 
			
		||||
 | 
			
		||||
        for version in project_versions.iter() {
 | 
			
		||||
            if project_version.is_none() || project_version.unwrap_or("*") == version.id {
 | 
			
		||||
| 
						 | 
				
			
			@ -159,6 +161,8 @@ impl Modrinth {
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        let project = self.get_project(&mod_meta.name).await?;
 | 
			
		||||
 | 
			
		||||
        Ok(PinnedMod {
 | 
			
		||||
            source: package
 | 
			
		||||
                .files
 | 
			
		||||
| 
						 | 
				
			
			@ -180,6 +184,8 @@ impl Modrinth {
 | 
			
		|||
            } else {
 | 
			
		||||
                None
 | 
			
		||||
            },
 | 
			
		||||
            server_side: project.server_side != "optional",
 | 
			
		||||
            client_side: project.client_side != "optional"
 | 
			
		||||
        })
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue