# BIS RPG Action Bar Blueprint Quick Start

## No Blueprint Required to Display the Bar

After Fab **Add to Project**, open the project and press **Play**. Action Bar Kit automatically displays its 12-slot starter bar for the first local player. The recipe below is only needed when the slots should run the buyer's own gameplay.

## Fastest Working Setup

In a local-player Blueprint:

`Event BeginPlay` -> `Start Action Bar Kit` -> promote `Action Bar Host` to a variable

Then bind the host's `On Action Slot Requested` event:

`On Action Slot Requested` -> break `Action Slot Request` -> `Switch on Name (ActionId)`

The default cases are `Action01` through `Action12`. Clicking a slot or pressing its displayed key reaches the same event. Calling `Start Action Bar Kit` is safe even when automatic startup already ran: it returns the existing host and never creates a duplicate overlay. No C++ class, widget creation, viewport call, input mapping, preset, or provider is required.

Use `Set Simple Action Bar Slot` on the returned host to replace a starter slot's ID and label without rebuilding an array. After accepting a request, call `Start Slot Cooldown` if the basic Blueprint path needs a self-contained display cooldown; the host blocks that slot and counts it down automatically. `Clear Slot Cooldown` ends it early. Gameplay providers should keep using their own authoritative cooldown state instead.

Players can rebind a slot without any extra Blueprint UI: open **Settings > Input**, enable **Key Binds**, hover a visible slot, hold any desired Shift/Control/Alt/Command modifiers, and press a keyboard or gamepad button. Plain and modified versions of the same base key are independent. Right-click the slot, or press `Backspace` or `Delete`, to clear only its complete chord; right-click outside Key Binds mode does not remove the assigned action. `Escape` clears the hovered or explicitly captured slot binding; with no target slot it exits keybind mode. The equivalent Blueprint nodes are `Begin Slot Keybind Capture`, `Cancel Slot Keybind Capture`, `Is Capturing Slot Keybind`, `Get Pending Keybind Slot Index`, `Set Slot Bound Key`, and `Set Slot Bound Chord`.

Players can also maintain named setups on the dedicated Profiles page. `Create User Profile`, `Load User Profile`, `Rename User Profile`, `Delete User Profile`, and `Set Default User Profile` expose the same workflow to Blueprint. Existing `Save User Settings` nodes continue to work and save the currently active profile. Older single-save installations become a `Default` profile automatically. The protected factory Default provides the shipped layout; edits are retained as a working copy and Save as New Profile creates a named setup. Default cannot be renamed, overwritten or deleted.

## Start With Your Own Preset

1. Create a Data Asset using `ABKActionBarPreset`.
2. Fill its layout and slots.
3. Connect it to the `Preset` pin on `Start Action Bar Kit`.
4. Bind `On Action Slot Requested` exactly as in the fastest setup.

## Connect a Gameplay Provider

Use this path when an ability, inventory, or combat object owns live slot state:

1. Implement `ABKActionProviderInterface` on that object.
2. Connect the object to `Action Provider` on `Start Action Bar Kit`.
3. Return current presentation data from `Get Action Bar Slots`.
4. Handle trigger, move, clear, and rebind requests in the provider.
5. Call `Refresh From Action Provider` whenever cooldown or usability display state changes outside a forwarded request.

The provider remains authoritative. Action Bar Kit displays and forwards requests; it does not decide combat or inventory results.

## Calling From a Custom Event

`Start Action Bar Kit` can be called from BeginPlay or any later custom event after the local PlayerController exists. Repeated calls return the existing host, so delayed UI initialization does not create duplicate bars or automatically reload saved assignments over live cooldown state.

Use the advanced `Player Controller` pin only for local split-screen or explicit controller selection. The default resolves the first local player.

## Common Problems

- **The return value is None:** call after the local PlayerController exists. The node deliberately does nothing on a dedicated server.
- **The game already owns cursor/input mode:** leave `Keep Mouse Cursor Visible` disabled under `Project Settings > Plugins > BIS RPG Action Bar`. The automatic host preserves the project's input mode; a manually hosted bar also leaves it to the game.
- **Clicks do not run gameplay:** bind `On Action Slot Requested`; the plugin forwards requests but does not invent game-specific abilities.
- **A provider pin is rejected:** the object must implement `ABKActionProviderInterface`.
- **Cooldowns do not change:** update them in the gameplay provider and call `Refresh From Action Provider`.
- **The bar appears twice:** use `Start Action Bar Kit` for runtime creation and do not also add a separate auto-displaying host to the same PlayerController.
- **I do not want automatic startup:** disable it under `Project Settings > Plugins > Action Bar Kit`; manual startup and provider/preset workflows remain available.
- **A rebind is not captured:** the host must belong to a local PlayerController. Keyboard and gamepad buttons are accepted; mouse buttons, analog axes, `Any Key`, and `Escape` are not assigned.
