Blueprints loader¶
Folder: RuneSchema/mods/<ModName>/blueprints/
Use /blueprints to change supported reflected defaults on a class or component
that is already loaded. The loader does not create Blueprint classes; cook a new
class in a PAK and mount it when your mod needs one.
Check property names and types against the live class. Restart the game after changing class defaults.
Existing menu widgets¶
$RuntimeWidget can apply reflected properties to an existing live widget and
bind a compatible multicast UI event to a reflected function. It does not
create new widgets or functions.
{
"/Game/UI/MainMenu/WBP_MainMenu_CharacterSelect": {
"$RuntimeWidget": {
"Character.EditAppearanceButton": {
"Visibility": "Visible",
"bIsEnabled": true,
"RenderOpacity": 1.0,
"$Bind": {
"Event": "OnButtonBaseClicked",
"Target": "Character",
"Function": "GoToEditAppearance"
}
}
}
}
}
Widget paths use dot-separated reflected properties starting at the live owner.
$Bind.Target uses the same form; omit it or use "$Owner" to bind a function
on the owner. The delegate and function parameter contracts must be compatible.
Runtime rules are event-driven and deduplicated by target and function.
When a rule applies to only one storefront, gate the whole block:
"$RuntimeWidget": {
"$Storefront": "GamePass",
"$SkipMessage": "This rule is only needed on Game Pass.",
"Character.EditAppearanceButton": {
"Visibility": "Visible"
}
}
$Storefront accepts "GamePass"/"WinGDK",
"Steam"/"SteamEpic"/"Epic", "Any", or an array of these values.
$SkipMessage is optional and emitted only when the running storefront is known.
Simple rules¶
- Use
/blueprintsonly for supported reflected defaults on loaded classes or components. - Use
$RuntimeWidgetonly for existing live widget-tree objects. - Confirm each field, widget path, delegate, and function against live reflection.
- Restart after changes. Cook and mount a Blueprint when a new class is required.
FAQ¶
FAQ-BLUEPRINTS-001 — Can the Blueprints loader create a new Blueprint class?¶
No. It edits supported reflected defaults on loaded classes or components. A new Blueprint class must be cooked and mounted separately.
FAQ-BLUEPRINTS-002 — Do class-default changes hot-reload safely?¶
Treat them as restart-required.
FAQ-BLUEPRINTS-003 — Can a Blueprint mod change a live menu button?¶
Yes, when the button already exists in the cooked widget tree. Use
$RuntimeWidget to apply reflected properties and, if needed, bind a
compatible multicast event to an existing function.