Skip to content
k-mods.com

Datapacks and Codex

Import reflection archives, bind game data, compare versions, and inspect classes.

Start a Satisfactory world with KDataForge installed. In the game console, run:

KDF.DumpReflection --assets --functions --flattened

The exporter writes a timestamped .kdfdata archive under FactoryGame/KMods/ReflectionExport by default. It contains reflected classes, properties, and other metadata from that game and mod set. Import the archive through Datapacks → Import or drop one .kdfdata file onto the desktop window. The app inspects it before installing a content-addressed game-data resource. Only .kdfdata is a reflection datapack; a ContentLib/ folder follows the separate ContentLib Import workflow.

What the editor can do with the archive depends on what the export contains:

Archive partUsed for
Classes, properties, defaultsClass pickers, path: completion, value checks, class hover cards
Functions (--functions)Completion, signature help and checks for template function calls
Asset index (--assets){dataasset:} and {asset:} completion
Settings index (indexes/settings.json)session:, ags: and option: completion, hover cards and the setting.* checks
Reload classification (kdf.reload) and cold-property catalogThe cold and newActors tags on properties and the restart warnings

Archives that lack a part still import; the features that need it stay off instead of guessing.

Imported archives are available in Datapacks. Browse classes and properties, filter the library, and select Bind to project. Review the binding diagnostics before accepting. A project can also use Schema only under Settings → Datapacks. Automatic Vanilla opts into a bundled Vanilla archive if the build includes a complete verified export; new projects do not silently select it.

An explicit binding is saved as [datapack].pluginId in project settings. Disabling that resource keeps the binding intact but leaves validation schema-only until it is re-enabled or changed. Missing or partial engine metadata appears as limited or unknown. It is not proof that a class or property does not exist. The app reads installed archives up to its 512 MiB validation limit; larger source archives may be deflated during import without changing entry content.

If the Reflection Diff module is enabled, choose Compare on an installed archive to compare classes, properties, structs, and enums with another archive. Unknown metadata stays unknown instead of being treated as a removal.

Open Codex to search reflected classes. Filter by source mod, class kind, abstract/concrete state, or family, and switch between hierarchy and flat views. Select a class for its properties, parent chain, textures, raw metadata, and source path. When Catalog Usage is enabled, scan saved project YAML to see where a class path is referenced. An incomplete project scan is marked limited. Class paths from Codex can be inserted through the editors’ catalog picker.

Select a class in the Datapacks class browser or in Codex and choose CDO patch or Subclass. Class info offers the same two actions. The dialog prefills every property the class sets itself with its exported value, so you start from the class’s real state:

  • CDO patch writes a type: cdo document whose target is the class. Use it to change the class in place.
  • Subclass writes a generated class whose parent is the class. The document type follows the ancestry: building for building descriptors, then resource, item, unlock, recipe, schematic and research, and class for everything else, such as Build_* actors.

Choose the pack and the file path inside it. The preview shows the exact YAML before anything is written. Set by class lists the values the class overrides; All adds every inherited property that supports set. Select a row to edit its YAML value; editing a value includes it. Display texts of a subclass get their own localization key in the pack namespace, while a CDO patch keeps the original key so existing translations still apply.

Some values are not part of the export and stay empty: string table texts (LOCTABLE), instanced subobjects such as the mUnlocks of a schematic, and values the exporter left blank. Enter them yourself or leave them out. The editor only creates new files; an existing file or an unsaved buffer at the same path is never overwritten.

The archive describes the game state at export time. Re-export and rebind after changing the installed game or mod set when completion and class defaults matter.