Skip to content

Commit 735d0e4

Browse files
committed
fix neoforge new versioning system
1 parent 05befcb commit 735d0e4

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

daedalus_client/src/common/manifest_merge.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,12 +123,12 @@ pub fn sort_loaders_by_metadata(version: &mut Version, loader_order: &[String])
123123
version.loaders.sort_by(|x, y| {
124124
let x_pos = loader_order
125125
.iter()
126-
.position(|z| &y.id == z)
126+
.position(|z| &x.id == z)
127127
.unwrap_or(usize::MAX);
128128

129129
let y_pos = loader_order
130130
.iter()
131-
.position(|z| &x.id == z)
131+
.position(|z| &y.id == z)
132132
.unwrap_or(usize::MAX);
133133

134134
x_pos.cmp(&y_pos)

daedalus_client/src/neoforge/mod.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ use daedalus::modded::{
1515
};
1616
use daedalus::get_hash;
1717
use tracing::{info, warn};
18-
use semver::Version;
18+
// Note: Using lenient_semver instead of semver::Version to handle
19+
// non-standard NeoForge versions like "26.1.0.0-alpha.1+snapshot-1"
1920
use serde::{Deserialize, Serialize};
2021
use std::collections::{HashMap, HashSet};
2122
use std::convert::TryInto;
@@ -73,17 +74,21 @@ pub async fn retrieve_data(
7374
let mut loaders = Vec::new();
7475

7576
for (loader_version, new_forge) in loader_versions {
76-
let version = Version::parse(&loader_version)?;
77+
// Validate version format using lenient_semver (handles 4+ component versions like "26.1.0.0-alpha.1")
78+
if let Err(e) = lenient_semver::parse(&loader_version) {
79+
warn!("Skipping NeoForge version '{}' with invalid format: {}", loader_version, e);
80+
continue;
81+
}
7782

78-
loaders.push((loader_version, version, new_forge.to_string()))
83+
loaders.push((loader_version, new_forge.to_string()))
7984
}
8085

8186
if !loaders.is_empty() {
8287
version_futures.push(async {
8388
let mut loaders_versions = Vec::new();
8489

8590
{
86-
let loaders_futures = loaders.into_iter().map(|(loader_version_full, _, new_forge)| async {
91+
let loaders_futures = loaders.into_iter().map(|(loader_version_full, new_forge)| async {
8792
let versions_mutex = Arc::clone(&old_versions);
8893
let visited_assets = Arc::clone(&visited_assets);
8994
let semaphore = Arc::clone(&semaphore);

0 commit comments

Comments
 (0)