Skip to content
k-mods.com

Projects and Packs

Set up a project, manage pack manifests and dependencies, and export a pack.

Open Projects to return to recent, pinned, or discovered projects. Create builds a new project from a bundled starter template; Open uses an existing project or DataForge/ folder; Clone copies a Git repository into a new folder. The wizard shows the exact files and location before it creates anything. Clone authentication uses your configured Git credential helper.

For a new project, choose a direct DataForge/pack.yml, nested DataForge/<pack>/pack.yml, or category layout. Enter pack ref, display name, version, and optional contributor and description. Choose a template and optionally initialize Git. The pack ref is part of generated content identity: decide it before using the pack in a save. The wizard then offers a datapack choice and final review. See Datapacks and Codex for reflection binding.

Open Pack manager after selecting a project. Filter by name, ref, mod, enabled state, or problems. The pack list shows priority order. Select a pack to inspect these tabs:

TabUse
ManifestEdit ref, name, version, description, priority, and enabled state.
ConditionsEdit pack conditions and condition behavior.
ContributorsEdit contributor entries.
IconSet the pack icon.
DebugSet the pack debug flag.
DocumentsEdit pack files inline, including YAML and *.config.yml configuration definitions.
DependenciesEdit pack dependencies and inspect required game mods.
RedirectsEdit generated-ID redirects within the pack.
pack.ymlEdit the raw manifest YAML.

Manifest sections are separate tabs with one shared draft. Moving between them preserves edits. Choose Review exact text before save to compare Loaded text with Proposed, then Save manifest to write the draft or Revert draft to restore the loaded text. External changes are checked before saving. Changing the persistent ref requires acknowledging that existing saves can break; redirects within a pack cannot repair a ref change.

New pack creates a new ref. Duplicate copies an existing pack; review copied generated IDs before enabling it. The list switch writes enabled to pack.yml. Save or discard unsaved manifest edits before switching pack state or exporting. Dependency graph shows missing dependencies, cycles, and required game mods; a pack’s priority alone does not override dependency or document stage order. For pack syntax, see Conditions and packs.

Description and Icon (description and icon in pack.yml) are shown by pack settings screens in game. The icon is a path relative to the pack folder (png, jpg, jpeg, tga, bmp) or an object path that starts with /. A missing file, a path that leaves the pack folder, an unsupported format or a symlink out of the pack is reported as pack.icon-missing, pack.icon-escape, pack.icon-format or pack.icon-symlink. See Pack Configuration.

Select a .yml or .yaml file in Documents to use the inline Monaco editor. It opens the file’s actual native URI and shares its unsaved buffer with the full code editor. Existing dirty text appears when you open the file. Typing updates that buffer in memory; Save (Ctrl+S) writes the file explicitly. Open file in editor transfers the latest text to the full editor and leaves unsaved changes dirty.

Revert restores the text loaded when the inline document was opened, including any unsaved native edits already present at that point. It does not save the file. After a successful Save, the saved text becomes the new Revert baseline. When leaving inline edits unsaved, choose Leave to keep them in the native editor; use Revert first to discard your inline changes.

If another editor changes the buffer or disk content no longer matches the saved baseline, the editor retains your local draft and blocks conflicting operations. Compare your changes before choosing Reload from editor. Language suggestions and live diagnostics depend on the existing language-server module and its readiness; disabling it still allows text editing. See Editing and Validation.

Switching the project, pack, or datapack ends the inline editing session and clears its selection. Unsaved text already synchronized to the native buffer stays there; an ordinary confirmed Leave flushes your latest edits before switching.

Other supported text files (json, txt, md, toml, ini, cfg, and csv) keep their simple inline text editor and guarded Save workflow. They do not use the YAML language bridge.

Pack configuration is a document type of its own. File → New document with the type Config creates a <name>.config.yml definition: the dialog adds the required .config.yml ending and starts from a skeleton with a slider (hot) and a checkbox (cold). A *.config.yml file cannot hold another document type, and the .config.yml ending is refused for any other type. The Config category class entry of the Document template list creates the UFGCategory subclass (a generated Cat_<Name> id with a display name and a menu priority) that groups the fields in the in-game settings UI. Config fields, cfg: references, templates and config: conditions are completed, explained and validated as described in Configuration, references and templates.

The Redirects tab displays configured redirects. It does not change a pack ref. To rename generated IDs and their project references, use Module tools and inspect the proposed diff before applying it.

Project settings links to validation, editor, path, and shortcut preferences. It also shows active datapack binding and offers a diagnostic preview before changing archives. Advanced project-local TOML lives in .kdf-editor.toml; its save checks the current disk hash so external edits are not overwritten. Do not put credentials in this file.

Select a pack, save pending edits, choose an enabled export adapter, then select Export .zip from Pack manager or File → Export pack as .zip. The native exporter validates the selected project pack and asks for an output path. Exporting a pack is distinct from packaging a full mod release. See Operations and releases.