docs(core): inherit::merge 里写清 minecraftArguments(子覆盖父)与 arguments.game(追加)的区别
M222 的准入条件就是这条;不给结论留档,下一个人还会以为「叠一层」随便往哪个字段写都行。
This commit is contained in:
1 parent
c311032080
commit
51ea32284d
2 files changed
+59
No files matched your search
@@ -132,6 +132,16 @@ pub fn apply_patches(base: VersionJson, patches: &[VersionJson]) -> VersionJson
|
||||
/// 这两点**与 analyse/03 §8.3 第 15 条建议相左**(该条主张逐字段/逐 key 合并)。
|
||||
/// 保留现状的理由是生态兼容:现实 modpack/loader 的版本 JSON 按 HMCL/原版语义编写,
|
||||
/// 逐 key 合并会让"子层想整份换掉 downloads"的场景语义漂移。经 tower 裁决 2026-10-29 维持。
|
||||
///
|
||||
/// # 两种 args 表达的语义**不一样**(M222 核实,别混)
|
||||
///
|
||||
/// - `arguments.game` / `arguments.jvm`:父在前、子在后**追加**([`Arguments::merge`]);
|
||||
/// - `minecraftArguments`(pre-1.13 的单串):**子覆盖父**,子不写才继承。
|
||||
///
|
||||
/// 所以「叠一层加载器」只能往 `arguments.game` 里加参数;往 `minecraftArguments` 里写会把父链
|
||||
/// (例如 Forge 1.12.2 的 `--tweakClass FMLTweaker`)整串顶掉。回归:
|
||||
/// `crates/core/tests/liteloader/install.rs` 的 `merge_laws_liteloader_depends_on` 与
|
||||
/// `stacks_on_forge_and_keeps_the_forge_tweak_class`。
|
||||
pub fn merge(child: &VersionJson, parent: &VersionJson) -> VersionJson {
|
||||
let mut extra = parent.extra.clone();
|
||||
extra.extend(child.extra.iter().map(|(k, v)| (k.clone(), v.clone())));
|
||||
|
||||
Reference in new issue
Block a user