Skip to main content
Plugins can extend the Frosty Editor UI with custom menu items, context menu actions, and execution hooks.

Context Menu Extensions

Context menu extensions add right-click actions to the Data Explorer. They inherit from DataExplorerContextMenuExtension.

Creating a Context Menu Item

Here’s a real example from ~/workspace/source/Plugins/DuplicationPlugin/DuplicateContextMenuItem.cs:613:

Registering Context Menu Items

Register in AssemblyInfo.cs:
From ~/workspace/source/FrostyPlugin/Attributes/RegisterDataExplorerContextMenuAttribute.cs:11:

Context Menu Properties

string
required
The display text for the menu item
ImageSource
Optional icon displayed next to the menu item
RelayCommand
required
The command executed when the menu item is clicked

Accessing Selected Assets

Use App.SelectedAsset to get the currently selected asset:
For multiple selection:
Menu extensions add items to the top menu bar. They inherit from MenuExtension.

Creating a Menu Extension

From ~/workspace/source/Plugins/BiowareLocalizationPlugin/BioWareLocalizedStringEditorMenuExtension.cs:
From ~/workspace/source/FrostyPlugin/Extensions/MenuExtension.cs:10:

Registering Menu Extensions

From ~/workspace/source/FrostyPlugin/Attributes/RegisterMenuExtensionAttribute.cs:25:
Common top-level menus:
  • File - File operations
  • Edit - Editing commands
  • View - UI toggles and windows
  • Tools - Utility functions
  • Help - Documentation and about

Execution Actions

Execution actions run code before or after mod execution in the Mod Manager. They inherit from ExecutionAction.

Creating an Execution Action

From ~/workspace/source/FrostyPlugin/Extensions/ExecutionAction.cs:11:

Registering Execution Actions

Use Cases

Execution actions are useful for:
  • Generating runtime files before game launch
  • Cleaning up temporary files after game exit
  • Validating mod configurations
  • Injecting DLLs or patches
  • Logging game session data

Tab Extensions

Tab extensions add custom tabs to the editor. They inherit from TabExtension.

Creating a Tab Extension

Registering Tab Extensions

Custom Handlers

Custom handlers intercept asset operations for special processing.

EBX Handlers

Handle specific EBX asset types:
Register for an EBX type:

Resource Handlers

Handle specific resource types:
From the MeshSetPlugin example (~/workspace/source/Plugins/MeshSetPlugin/Properties/AssemblyInfo.cs:40).

Startup Actions

Startup actions run when Frosty first launches, before any profile is loaded:
Register:

Best Practices

Always provide feedback for long-running operations:
Catch and log errors appropriately:
Validate assets before operations:

Complete Example: Export Context Menu

Register:

Next Steps

Plugin Attributes Reference

Complete reference for all plugin attributes and their parameters