fix(core): M122 版本 id → 加载器只留一份解析,并认全自家 id 口径
`presenter::host::game::loader_from_id` 只认 `fabric-loader-…` / `quilt-loader-…`, 而本启动器自己生成的 id 是 `<mc>-<kind>-<loader>`(`1.20.4-fabric-0.16.5` / `1.20.4-quilt-0.27.0`),于是刚装好的 Fabric / Quilt 实例在实例页显示成「原版」。 - 新增 `core::game::loader`:`InstanceLoader::parse` 是全仓唯一的 id 解析入口 (按 `-` 切段、段前缀匹配标记、跳过独立的 `loader` 段、砍老 HMCL 的 MC 尾巴)。 覆盖自家四种口径(生成端 `addon::loader::LoaderKind::version_id`)、老 HMCL / CF 口径、OptiFine / LiteLoader 第三方前缀;标记按整段前缀匹配,不再用「包含子串」。 - presenter 只留 DTO 翻译:`dto_kind` 穷尽 match(`dto/` 里仍不许出现 core 类型)。 - 测试:真值表**从生成端取 id**,反向锚(普通版本 id 不被认成加载器),映射单射, 以及端到端快照(`instances()` 的磁贴数据对四个加载器各自的版本号与徽标)。
This commit is contained in:
1 parent
829bd9043c
commit
081ce65596
3 files changed
+505
-36
No files matched your search
@@ -12,6 +12,7 @@
|
||||
//! 外加内嵌补充清单 [`unlisted`];
|
||||
//! - 版本 JSON 与继承:[`VersionJson`]、[`resolve`]、[`merge`]、[`apply_patches`];
|
||||
//! - 参数与库:[`Arguments`] / [`Environment`] / [`Rule`]、[`Library`] / [`MavenCoordinate`];
|
||||
//! - 版本 id → 加载器:[`loader`]([`InstanceLoader::parse`],全仓唯一解析入口);
|
||||
//! - 能力位:[`capability`](版本 JSON 库表 → `has_vulkan_backend`);
|
||||
//! - 实例:目录布局 [`GameLayout`]、档案 [`ProfileList`] / [`InstanceProfile`] / [`ProfileId`];
|
||||
//! - 发布:快照仓库 [`Store`] / [`Snapshot`] / [`Draft`]。
|
||||
@@ -35,6 +36,7 @@ pub mod isolation;
|
||||
pub mod java;
|
||||
pub mod layout;
|
||||
pub mod library;
|
||||
pub mod loader;
|
||||
pub mod manifest;
|
||||
pub mod profiles;
|
||||
pub mod snapshot;
|
||||
@@ -55,6 +57,7 @@ pub use isolation::{
|
||||
};
|
||||
pub use layout::GameLayout;
|
||||
pub use library::{Library, MavenCoordinate};
|
||||
pub use loader::{InstanceLoader, LoaderKind};
|
||||
pub use manifest::{AssetIndexRef, DownloadInfo, Downloads, JavaVersion, Logging, VersionJson};
|
||||
pub use profiles::{InstanceProfile, ProfileId, ProfileList, PROFILE_SCHEMA_VERSION};
|
||||
pub use snapshot::{Draft, Snapshot, Store};
|
||||
|
||||
Reference in new issue
Block a user