Skip to content

Skill Action Bar ​

Configure the skill action bar: what it displays, which template variables exist, how to set the refresh interval, and how the forced delay works. The action bar is the line of hints at the bottom of the screen while the player is in cast mode, showing skill slot state, so players open the GUI less often to check bindings

Configuration ​

The settings live in config.yml under actionbar:

yaml
actionbar:
  # Whether the skill action bar is enabled
  enabled: true
  # Refresh interval in ticks; values below 1 are treated as 1
  refresh_interval_ticks: 10
  # Template shown while cast mode is enabled
  template_cast_mode: "<gold>Cast Mode</gold> %slot_1% %slot_2% %slot_3% <gray>Delay:</gray> %forced_delay%"
  # Idle template; blank falls back to the source default text instead of disabling the display
  template_idle: ""
FieldTypeRequiredDefaultValuesDescription
actionbar.enabledbooleanNotruetrue / falseWhether the action bar refreshes. When off, no refresh task is started
actionbar.refresh_interval_ticksintegerNo10≥ 1, values below 1 become 1Refresh interval in ticks (20 ticks ≈ 1 second)
actionbar.template_cast_modestringNo&aCast Mode &7| %slot_display%MiniMessage textTemplate while cast mode is on. Blank or whitespace-only falls back to the built-in default template
actionbar.template_idlestringNo&7IdleMiniMessage textIdle template. Blank or whitespace-only falls back to the built-in default

IMPORTANT

The current implementation only pushes the action bar while the player is in cast mode and their profile is loaded: when the player leaves cast mode, or the profile is not loaded, the refresh is skipped entirely, so template_idle is never sent to the player. The key is still parsed and kept as a fallback default

Template variables ​

VariableDescription
%slot_display%All slots rendered as one combined string, separated by spaces
%slot_1% ~ %slot_n%A single slot's text. n follows the player's slot count (slots.default_count); %slot_1% is the slot at index 0
%forced_delay%Remaining global forced cast delay, formatted as 1.5s; 0s when there is none

Slot text is assembled from four parts: the bound skill, the trigger display name, cooldown state, and empty-slot state. An empty slot uses gui.slot_empty_short from the language file; trigger names come from triggers.<id>.display_name, and an unbound trigger uses gui.trigger_unbound_short

Forced delay ​

cast_timing controls the global forced delay written after a successful cast; the remaining time is shown to the player through %forced_delay% above

yaml
cast_timing:
  # Global delay after a successful cast, in ticks; 0 disables it
  forced_global_cast_delay_ticks: 0
FieldTypeRequiredDefaultValuesDescription
cast_timing.forced_global_cast_delay_ticksintegerNo0≥ 0, negatives become 0Global forced delay written after a successful cast, in ticks. During the delay a new cast attempt fails with cast.forced_delay. 0 disables it

Relationship to cast mode ​

The action bar only refreshes while cast mode is on. The entry key, the enable switch, and the rejoin restore policy are written in config.yml > cast_mode, see Triggers - Cast mode

  • Active triggers only listen to server-visible actions (left/right click, Q, number keys) while cast mode is on
  • With cast_mode.restore_last_state_on_join: true, a rejoining player gets their previous cast mode state back, and with it the action bar refresh

Compact ​

yaml
actionbar:
  template_cast_mode: "<gold>Cast</gold> %slot_display%"

This one fits servers with few skill slots

With delay hint ​

yaml
actionbar:
  template_cast_mode: "<gold>Cast Mode</gold> %slot_1% %slot_2% %slot_3% <gray>Delay:</gray> %forced_delay%"

This one fits servers that enable cast_timing.forced_global_cast_delay_ticks

Design notes ​

  • If your server already shows combat, region, or quest text on the action bar, plan display priority across them
  • With many slots, prefer %slot_display% or split the display into groups so the line does not grow too long

Troubleshooting ​

  • Nothing shows: check actionbar.enabled, whether you are in cast mode, and whether the profile has loaded
  • Slots look empty: check that you own the skills, that slots are bound, and that skill sources are synced
  • The delay never changes: check cast_timing.forced_global_cast_delay_ticks and whether successful casts write the delay
  • Conflicts with another action bar plugin: adjust actionbar.refresh_interval_ticks