Skip to content

Commit 6cf7c22

Browse files
committed
Make version fetching more reliable
1 parent e22b1b8 commit 6cf7c22

File tree

2 files changed

+28
-11
lines changed

2 files changed

+28
-11
lines changed

src/manifest.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ impl Manifest {
8282
async fn process_items<P: AsRef<Path> + Send + 'static>(
8383
client: Client,
8484
items: HashMap<String, Definition>,
85+
minecraft: &str,
86+
loaders: &HashMap<Loader, String>,
8587
path: P,
8688
mp: MultiProgress,
8789
total_pb: ProgressBar,
@@ -102,10 +104,14 @@ impl Manifest {
102104
pb.set_message(format!("Processing {}", name));
103105

104106
let total_pb = total_pb.clone();
107+
let minecraft = minecraft.to_string();
108+
let loaders = loaders.clone();
105109

106110
task::spawn(async move {
107111
let Definition { version, side } = definition;
108-
let version = client.get_version(&name, &version).await?;
112+
let version = client
113+
.get_version(&name, &minecraft, &loaders, &version)
114+
.await?;
109115
let mut files = Vec::new();
110116

111117
for file in version.files {
@@ -148,20 +154,26 @@ impl Manifest {
148154
process_items(
149155
client.clone(),
150156
self.mods,
157+
&self.enviroment.minecraft,
158+
&self.enviroment.loaders,
151159
"mods",
152160
mp.clone(),
153161
total_pb.clone()
154162
),
155163
process_items(
156164
client.clone(),
157165
self.resource_packs,
166+
&self.enviroment.minecraft,
167+
&self.enviroment.loaders,
158168
"resourcepacks",
159169
mp.clone(),
160170
total_pb.clone()
161171
),
162172
process_items(
163173
client.clone(),
164174
self.shaders,
175+
&self.enviroment.minecraft,
176+
&self.enviroment.loaders,
165177
"shaderpacks",
166178
mp.clone(),
167179
total_pb.clone()

src/modrinth.rs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -156,18 +156,23 @@ impl Client {
156156
Ok(res)
157157
}
158158

159-
pub async fn get_version(&self, project: &str, version: &str) -> Result<Version> {
160-
let res = self
161-
.http_client
162-
.get(format!(
163-
"https://api.modrinth.com/v2/project/{project}/version/{version}"
164-
))
165-
.send()
166-
.await?
167-
.json()
159+
pub async fn get_version(
160+
&self,
161+
project: &str,
162+
minecraft: &str,
163+
loaders: &HashMap<Loader, String>,
164+
version: &str,
165+
) -> Result<Version> {
166+
let versions = self
167+
.get_project_versions(project, minecraft, loaders)
168168
.await?;
169169

170-
Ok(res)
170+
let version = versions
171+
.into_iter()
172+
.find(|v| v.version_number == version)
173+
.expect("Failed to find a valid version");
174+
175+
Ok(version)
171176
}
172177

173178
pub async fn get_project(&self, project: &str) -> Result<Project> {

0 commit comments

Comments
 (0)