Casting

Active (or on-use) spells can be cast in a variety of ways depending on how the server is configured.

Casting Spells

by Command

Any active learned spell can be cast with /cast <spell> as long as the player has permission to use the command.

While not the fastest way to cast, it's the most basic and does not require any binding setup.

from the Spellbook

Active spells can be cast directly from the Spellbook menu (/spellbook). Left-clicking a usable spell casts it. Right-clicking opens the binding window so the player can assign that spell to a quickcast slot (when player bindings are enabled).

Quickcasting

Quickcasting lets a player cast their bound spells without typing commands. It's configured server-wide in config-spells.yml under Configuration.Casting.QuickCasting. Pick one of the methods below by setting QuickCasting.Method:.

Method Description
NONE Quickcasting disabled
HOTBAR Toggle a cast bar on/off; tap the slot number (1-9) to cast the spell bound to that slot
CLICK_COMBO Perform a sequence of clicks/keys (e.g. LRR) to cast the spell tied to that combo

The method can be activated by an in-game action set under QuickCasting.Activation:

Activator Description
NONE No activator (open via API/menu)
SWAP_HANDS Swapping hands (vanilla F key)
DROP_ITEM Dropping an item (vanilla Q key)

Common Options

These apply regardless of Method, set under Configuration.Casting.QuickCasting:

Option Description Default
BindableSlots Number of quickcast slots a player can bind spells to 5
PlayerBindings Whether players can set their own bindings. When false, only server/archetype bindings apply true
ActivationSkill Mythic skill list run when quickcasting is activated []
Display.Type Where the overlay renders (same values as Location below). Takes precedence over Location falls back to Location (shipped config: SUBTITLE)
Display.UpdateIntervalTicks How often the text overlay re-renders (action/title/subtitle types). Accepts a Mythic duration 10t
Display.Prefix Text prepended to the rendered overlay <gray>[</gray>
Display.Suffix Text appended to the rendered overlay <gray>]</gray>
Display.Separator Separator placed between overlay entries " "
HUD.Layout MythicHUD layout enabled while quickcasting is active (used when the render type is MYTHICHUD) casting_layout

HOTBAR — Cast Bar

The cast bar can hold up to a configured number of bound spells (default 5, max 9). When toggled on, the player taps the slot number to cast the spell bound there.

QuickCasting.Location controls where the bar is rendered:

  • ITEMS — overlays spell icons on the player's hotbar
  • ACTION_MESSAGE — renders bound spells on the action bar using unicode icons
  • TITLE / SUBTITLE — renders into the title area
  • MYTHICHUD — renders via Mythic HUD
  • NONE — no display

The render target is chosen by Display.Type (see Common Options); Location is the older key and is used only when Display.Type is unset.

Hotbar-specific options under Configuration.Casting.QuickCasting.HotBar:

Option Description Default
SingleCast Whether the cast bar hides itself after a single cast true
OffsetKeys Whether slot numbers are offset from the player's currently selected hotbar slot false (shipped config: true)
Display.UseIcons Whether to render each bound spell's configured icon instead of its display name false

CLICK_COMBO — Click / Dance Combos

The player toggles the combo input mode, then enters a short sequence of inputs to cast a spell. There are two modes set under Configuration.Casting.QuickCasting.ClickCombos.Mode:

  • SLOTS — slot-based combos. Each binding slot has a fixed input pattern (e.g. slot 1 = LL, slot 2 = LR). Whichever slot's combo matches casts the spell bound to that slot.
  • SPELLS — spell-defined combos. Each spell with a ClickCombo: or ClickCombos: value casts when its pattern is matched, regardless of bindings.

Available Inputs

A combo pattern is a sequence of input tokens. Available tokens:

Token Action
L Left-click
R Right-click
C Crouch / sneak
Q Drop item
F Swap hands
W Move forward (with UseMovementKeys)
A Strafe left (with UseMovementKeys)
S Move backward (with UseMovementKeys)
D Strafe right (with UseMovementKeys)
J Jump (with UseMovementKeys)

UseMovementKeys: true enables W/A/S/D/J for "dance casting" — building combos from movement directions instead of (or alongside) clicks.

If the activator is set to SWAP_HANDS or DROP_ITEM, those keys are consumed for toggling the combo mode and become unavailable as combo inputs while the activator is active.

Notable Tuning Options

All configured under Configuration.Casting.QuickCasting.ClickCombos:

Option Description Default
Activator Which input starts a combo session (SWAP_HANDS, DROP_ITEM, or NONE). Independent of the top-level Activation. SWAP_HANDS
ToggleActivatorCancels If true, pressing the activator again cancels the current session true
KeepSessionOpen If true, the session/overlay stays active indefinitely (like the hotbar); the buffer still resets on idle/cast/invalid input, and only the activator closes it false
AllowedInputs List of tokens accepted as combo inputs [] (shipped config: [L, R, C, Q, F, W, A, S, D, J])
ComboLength Number of inputs in a fixed-length combo 3
VariableLengthCombos Allow combos of varying length to match (e.g. both LL and LLR) false
TimeoutMs How long the player has between inputs before the buffer resets 800
RequireSneakForInputs Require sneaking for L/R inputs to count false
CancelVanillaActions Suppress vanilla effects of inputs while the combo overlay is open true
DisableOnInvalidCombo Close the combo overlay automatically if no matching combo exists true
AllowInvalidCombos Allow buffers that don't match any combo (paired with DisableOnInvalidCombo) false
AllowSpellCombosWithBindings In SLOTS mode, also allow direct spell combos to cast false
FreezeMovementDuringCombo Stop the player while building a combo false
InputSkill Mythic skill list run when an input is accepted
FailedSkill Mythic skill list run when a combo fails to match

Display Hints

With ClickCombos.Display.ShowHints: true, the combo overlay shows the next valid inputs after the buffer. IconMap: lets you replace each input token with custom Unicode/font characters for in-world icons.

EmptyText sets what is shown between the overlay prefix and suffix while the buffer is empty (default <dark_gray>...</dark_gray>). Set it to "" to show nothing until the first input.

The hint string is wrapped with these options under ClickCombos.Display:

Option Description Default
HintPrefix Text placed before the hint list " <dark_gray>"
HintSeparator Separator between hinted inputs /
HintSuffix Text placed after the hint list </dark_gray>
Configuration:
  Casting:
    QuickCasting:
      Method: CLICK_COMBO
      Activation: SWAP_HANDS
      Location: ACTION_MESSAGE
      ClickCombos:
        Mode: SLOTS
        ComboLength: 3
        AllowedInputs: [L, R]
        Slots:
          1: LLL
          2: LLR
          3: LRL
          4: LRR
        Display:
          EmptyText: "<dark_gray>...</dark_gray>"
          ShowHints: true
          IconMap:
            L: '⬅'
            R: '➡'

Spell-Side Configuration

A spell can declare its own click combo(s) using ClickCombo: (single) or ClickCombos: (list) in the spell config. These are used in SPELLS mode, or in SLOTS mode when AllowSpellCombosWithBindings is enabled.

fireball:
  Spell: true
  Trigger: ~onUse
  ClickCombos:
    - LRL
    - RRL
  Skills:
    - projectile{...}

Global Cooldown

By default each spell only has its own cooldown, so a player with several off-cooldown spells can fire all of them in the same tick. GlobalCooldown sets a minimum delay between any two spell casts by the same player.

Configuration:
  Casting:
    GlobalCooldown: 1s     # also accepts ticks and milliseconds: '20t', '500ms'
Option Description Default
GlobalCooldown Minimum delay between any two spell casts by the same player. 0 disables it. 0s

Details:

  • It applies to every casting route: /cast, the spellbook, the quickcast hotbar, click combos, and the castSpell mechanic.
  • The cooldown starts when a cast is initiated, not when it finishes. For a spell with a CastTime, it starts the moment the cast bar appears, so a player cannot slip an instant spell in while a long cast is running. A cast that is cancelled part-way still spends the global cooldown.
  • A cast blocked by the global cooldown fails before any targeting, reagent or condition check runs, so nothing is consumed. The player gets the spell.cast.failed.global-cooldown message.
  • It is a single server-wide value. It is not per-spell, and it is not affected by the CASTING_SPEED stat.
  • Passive (non ~onUse) spells are never gated by it.
  • Because castSpell casts a spell as if the target used it themselves, it is gated too. A skill that chains several castSpell mechanics at one target will only land the first while a global cooldown is set. Use the spell's Skills: list directly if you need several effects to fire together.

Cast Time

A spell with a CastTime: value runs through the cast-time pipeline before its skills execute: a cast bar is shown, the cast can be cancelled or pushed back, reagents can be deferred until completion, and lifecycle triggers (~onSpellCastStart, ~onSpellCastComplete, ~onSpellCastCancel, ~onSpellCastInterrupt, ~onSpellCastPushback) fire at the appropriate moments.

The base cast time is divided by the caster's CASTING_SPEED stat — a CASTING_SPEED of 2.0 makes a 2s cast take 1s.

A CastTime of 0 (the default) makes the spell instant; the cast pipeline is bypassed entirely.

Spell-Level Options

fireball:
  Spell: true
  Trigger: ~onUse
  CastTime: 2s          # also accepts ticks: '40t'
  Cost:
  - mana 40
  Casting:
    InstantCastThreshold: 4t
    UsabilityCheck: START
    ReagentTiming: FINISH
    RefundReagentsOnCancel: true
    CancelOnMove: true
    MovementTolerance: 0.0
    CancelOnDamage: false
    CancelOnInteraction: true
    Interruptible: true
    DamagePushback:
      Enabled: false
      Amount: 0.5s
      Max: 1s
    ReevaluateTargets: false
    ConcurrentPolicy: REJECT
    StatModifiers:
    - MOVEMENT_SPEED -0.9 ADDITIVE_MULTIPLIER
  Skills:
  - projectile{...}
Option Description Default
CastTime Base cast time (e.g. 2s, 40t). 0 casts the spell instantly. 0
Casting.InstantCastThreshold If the cast time after CASTING_SPEED is at or below this many ticks, the spell casts instantly. Set to 0 to disable. 4t
Casting.UsabilityCheck When the spell's usability is checked (cooldown, conditions, etc.). One of START, FINISH, BOTH, NONE. START
Casting.ReagentTiming When Cost: reagents are consumed. START consumes immediately; FINISH consumes only if the cast completes. FINISH
Casting.RefundReagentsOnCancel If reagents were consumed at START, refund them when the cast is cancelled. true
Casting.CancelOnMove Whether the cast cancels when the player moves. true
Casting.MovementTolerance Distance the player can move from the start location before the cast cancels (in blocks). 0 cancels on any movement. 0.0
Casting.CancelOnDamage Whether the cast cancels when the player takes damage. false
Casting.CancelOnInteraction Whether the cast cancels when the player interacts with a block or entity. true
Casting.Interruptible Whether the interrupt mechanic can cancel this cast (without force=true). true
Casting.DamagePushback.Enabled If true, damage extends the remaining cast time instead of cancelling it (also requires CancelOnDamage: false). Fires ~onSpellCastPushback per pushback. false
Casting.DamagePushback.Amount Time added to the remaining cast time per damage event. A Mythic duration; a bare number is read as seconds. 0.5s
Casting.DamagePushback.Max Maximum total pushback time applied to a single cast. A Mythic duration; a bare number is read as seconds. 1s
Casting.ReevaluateTargets If true, the spell's targeter is re-evaluated at the moment the cast completes (instead of using targets captured at start). false
Casting.ConcurrentPolicy Behavior when the player tries to start a cast while another is active. REJECT blocks the new cast; CANCEL_PREVIOUS / REPLACE cancel the old cast. REJECT
Casting.StatModifiers List of temporary stat modifiers applied to the caster while the cast is active. []

StatModifiers accepts the standard line form (STAT_NAME VALUE [OPERATION]) or a section form:

Casting:
  StatModifiers:
  - MOVEMENT_SPEED -0.9 ADDITIVE_MULTIPLIER
  # or:
  - MOVEMENT_SPEED:
      Value: -0.9
      Operation: ADDITIVE_MULTIPLIER

Operations match Mythic stat modifier operations: ADDITIVE, ADDITIVE_MULTIPLIER, COMPOUND_MULTIPLIER, SETTER.

Server-Wide Defaults

Every option above can be set globally under Configuration.Casting.CastTime.Defaults in config-spells.yml. Per-spell Casting: blocks override the defaults.

Configuration:
  Casting:
    CastTime:
      Defaults:
        CastTime: 0
        InstantCastThreshold: 4t
        UsabilityCheck: START
        ReagentTiming: FINISH
        RefundReagentsOnCancel: true
        CancelOnMove: true
        MovementTolerance: 0.0
        CancelOnDamage: false
        CancelOnInteraction: true
        Interruptible: true
        DamagePushback:
          Enabled: false
          Amount: 0.5s
          Max: 1s
        ReevaluateTargets: false
        ConcurrentPolicy: REJECT
        StatModifiers: []

The Cast Bar

While a cast-time spell is being cast, a configurable cast bar is shown to the player. It is configured globally under Configuration.Casting.CastTime.Display:

Option Description Default
Type Where the bar renders. One of ACTION_MESSAGE, TITLE, SUBTITLE, MYTHICHUD, or NONE. (ITEM_BAR is not supported here.) ACTION_MESSAGE
UpdateIntervalTicks How often the bar re-renders. 2
Length Number of characters in the rendered bar. 20
Filled Character used for the completed portion.
Empty Character used for the remaining portion.
Format The full bar string. Supports MiniMessage tags and the placeholders below. <white>{spell}</white> <gray>[<green>{filled}</green><dark_gray>{empty}</dark_gray><gray>] <yellow>{remaining}s</yellow>
HUD.Layout The MythicHUD layout to enable while a cast is active (used when Type: MYTHICHUD). casting_casttime_layout

Format placeholders:

Placeholder Replaced With
{spell} The spell's display name
{spell_name} The spell's internal id
{cast_id} The unique id of this cast
{bar} The full rendered progress bar
{filled} The filled portion of the bar
{empty} The remaining portion of the bar
{progress} Cast progress as a 0.001.00 value
{percent} Cast progress as a 0100 integer percent
{remaining} Remaining time in seconds (e.g. 1.34)
{total} Total cast time in seconds
{remaining_ticks} Remaining time in ticks
{total_ticks} Total cast time in ticks

CASTING_SPEED Stat

CASTING_SPEED is a Mythic stat added by MythicRPG. It scales how fast a player (or Mythic mob) finishes a cast:

adjusted cast time = base cast time / CASTING_SPEED
Property Value
Key CASTING_SPEED
Base 1.0
Min 0.01
Max unbounded
Applies to Players and Mythic mobs

A CASTING_SPEED of 2.0 makes a 2s cast finish in 1s. A CASTING_SPEED of 0.5 makes a 2s cast take 4s. If the adjusted cast time falls at or below Casting.InstantCastThreshold, the spell casts instantly.

Lifecycle Triggers and Mechanics

Trigger When it fires
~onSpellCastStart The cast begins (after the START-time usability and reagent checks pass)
~onSpellCastComplete The cast finishes successfully and the spell's skills run
~onSpellCastCancel The cast is cancelled (movement, damage, interaction, profile unload, etc.)
~onSpellCastInterrupt The cast is cancelled by the interrupt mechanic
~onSpellCastPushback The cast had its remaining time extended via DamagePushback
Mechanic What it does
castSpell Casts a learned spell on the target as if they used it themselves
interrupt Cancels the target's active cast (or a Mythic cast aura on a mob)
modifyCastTime Adds, sets, or scales the target's remaining cast time
cancelCast Cancels the target's active cast unconditionally
Condition What it checks
isCastingSpell Whether the target is currently casting (optionally, a specific spell)
spellCastProgress The target's cast progress as a 01 value
isCastInterruptible Whether the target's active cast can be interrupted
Updated Aug 19, 2026