fix: edit_to_core 仅在相关字段变更时才带 content_set/launch_overrides patch,修复无 content set 的实例改分组失败

This commit is contained in:
AxTps committed 2026-10-02 20:00:49 +08:00
1 parent 0388e339db
commit 63ca20db04
1 file changed
+45 -21
+45 -21
View File
@@ -478,27 +478,51 @@ fn edit_to_core(edit_instance: EditInstance) -> Result<CoreEditInstance> {
None => Ok(CoreInstanceLink::Unmanaged), None => Ok(CoreInstanceLink::Unmanaged),
}) })
.transpose()?, .transpose()?,
launch_overrides: Some(InstanceLaunchOverridesPatch { launch_overrides: {
player: None, let has_launch_change = edit_instance.java_path.is_some()
instance_mode: None, || edit_instance.extra_launch_args.is_some()
java_path: edit_instance.java_path, || edit_instance.custom_env_vars.is_some()
extra_launch_args: edit_instance.extra_launch_args, || edit_instance.memory.is_some()
custom_env_vars: edit_instance.custom_env_vars, || edit_instance.force_fullscreen.is_some()
memory: edit_instance.memory, || edit_instance.maximize_window.is_some()
force_fullscreen: edit_instance.force_fullscreen, || edit_instance.game_resolution.is_some()
maximize_window: edit_instance.maximize_window, || edit_instance.launch_preparation_timeout.is_some()
game_resolution: edit_instance.game_resolution, || edit_instance.hooks.is_some();
launch_preparation_timeout: edit_instance if has_launch_change {
.launch_preparation_timeout, Some(InstanceLaunchOverridesPatch {
hooks: edit_instance.hooks, player: None,
}), instance_mode: None,
content_set_patch: Some(AppliedContentSetPatch { java_path: edit_instance.java_path,
source_kind: None, extra_launch_args: edit_instance.extra_launch_args,
game_version: edit_instance.game_version, custom_env_vars: edit_instance.custom_env_vars,
protocol_version: Some(None), memory: edit_instance.memory,
loader: edit_instance.loader, force_fullscreen: edit_instance.force_fullscreen,
loader_version: edit_instance.loader_version, maximize_window: edit_instance.maximize_window,
}), game_resolution: edit_instance.game_resolution,
launch_preparation_timeout: edit_instance
.launch_preparation_timeout,
hooks: edit_instance.hooks,
})
} else {
None
}
},
content_set_patch: {
let has_content_change = edit_instance.game_version.is_some()
|| edit_instance.loader.is_some()
|| edit_instance.loader_version.is_some();
if has_content_change {
Some(AppliedContentSetPatch {
source_kind: None,
game_version: edit_instance.game_version,
protocol_version: Some(None),
loader: edit_instance.loader,
loader_version: edit_instance.loader_version,
})
} else {
None
}
},
last_played: None, last_played: None,
submitted_time_played: None, submitted_time_played: None,
recent_time_played: None, recent_time_played: None,