reparent_blueprint_safe
Reparent a Blueprint with guarded rollback: preflight snapshot, optional variable collision renames, post-check verification, and auto-rollback on failure. Run dry_run=true first.
Instructions
Guarded, rollback-capable Blueprint reparent -- PREFER THIS OVER the raw reparent_blueprint, which has none of these guards. It adds: a pre-flight snapshot (parent chain, own-variable count, CDO component count); an OPTIONAL variable de-collision rename (rename_colliding_vars) for own variables whose name collides with a member the NEW parent already declares, which a plain reparent would otherwise clobber; the delta-serialization compile flags, without which a Blueprint with more than ~10 type-pinned variables CRASHES the editor during reinstancing; the same SCS-root reconciliation the Blueprint editor itself does, so a silently renamed component ("Mesh" -> "Mesh1") is reported instead of hidden; an invariant post-check (parent matches, no compile error, own-variable count did not shrink); and, on failure, an in-memory auto_rollback that restores the original parent, restores the component names and recompiles. It never saves to disk. This is a genuinely destructive multi-step transaction: run it with dry_run=true first on any real fork -- that reports the plan and the would-rename set without mutating anything.
Returns: { blueprint_name, blueprint_path, old_parent, new_parent, dry_run, reparented, renamed_variables:[{from,to}], pre_variable_count, post_variable_count, pre_component_count, post_component_count, pre_scs_node_count, post_scs_node_count, scene_root_reconciled, scene_root_reconciled_post_compile, default_scene_root_removed, sparse_class_data_conform_prepared, compile_messages:[{severity,text}], compile_error_count, compile_warning_count, renamed_components:[{guid,from,to,matched_by}], removed_components:[{guid,name}], components_without_guid, colliding_components:[{name,own_class,parent_class}], child_only_components:[{name,class}], compile_status, parent_match, compile_ok, variables_intact, components_intact, post_check_ok, rolled_back, rollback_complete, rollback_restored_components:[{guid,name}] (snapshotted nodes whose name MATCHES again after the rollback), rollback_unrestored_components:[{guid,expected_name,actual_name}], rollback_compile_messages:[{severity,text}], regressions:[string], saved_to_disk (always false -- this tool never saves), persistence_note, verification, verification_checks, success }
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Optional. This command is REFUSED while a Play-in-Editor session is running: it either compiles a Blueprint (the reinstancer can retain a world, and CheckForWorldGCLeaks is Fatal -- it KILLS the editor) or writes to disk (Editor.AllowSavingAssetsDuringPIE=0 makes the engine refuse the write, so it would report success without writing a byte). Stop PIE and retry instead; force=true runs it anyway, at your own risk. | |
| dry_run | No | Optional (default false): analyze + report the plan (snapshot, would-rename vars, component collisions) without mutating. | |
| auto_rollback | No | Optional (default true): on post-check failure, restore the original parent, restore the SCS node names and recompile. | |
| blueprint_name | No | Blueprint asset name or path to reparent. | |
| blueprint_path | No | Alias of `blueprint_name` (same value, same meaning). Accepted because sibling tools spell this parameter differently; prefer `blueprint_name`. | |
| new_parent_class | Yes | New parent class name or path (native /Script, /Game/.../BP.BP_C, or a BP asset path -> its GeneratedClass). | |
| reconcile_scene_root | No | Optional (default true): run the editor's own post-reparent conform pass -- ValidateSceneRootNodes + PrepareToConformSparseClassData + a second pass after the compile. Setting it FALSE disables all three; it exists only as a bisect escape hatch. | |
| rename_colliding_vars | No | Optional (default false): before reparenting, rename own NewVariables that collide by name with a member on the new parent. | |
| treat_component_renames_as_regression | No | Optional (default false): count a silently renamed SCS component as a post-check regression (which triggers auto_rollback). |