Item Actions Reference
Context actions are the right-click menu entries that appear when a player right-clicks an item in their inventory. Every Unturned™ player knows them: Salvage breaks an item down for raw materials, Refill tops up a fuel canister, Repair restores a damaged tool to full condition. Behind every one of these familiar right-click options is an action configuration block in the item's Asset.dat file that links an action type, a target blueprint, a localization key or custom button text, and an optional tooltip.
57 Studios™ has documented and validated the full action configuration surface across the Unturned™ modding community. This article covers the two syntax formats for actions (V1 flat-prefix and V2 JSON-style), every action property with its type and valid values, the full catalogue of built-in translation keys, the three default actions the engine generates automatically from blueprint patterns, the Source field for sourcing actions from another item, and worked examples drawn directly from shipped vanilla .dat files. Readers should be comfortable with the Blueprint Asset Reference before reading this article, as every custom action is fundamentally a linker between a right-click menu entry and a blueprint.

Documentation source: This article references the official Smartly Dressed Games modding documentation for all action field definitions and the Unturned™ game data files (version 3.x) for worked examples. Every translation key, action property, and syntax pattern in this article is traceable to a shipped vanilla
.datfile.
Who this article is for
This article is written for Unturned™ mod authors who have authored at least one item with blueprints and want to control how those blueprints appear on the item's right-click context menu. If you are new to blueprint authoring, start with Blueprint Asset Reference and Item Asset Anatomy before returning here. Mod developers who only need the default Salvage/Repair/Refill actions do not need this article; the engine generates those automatically when the corresponding blueprint patterns are present.
What you will learn
- The conceptual model of actions as blueprint-to-menu linkers
- The V1 flat-prefix action syntax with complete property reference
- The V2 JSON-style action syntax with complete property reference
- The full list of valid built-in translation keys and when each is generated automatically
- How the three default actions (Salvage, Repair, Refill) are triggered by blueprint patterns
- How to source actions from another item using the
Sourcefield - How to configure custom button text and tooltips
- How to use the
Linkflag to redirect to the crafting menu instead of immediately crafting - Worked examples drawn from shipped vanilla
.datfiles - A diagnostic table for common action configuration errors
Background: what an action is
An action is a configuration block, not a gameplay mechanic in its own right. It connects a right-click menu entry (what the player sees when they right-click the item in inventory) to a blueprint (what the engine does when the player selects that entry). The action defines the button label (via a translation key or custom text), an optional tooltip, the target blueprint (by index or by name), and whether clicking the button immediately crafts the blueprint or redirects to the crafting menu.
An item can have zero actions, in which case the right-click menu shows only the engine-default entries (Equip, Drop, Dequip). An item with blueprints that match the three default patterns automatically receives the corresponding default actions without any explicit Actions block. An item with blueprints that do not match any default pattern has no context-menu entry for those blueprints unless an explicit Actions block is added.
The flowchart above shows the full decision chain for every right-click action on every item in the game, from the initial right-click event through to the player's choice and the engine's response.
The two action syntax formats: V1 and V2
Like blueprints, actions support two distinct syntax formats. The V1 format uses the Action_#_ flat-prefix system. The V2 format uses a JSON-style Actions [ { ... } ] list syntax. Both are valid in current Unturned™ versions.
V1 format: the Action_#_ prefix system
The V1 action format mirrors the V1 blueprint format. Every property is prefixed with Action_#_, where # is the zero-based index of the action. The total number of actions is declared with an Actions count field at the top level. Actions that target blueprints additionally use a sub-index system with Blueprint_#_ prefixes within each action's scope.
A minimal V1 action that links to a blueprint by index:
Actions 1
Action_0_Type Blueprint
Action_0_Blueprints 1
Action_0_Blueprint_0_Index 0
Action_0_Key SalvageThis action targets the first blueprint (index 0), uses the Salvage localization key for its button label, and immediately crafts the blueprint when clicked.
A V1 action that sources blueprints from another item:
Actions 1
Action_0_Type Blueprint
Action_0_Source 394
Action_0_Blueprints 1
Action_0_Blueprint_0_Index 1
Action_0_Key Craft_DressingThe Action_0_Source 394 field tells the engine to look for blueprints on item ID 394 (the Dressing item) rather than on the host item. This is how the Blueprint Dressing supply item references the Dressing medical item's blueprints without duplicating them.
V2 format: the JSON-style list syntax
The V2 action format places action definitions inside a [ ... ] block after the Actions key. Each action is a dictionary enclosed in { }. Fields are named without the Action_#_ prefix.
The same two action examples in V2:
First example (target by name):
Actions
[
{
Type Blueprint
BlueprintName Salvage
CommonTextId Salvage
}
]Second example (target by name with source):
Actions
[
{
Type Blueprint
BlueprintName Repair
CommonTextId Repair
}
]The V2 format is simpler, more readable, and is the documented preference for all new mod development. The rest of this article describes both formats comprehensively, with all field references presented for both.
Complete V1 action property reference
Top-level count field
| Field | Type | Required | Default | Purpose |
|---|---|---|---|---|
Actions | uint8 | Yes (V1) | 0 | Total number of actions defined on this item. Must match the number of distinct Action_#_ groups configured. |
Action identity and type fields
| Field | Type | Required | Default | Purpose |
|---|---|---|---|---|
Action_#_Type | EActionType enum | Yes | -- | The type of action to perform. Currently, the only valid value is Blueprint. All custom actions are blueprint actions. |
Action_#_Source | uint16 | No | Host item ID | The legacy ID of the item to source blueprints from. When omitted, the action searches for blueprints on the host item. When set, the action searches for blueprints on the specified item instead. |
Action_#_Blueprints | uint8 | Yes | 0 | Total number of blueprint indices or names this action targets. For a single blueprint, this is 1. |
Blueprint targeting fields
| Field | Type | Required | Default | Purpose |
|---|---|---|---|---|
Action_#_Blueprint_#_Index | uint8 | No | 0 | The zero-based index of the blueprint on the source item that this action should perform. When the blueprint list is reorganized, indices may shift. Prefer Action_#_Blueprint_#_Name where possible. |
Action_#_Blueprint_#_Name | string | No | "" | The Name field of the blueprint that this action should perform. Must match the blueprint's Name exactly. This is the preferred targeting method because it is stable across blueprint-list reorderings. Requires that the target blueprint has a Name set. |
Action_#_Blueprint_#_Link | flag | No | not set | When set, the action redirects to the associated blueprint listing in the crafting menu rather than immediately crafting the item. Useful for blueprints where the player should review the ingredients before committing. |
Label and tooltip fields
| Field | Type | Required | Default | Purpose |
|---|---|---|---|---|
Action_#_Key | string | No | -- | A translation key from the PlayerDashboardInventory.dat localization file. When set, this overrides any custom Action_#_Text or Action_#_Tooltip fields. Cannot be used in combination with Action_#_Text or Action_#_Tooltip. |
Action_#_Text | string | No | -- | Custom context button name. If a key matching this value exists in the per-item localization file, that text is shown. Otherwise, this value is shown as-is. Typically used in combination with Action_#_Tooltip. |
Action_#_Tooltip | string | No | -- | Custom context button tooltip. If a key matching this value exists in the per-item localization file, that tooltip is shown. Otherwise, this value is shown as-is. Typically used in combination with Action_#_Text. |
Complete V2 action property reference
The V2 action block is defined inside a [ ... ] list. Each entry is a dictionary enclosed in { }. The following fields are available:
| Field | Type | Required | Default | Purpose |
|---|---|---|---|---|
Type | string (Blueprint) | Yes | -- | The action type. Must be Blueprint. |
Source | GUID | No | Host item GUID | The GUID of the item to source blueprints from. When omitted, the action searches on the host item. |
BlueprintName | string | No | -- | The Name field of the blueprint to target. Must match exactly. Preferred over BlueprintIndex because it survives blueprint-list reorganization. |
BlueprintIndex | uint8 | No | 0 | The zero-based index of the blueprint on the source item. Use BlueprintName instead where possible. |
Link | bool | No | false | When true, the action redirects to the crafting menu at the blueprint listing rather than immediately crafting. |
CommonTextId | string | No | -- | Built-in translation key for the button label. Overrides custom text. Cannot be used with Text or Tooltip. |
Text | string | No | -- | Custom button label. Overridden by localization-file match or CommonTextId. |
Tooltip | string | No | -- | Custom button tooltip. Overridden by localization-file match or CommonTextId. |
For compatibility with the vanilla V2 action pattern observed in shipped game data, the V2 field names map to their V1 equivalents as follows:
| V2 field name | V1 equivalent | Notes |
|---|---|---|
Type | Action_#_Type | Always Blueprint |
Source | Action_#_Source | GUID in V2, legacy ID in V1 |
BlueprintName | Action_#_Blueprint_#_Name | Preferred over index |
BlueprintIndex | Action_#_Blueprint_#_Index | Falls back to this if BlueprintName not set |
Link | Action_#_Blueprint_#_Link | Boolean in V2, flag in V1 |
CommonTextId | Action_#_Key | Renamed for clarity |
Text | Action_#_Text | Unchanged |
Tooltip | Action_#_Tooltip | Unchanged |
Valid translation keys
The Action_#_Key (V1) and CommonTextId (V2) fields accept translation keys from the PlayerDashboardInventory.dat localization file. These keys produce localized button labels that respect the player's language setting. When a translation key is set, it always overrides any custom Text or Tooltip fields.
The complete set of valid translation keys documented in the engine's localization is:
| Key | Context | When auto-generated |
|---|---|---|
Attachments | Opens the attachment sub-menu for the item | Never auto-generated; must be explicitly configured |
Craft_Bandage | Crafts bandages from rags | Auto-generated when a blueprint on item 95 (Bandage) matches the craft pattern |
Craft_Dressing | Crafts dressings from bandages | Auto-generated when a blueprint on item 394 (Dressing) matches the craft pattern |
Craft_Rag | Crafts rags from cloth | Auto-generated when a blueprint matches the rag craft pattern |
Craft_Seed | Crafts seeds from produce | Auto-generated when a blueprint matches the seed craft pattern |
Dequip | Unequips the item from its slot | Engine default; not configurable via actions |
Drop | Drops the item on the ground | Engine default; not configurable via actions |
Equip | Equips the item to its designated slot | Engine default; not configurable via actions |
Pickup | Picks up the item from the ground | Engine default; not configurable via actions |
Refill | Refills the target item from a source item | Auto-generated by the Refill blueprint pattern |
Repair | Repairs the target item to full condition | Auto-generated by the Repair blueprint pattern |
Salvage | Breaks the item down for raw materials | Auto-generated by the Salvage blueprint pattern |
Stack | Stacks the item with similar items in inventory | Engine default for stackable items |
Store | Stores the item in a nearby storage container | Engine default when near storage |
Take | Takes items from a storage container | Engine default when viewing storage |
Unstack | Unstacks a stacked barricade into its constituent materials | Uses the Salvage pattern but with the Unstack key; used by stacked barricade items |
The Unstack key
The Unstack key is used by barricade stack items (Stack of Logs, Stack of Planks, etc.) to present a salvage action with different terminology. The underlying blueprint is structurally identical to a Salvage blueprint (one supply, the host item, consumed to produce raw materials), but the button label reads "Unstack" rather than "Salvage." This is a deliberate design choice: salvaging a barricade stack conceptually means unstacking it, and the localized button label reflects this.
The three default actions
The engine automatically generates three action types when specific blueprint patterns are detected on an item. No explicit Actions block is required for these three patterns.
Salvage
Generated when an item has a blueprint with exactly one supply, and that supply's ID is the item itself. The blueprint consumes the host item and produces raw materials.
The blueprint pattern in V2:
{
Name Salvage
CategoryTag "7ed29f9101ae4523a3b2e389414b7bd9" // Salvage
InputItems this
OutputItems "GUID-for-raw-material x N"
Effect "effect-guid"
}When the engine detects this pattern, it automatically adds a Salvage action to the item's context menu. The player right-clicks the item, sees "Salvage," clicks it, and the blueprint fires immediately. No Actions block is needed.
Repair
Generated when an item has a blueprint with Operation RepairTargetItem (V2) or Type Repair (V1). The blueprint restores the host item (or the targeted item) to full condition by consuming repair materials.
The blueprint pattern in V2:
{
Name Repair
CategoryTag "732ee6ffeb18418985cf4f9fde33dd11" // Repair
Operation RepairTargetItem
InputItems "GUID-for-repair-material x N"
RequiresNearbyCraftingTags
[
"7b82c125a5a54984b8bb26576b59e977" // Workbench
]
Effect "effect-guid"
}When the engine detects this pattern, it automatically adds a Repair action to the item's context menu.
Refill
Generated when an item has a blueprint with Operation FillTargetItem (V2) or the equivalent V1 pattern. The blueprint transfers an amount (e.g., fuel units, ammunition count) from one item to another.
When the engine detects this pattern, it automatically adds a Refill action to the item's context menu.
Custom actions beyond the defaults
For any blueprint that does not match one of these three patterns, no default action is generated. The mod author must add an explicit Actions block to expose the blueprint on the context menu. The most common scenario is a crafting blueprint that the modder wants to make available via right-click on the output item:
Blueprints
[
{
Name CraftMyRifle
CategoryTag "cdb2df24b76d4c6e9d8411c940d8337f" // Gear
InputItems
[
"GUID-for-metal x 10"
"GUID-for-wood x 5"
]
OutputItems "GUID-for-MyRifle"
}
]
Actions
[
{
Type Blueprint
BlueprintName CraftMyRifle
CommonTextId Craft_Bandage // or custom Text
}
]When to use custom actions
Add a custom action whenever the player should be able to access a blueprint directly from the item's right-click menu rather than only from the crafting menu. A salvage action on a weapon that yields specific parts is a good candidate for a custom action with a custom text ("Strip for Parts") rather than the generic "Salvage" label. A craft-blueprint action on a blueprint scroll item that the player carries in inventory is another strong candidate for a custom action.
The Source field: sourcing actions from another item
The Source field (V1: Action_#_Source, V2: Source) tells the action to search for blueprints on a different item than the host. This is the mechanism that allows a blueprint-supply item (a scroll, a recipe book) to reference blueprints defined on a completely different item.
Consider the Blueprint Dressing item (Blueprints/Blueprint_Dressing/Asset.dat):
GUID 8d840f701cc645789d4dc0765b461a2a
Type Supply
ID 1991
Size_X 2
Size_Y 1
Size_Z 0.2
Actions 1
Action_0_Type Blueprint
Action_0_Source 394
Action_0_Blueprints 2
Action_0_Blueprint_0_Index 1
Action_0_Key Craft_DressingThis item has no blueprints of its own. Instead, it sources its actions from item 394 (the Dressing medical item). The Action_0_Source 394 field tells the engine: do not look for blueprints on this item (1991); look for them on item 394 instead. The action then targets blueprint index 1 on item 394 (the Dressing's second blueprint, which is the craft-from-bandages recipe). The Craft_Dressing localization key supplies the button label.
This pattern has an important implication: the source item must exist and must have blueprints. If the referenced source item does not exist, or does not have a blueprint at the specified index, the action will silently fail -- the right-click menu entry will not appear.
Worked examples from shipped vanilla data
Example 1: Simple salvage action (Camp Axe)
The Camp Axe melee weapon (Melee/Axe_Camp/Axe_Camp.dat) uses the V2 blueprint format with an implicit salvage action. The engine auto-generates the Salvage action because blueprint index 1 matches the salvage pattern:
Blueprints
[
{
Name Repair
CategoryTag "732ee6ffeb18418985cf4f9fde33dd11" // Repair
Operation RepairTargetItem
InputItems "21ede8ebffb14c5580e8c7ad149e335e x 3" // Metal Scrap
RequiresNearbyCraftingTags
[
"7b82c125a5a54984b8bb26576b59e977" // Workbench
]
Effect "84347b13028340b8976033c08675d458" // Wrench
}
{
Name Salvage
CategoryTag "7ed29f9101ae4523a3b2e389414b7bd9" // Salvage
InputItems this
OutputItems "21ede8ebffb14c5580e8c7ad149e335e x 2" // Metal Scrap
Effect "84347b13028340b8976033c08675d458" // Wrench
}
]No explicit Actions block appears in this .dat file because the engine automatically detects the Salvage and Repair patterns. The player right-clicks the axe and sees both "Salvage" and "Repair" in the context menu.
Example 2: V2 action with BlueprintName targeting (Stack of Maple Logs)
The Stack of Maple Logs barricade (Barricades/Stack_Log_Maple/Stack_Log_Maple.dat) uses the V2 action format to reference a blueprint by name:
Blueprints
[
{
Name Stack
CategoryTag "cdb2df24b76d4c6e9d8411c940d8337f" // Gear
InputItems "94f9c6aa09c249dfbce4f195c0271b9c x 12" // Maple Log
OutputItems this
Effect "84347b13028340b8976033c08675d458" // Wrench
}
{
Name Unstack
CategoryTag "7ed29f9101ae4523a3b2e389414b7bd9" // Salvage
InputItems this
OutputItems "94f9c6aa09c249dfbce4f195c0271b9c x 12" // Maple Log
Effect "84347b13028340b8976033c08675d458" // Wrench
}
]
Actions
[
{
Type Blueprint
BlueprintName Unstack
CommonTextId Unstack
}
]Key observations: The blueprint is targeted by its Name (Unstack) rather than by a fragile numerical index. The CommonTextId Unstack field uses the built-in Unstack translation key for the button label. The action is the only one explicitly defined; the engine still auto-generates the Salvage action (because the Unstack blueprint matches the salvage pattern), but the explicit action overrides it with the Unstack label and the Link value (which defaults to false, so the action immediately unstacks the item).
Example 3: V1 action with Source field (Blueprint Dressing)
The Blueprint Dressing item (Blueprints/Blueprint_Dressing/Asset.dat) demonstrates the Source field pattern:
GUID 8d840f701cc645789d4dc0765b461a2a
Type Supply
ID 1991
Size_X 2
Size_Y 1
Size_Z 0.2
Actions 1
Action_0_Type Blueprint
Action_0_Source 394
Action_0_Blueprints 2
Action_0_Blueprint_0_Index 1
Action_0_Key Craft_DressingKey observations: This item is a supply (a blueprint scroll) that has no blueprints of its own. The action sources its blueprints from item 394 (Dressing medical item). It targets blueprint index 1 on item 394. The player right-clicking the Blueprint Dressing item sees a "Craft Dressing" option that, when clicked, executes the Dressing item's second blueprint. The Blueprint Dressing supply item is the input item for that blueprint, so the player effectively consumes the blueprint to produce a Dressing.
Example 4: Multiple V1 actions on a single item
A barricade stack item (Barricades/Stack_Bar/Stack_Bar.dat) demonstrates the V1 action format with a single action:
Actions 1
Action_0_Type Blueprint
Action_0_Source 1911
Action_0_Blueprints 1
Action_0_Blueprint_0_Index 1
Action_0_Key UnstackThis action sources from the item's own ID (1911), targets blueprint index 1 (the salvage blueprint), and uses the Unstack localization key. Despite being index 1 (the salvage blueprint matching the salvage pattern), the engine uses the explicit action configuration rather than the auto-generated one, giving the action the Unstack label rather than Salvage.
Example 5: Crafting action with Link flag (hypothetical but documented pattern)
A mod that wants a right-click action to open the crafting menu at a specific blueprint rather than immediately craft it would use the Link flag (V1) or Link true (V2):
V1:
Actions 1
Action_0_Type Blueprint
Action_0_Blueprints 1
Action_0_Blueprint_0_Name CraftSuperRifle
Action_0_Blueprint_0_Link
Action_0_Text "View Recipe"
Action_0_Tooltip "Open the crafting menu to review the required materials before committing."V2:
Actions
[
{
Type Blueprint
BlueprintName CraftSuperRifle
Link true
Text "View Recipe"
Tooltip "Open the crafting menu to review the required materials before committing."
}
]When the player clicks "View Recipe," the crafting menu opens with the CraftSuperRifle blueprint selected. The player can review the full ingredient list, skill requirements, and workstation requirements before choosing whether to craft.
When to use the Link flag
Use the Link flag for blueprints that consume rare or valuable ingredients where the player should confirm the cost before committing. A recipe that requires a legendary item or a large quantity of rare resources should use a Link action by default. A recipe for common consumables (bandages, torches) should not use Link; the player values speed over confirmation for frequently repeated crafts.
Custom button text and tooltips
When a built-in translation key is not appropriate (e.g., for a completely custom action that does not correspond to any standardized game mechanic), the Text and Tooltip fields provide custom labels:
V1:
Actions 1
Action_0_Type Blueprint
Action_0_Blueprints 1
Action_0_Blueprint_0_Name ReinforceWithPlating
Action_0_Text "Reinforce"
Action_0_Tooltip "Consume steel plating to reinforce this barricade, increasing its max HP by 200."V2:
Actions
[
{
Type Blueprint
BlueprintName ReinforceWithPlating
Text "Reinforce"
Tooltip "Consume steel plating to reinforce this barricade, increasing its max HP by 200."
}
]The Text value ("Reinforce") appears as the button label. The Tooltip value appears as the hover tooltip. If a localization file for the item contains a key matching "Reinforce," the localized value is displayed instead of the raw string. This allows mod teams to ship translation-ready custom actions by using localization keys as action text.
Action-to-blueprint linkage diagnostics
| Symptom | Most likely cause | Resolution |
|---|---|---|
| Action does not appear on right-click | Action_#_Type missing or not Blueprint | Add Action_#_Type Blueprint |
| Action appears but does nothing when clicked | Blueprint_#_Index or BlueprintName references a non-existent blueprint | Verify the target blueprint exists at the specified index or name |
| Action triggers the wrong blueprint | Blueprint_#_Index shifted after adding or removing blueprints | Use BlueprintName instead of index |
| Custom text is ignored and the standard key label appears | Action_#_Key field is set alongside Action_#_Text; key always overrides text | Remove the Action_#_Key field or set it to the desired key |
| Action sources from wrong item | Source references an item ID that has changed | Verify the source item's ID or GUID |
| Salvage action says "Unstack" instead of "Salvage" | Barricade stack items use Unstack key intentionally | This is normal for barricade stacks; change the key to Salvage if desired |
| Two Salvage actions appear on one item | Both an auto-generated Salvage action and an explicit Salvage action are present | Remove the explicit action; the auto-generated one is sufficient |
| Action shows greyed out | Blueprint_#_Link flag is set or the blueprint's requirements are unmet | Check the Link flag; verify the player meets blueprint requirements |
| Multiple actions show in wrong order | Action ordering follows declaration order in the .dat | Reorder the action declarations in the .dat file |
| Custom tooltip does not appear | Action_#_Tooltip is overridden by a matching localization key | Use a unique tooltip string that is not a localization key, or remove the localization key from the localization file |
| V1 to V2 conversion loses actions | Auto-conversion may not convert actions alongside blueprints | Add an explicit V2 Actions block after auto-converting blueprints |
Action authoring workflow
- Confirm the blueprint exists and works. Before adding an action, verify that the blueprint can be crafted successfully through the crafting menu. An action is a wrapper; a broken blueprint produces a broken action.
- Name the target blueprint. If the blueprint does not already have a
Namefield, add one. Named blueprints are more resilient to reorganization than index-based targeting. - Choose the format. Use V2 for all new mod development. Match existing format if editing a legacy mod.
- Set the action type. Always
Blueprint. No other action type exists at present. - Target the blueprint. Use
BlueprintName(V2) orAction_#_Blueprint_#_Name(V1) with an exact string match on the blueprint'sNamefield. - Choose a localization key or custom text. For standard actions (Salvage, Repair, Refill, Unstack), use the corresponding built-in key via
CommonTextId(V2) orAction_#_Key(V1). For custom actions, useTextandTooltip. - Set the Link flag if appropriate. For expensive or rare recipes, set
Link true(V2) or addAction_#_Blueprint_#_Link(V1) to redirect to the crafting menu rather than crafting immediately. - Set the Source field if sourcing from another item. If the actions should reference blueprints on a different item, set
Sourceto that item's GUID (V2) or legacy ID (V1). - Test in-game. Right-click the item. Confirm all expected actions appear. Click each action. Confirm the correct blueprint fires or the crafting menu opens at the correct blueprint.
Best practices
- Use
BlueprintNametargeting instead ofBlueprintIndex. Blueprint indices change when the blueprint list is reorganized; names persist. - Name every blueprint that will be targeted by an action. An unnamed blueprint cannot be targeted by name.
- Use built-in translation keys (
Salvage,Repair,Refill,Unstack,Craft_Dressing, etc.) for consistency with the vanilla game's localization. Players recognize these labels. - Use custom
TextandTooltiponly for genuinely novel actions that have no vanilla analogue. A custom action that salvages an item for specific rare parts might useText "Strip for Electronics"with a descriptive tooltip. - Set
Link truefor any action where the blueprint's total cost is non-trivial. A player who accidentally converts a legendary item into common materials because they mis-clicked a right-click action will not make that mistake twice, but the frustration is avoidable. - Test actions with the source item's inventory state at edge conditions: the source item partially damaged, the source item having attachments, the player not meeting skill requirements, the workstation not in range. Each edge condition should produce the expected behavior (action hidden, greyed out, or proceeding with degraded output).
- Use the V2 format for all new mod development. The V1 format is maintained for backward compatibility but is more verbose and more error-prone.
- Document custom actions in the workshop description. Players relying on muscle memory for standard action labels may not notice a custom action until they need it.
Frequently asked questions
Can I have multiple actions on one item?
Yes. Set Actions to the count of actions (V1) or add multiple entries in the Actions [ ] list (V2). Each action can target a different blueprint or the same blueprint with different labels.
What happens if the referenced blueprint does not exist?
The action silently fails to appear on the context menu. There is no error message in the log. Always test every action in-game after adding, removing, or renaming blueprints.
Can an action target a blueprint on a completely unrelated item?
Yes, via the Source field. The Source field can reference any item ID (V1) or GUID (V2). The action searches for blueprints on the source item, not the host item. This is the mechanism used by blueprint scroll items in vanilla.
Can I change the order of actions in the right-click menu?
The action order in the right-click menu follows the declaration order in the .dat file. Reorder the action declarations to reorder the menu entries. Engine-default actions (Equip, Drop, Dequip) are always appended after explicit actions.
Do I need an Actions block if my blueprints already auto-generate default actions?
No. If the default Salvage, Repair, or Refill action is sufficient, no explicit Actions block is needed. Add an explicit Actions block only when you need to override the default label, add a tooltip, use the Link flag, or expose a blueprint that does not match any default pattern.
Can I combine V1 and V2 action syntax on the same item?
No. Choose one format per item. The engine processes the Actions field based on the format it detects. Mixing V1 flat keys (e.g., Action_0_Type) with a V2 JSON list will produce undefined behavior.
How do I localize custom action text?
Create a per-item localization file (e.g., English.dat) in the same folder as the item's Asset.dat. Add entries matching the Text and Tooltip values. The engine checks the localization file first; if a matching key is found, the localized value is displayed. If no matching key is found, the raw string is used as-is.
What is the difference between BlueprintName and BlueprintIndex?
BlueprintName targets a blueprint by its Name field (a case-sensitive string). BlueprintIndex targets a blueprint by its zero-based position in the blueprint list. BlueprintName is stable across blueprint-list reordering; BlueprintIndex is not. Always prefer BlueprintName.
Can I have an action that does nothing but display a tooltip?
No. All actions must be of type Blueprint and must target a valid blueprint. There is no "info-only" or "tooltip-only" action type. To provide information to the player without triggering a blueprint, use the item's Description field in English.dat instead.
Can I use the Source field to reference a blueprint on an item from another mod?
Yes, but the source item must be loaded. If the source item's mod is not subscribed or not loaded, the action will silently fail to appear. Cross-mod action dependencies are fragile and should be documented in the workshop description so players understand the dependency.
How do I remove a default action that the engine auto-generates?
There is no field to suppress a default action. The only way to remove a default action is to remove the blueprint pattern that triggers it. If a Salvage action is being auto-generated but you do not want the item to be salvageable, remove the salvage blueprint.
Can a single action trigger multiple blueprints sequentially?
No. Each action targets exactly one blueprint (specified by index or name within the action's blueprint list). To trigger multiple blueprints from a single right-click interaction, create a single blueprint that has the combined effect of both operations.
Advanced action patterns
Redirect-to-crafting-menu actions for complex recipes
The Link flag is underutilized in mods. Any blueprint that requires more than three ingredients, a skill check, a workstation check, and a rare tool should use a Link action rather than an immediate-craft action. The crafting menu displays the full ingredient list, the skill requirement indicator, and the workstation availability indicator -- information the context menu tooltip cannot convey effectively.
Action sourcing chains
A blueprint scroll item (item A) sources its actions from a medical item (item B), which in turn has blueprints that consume item A as an input. This circular dependency (scroll is input for the blueprint it references) is intended: the player finds the scroll, right-clicks it, clicks "Craft Dressing," and the scroll (as the Critical input item) is consumed alongside the other ingredients to produce the output. This is the standard vanilla pattern for recipe-scroll items.
Custom action for interchangeable ammunition
A mod that includes multiple ammunition types for the same gun can use custom actions with descriptive labels: "Load Armor-Piercing," "Load Tracer," "Load Subsonic." Each action targets a different magazine-loading blueprint. The blueprints all use Operation FillTargetItem with different magazine GUIDs as their outputs. The player right-clicks the gun and selects the ammunition type directly from the context menu.
Appendix A: Action field quick reference (V2)
| Field | Type | Required | Default |
|---|---|---|---|
Type | string (Blueprint) | Yes | -- |
Source | GUID string | No | Host item GUID |
BlueprintName | string | No | -- |
BlueprintIndex | uint8 | No | 0 |
Link | bool | No | false |
CommonTextId | string | No | -- |
Text | string | No | -- |
Tooltip | string | No | -- |
Appendix B: Action field quick reference (V1)
| Field | Type | Required | Default |
|---|---|---|---|
Actions | uint8 | Yes | 0 |
Action_#_Type | EActionType enum (Blueprint) | Yes | -- |
Action_#_Source | uint16 | No | Host item ID |
Action_#_Blueprints | uint8 | Yes | 0 |
Action_#_Blueprint_#_Index | uint8 | No | 0 |
Action_#_Blueprint_#_Name | string | No | "" |
Action_#_Blueprint_#_Link | flag | No | not set |
Action_#_Key | string | No | -- |
Action_#_Text | string | No | -- |
Action_#_Tooltip | string | No | -- |
Appendix C: Full translation key catalogue
| Key | Typical use | Auto-generated? |
|---|---|---|
Attachments | Opens attachment sub-menu | No |
Craft_Bandage | Craft bandages from rags | Yes (on Bandage host or source) |
Craft_Dressing | Craft dressings from bandages | Yes (on Dressing host or source) |
Craft_Rag | Craft rags from cloth | Yes |
Craft_Seed | Craft seeds from produce | Yes |
Dequip | Unequip item | Engine default |
Drop | Drop item | Engine default |
Equip | Equip item | Engine default |
Pickup | Pick up item | Engine default |
Refill | Refill a target item | Yes (FillTargetItem pattern) |
Repair | Repair target item | Yes (RepairTargetItem pattern) |
Salvage | Salvage item for materials | Yes (single-supply self-referencing pattern) |
Stack | Stack items | Engine default for stackable items |
Store | Store item in nearby container | Engine default |
Take | Take item from container | Engine default |
Unstack | Unstack barricade stack into materials | Same pattern as Salvage; label differs |
Appendix D: External references
- Smartly Dressed Games modding documentation -- official action field reference.
- Unturned on Steam -- game page and changelog.
- Blueprint Asset Reference -- the companion article; covers blueprint configuration in full. Every action is a linker to a blueprint.
- Item Asset Anatomy -- the shared
.datfield reference for all item types. - Project Folder Structure and GUIDs -- GUID generation and folder layout.
- Gun Mod Tutorial -- practical action usage in gun mod authoring.
Document history
| Version | Date | Author | Notes |
|---|---|---|---|
| 1.0 | 2026-07-26 | 57 Studios | Initial publication. Complete V1 and V2 action field reference, full translation key catalogue, default action generation rules, Source field documentation, worked examples from shipped vanilla data, diagnostic table, FAQ, appendices. |
Action parsing and cross-format compatibility
The engine parses the Actions field by detecting whether the value begins with a [ character. If it does, the V2 JSON-style parser is used. If it does not, the V1 flat-key parser is used. This detection is simple but has one consequence: a V2 Actions list must begin with [ on the same line as Actions, and the entire list body must be structurally valid as a list of dictionaries.
A common V2 authoring mistake is to place the opening bracket on the next line:
Actions
[
{ ... }
]This is valid according to the engine parser (the bracket is detected correctly). However, placing the bracket on the same line as Actions is the vanilla convention and avoids ambiguity:
Actions [
{ ... }
]Both forms are technically valid. The cohort recommendation is to follow the vanilla convention: bracket on the same line for consistency with how the vanilla .dat files are authored.
Cross-format migration
When migrating a V1 item with actions to V2, all actions should be consolidated into a single V2 list. The migration steps are:
- Convert
Action_#_Type BlueprinttoType Blueprint. - Convert
Action_#_Source <ID>toSource "<GUID>"(looking up the GUID for the legacy ID if needed). - If using
Action_#_Blueprint_#_Name, convert toBlueprintName. If usingAction_#_Blueprint_#_Index, convert toBlueprintIndex. - If the
Action_#_Blueprint_#_Linkflag is present, addLink true. - Convert
Action_#_KeytoCommonTextId. - Convert
Action_#_TexttoTextandAction_#_TooltiptoTooltip. - Wrap everything in
Actions [ { ... } ]and remove all V1Action_#_properties. - Test every action in-game. Confirm each right-click entry appears, each button label reads correctly, and each action performs the intended blueprint.
Action ordering and priority rules
When an item has both auto-generated default actions and explicit actions, the following priority rules apply:
- If an explicit action targets the same blueprint as a default action, the explicit action replaces the default action. The explicit action's label, tooltip, and Link setting are used.
- If an explicit action references a blueprint by name and the engine auto-generates a default action for a different blueprint with the same default pattern (e.g., two salvage blueprints), both the explicit action and the default action appear. The explicit action uses the specified blueprint; the default action uses the auto-detected blueprint.
- Explicit actions are listed in the order they appear in the
Actionsblock. Default actions are appended after all explicit actions, in the order: Salvage, Repair, Refill. - Engine-default actions (Equip, Drop, Dequip, Stack, Store, Take) are always appended after all explicit and default blueprint actions.
Action interaction with item state
Actions are dynamic. They can appear or disappear based on the item's current state and the player's situation:
- A Repair action is hidden when the item is at full durability.
- A Refill action is hidden when the item is already full (fuel, ammunition).
- A Salvage action is always present if the salvage blueprint exists, regardless of the item's condition.
- An action sourced from another item is hidden if the source item is not loaded.
- An action targeting a blueprint with conditions is hidden when those conditions are unmet (unless the blueprint has
VisibleWithUnmetConditions true). - An action targeting a blueprint with a Critical item is hidden when the player does not possess that Critical item.
These dynamic behaviors are important to understand when testing actions. An action that works during one test session may be absent in another because the player's inventory state changed between sessions. When a player reports that an action has "disappeared," the first diagnostic step is to verify the item's state and the player's inventory against the blueprint's requirements.
Action diagnostic flow for missing context-menu entries
The diagnostic flow above traces every gate that can prevent an action from appearing. Start at the top and follow the branch that matches your situation. The most common cause of a missing action is a mismatch between the action's target (BlueprintName or BlueprintIndex) and the actual blueprint configuration.
Advanced action authoring checklist
Before publishing a mod with custom actions, confirm the following:
- [ ] Every action's
TypeisBlueprint. - [ ] Every
BlueprintNamevalue exactly matches theNamefield of the target blueprint, including case. - [ ] No action uses
BlueprintIndexunlessBlueprintNameis impossible (blueprint has noName). - [ ]
CommonTextId(if used) is one of the documented valid translation keys. - [ ]
TextandTooltip(if used) are not accidentally matching an existing localization key unless that is intended. - [ ]
Linkistruefor expensive or irreversible recipes. - [ ]
Sourceis set only when referencing blueprints on a different item. - [ ] Auto-generated default actions are not duplicated by explicit actions targeting the same blueprint.
- [ ] Action ordering in the
Actionsblock reflects the desired right-click menu order. - [ ] Every action has been tested: right-click the item, confirm the action appears, click it, confirm the blueprint executes correctly.
- [ ] Edge cases tested: item at full durability (Repair should be hidden), item empty (Refill should be hidden), player without Critical items (actions with Critical supplies should be hidden), player far from workstation (actions with operation requirements should show appropriate indicators).
Appendix E: Action-to-blueprint relationship diagram
┌─────────────────────────────────────────────────────────────────────┐
│ Action-to-blueprint relationship for a hypothetical custom rifle │
└─────────────────────────────────────────────────────────────────────┘
Item: CustomRifle (GUID: abcd-1234)
│
├── Blueprints
│ ├── [0] Name: SalvageRifle ← auto-detected as Salvage
│ ├── [1] Name: RepairRifle ← auto-detected as Repair
│ ├── [2] Name: RefillMagFromReserve ← auto-detected as Refill
│ └── [3] Name: CraftRifleFromParts ← NOT auto-detected
│
└── Actions [ ← explicit actions block
{
Type Blueprint
BlueprintName CraftRifleFromParts
Text "Assemble Rifle"
Tooltip "Consume rifle parts to assemble a new rifle."
Link true
}
]
Right-click menu result:
────────────────────────────────────────
Assemble Rifle ← explicit action (Link → opens crafting menu)
Salvage ← auto-generated from blueprint [0]
Repair ← auto-generated from blueprint [1]
Refill ← auto-generated from blueprint [2]
────────────────────────
Equip ← engine default
Drop ← engine default
If the rifle is at full durability:
Assemble Rifle ← explicit action (always visible)
Salvage ← auto-generated (always visible because blueprint exists)
Refill ← auto-generated (visible only if not full)
────────────────────────
Equip ← engine default
Drop ← engine default
(Repair hidden because rifle is at full durability)This diagram shows the complete action landscape for an item with four blueprints (three matching default patterns, one requiring an explicit action) and how the right-click menu changes based on item state.
Appendix F: Special considerations for server mods with custom actions
Server-side mods that distribute items with custom actions to multiple players must account for the following additional considerations:
- All players must have the mod subscribed for custom actions to appear. An action configured with a custom
Textvalue (e.g., "Strip for Parts") will appear as that exact string for all players sharing the same localization language. Players using different languages will see the raw string unless a per-language localization file is provided. - Actions that use
Sourceto reference another item rely on that source item being loaded on every player's client. If a player does not have the mod containing the source item subscribed, the action will not appear. - The Link flag is a client-side behavior. Opening the crafting menu at a specific blueprint requires the client to be able to enumerate the source item's blueprints. If the client cannot (due to missing mod subscription), the Link action will do nothing.
- Custom actions with the same
BlueprintNamebut differentTextvalues on different servers may confuse players who move between servers. Consider using consistent naming across servers in the same mod ecosystem. - When updating a mod that includes custom actions, increment the mod version and document action changes in the Workshop changelog. Players who rely on specific right-click options for their workflow will notice when those options change or disappear.
Cross-references
- Blueprint Asset Reference -- the previous article in this section; covers blueprint configuration that actions reference.
- Item Asset Property Reference -- the next article in this section.
- Mod Hooks Reference -- earlier article in the items section chain.
- Item Asset Anatomy -- the shared
.datfield reference. - Project Folder Structure and GUIDs -- GUID generation and naming.
- Gun Mod Tutorial -- practical action and blueprint usage.
- Server Configuration: Custom NPCs, Dialogues, and Quests -- conditions and rewards that can gate blueprint visibility.
- Smartly Dressed Games modding documentation -- official field reference.
- Unturned on Steam -- game page.
