Skip to content

Performance and Throttling

Previous: Diagnostics and Troubleshooting · Next: FAQ

QS itself is lightweight, but high-frequency passives and debug output can drag performance if misused. This page is your pre-launch checklist.


⚡ High-frequency passives must be throttled

Passives like ON_DAMAGED / ON_JUMP / ON_BLOCK_BREAK / ON_SNEAK / TICK can fire several times per second. You must give them a cooldown_ms (at the passive-entry level) or a skill cooldown, or they'll fire in a burst and flood both the server and the chat box.

yaml
passive_triggers:
  - type: ON_BLOCK_BREAK
    id: miner_buff
    cooldown_ms: 500     # required, otherwise it fires on every block mined
TriggerRiskRecommendation
ON_DAMAGEDBurst fire on continuous hitsThrottle with cooldown_ms
ON_JUMP / ON_SNEAKPlayer spamThrottle with cooldown_ms
ON_BLOCK_BREAKFlood from rapid miningThrottle with cooldown_ms
TICKRuns every intervalSee the tick config below
ON_LOW_HEALTHLowEdge-triggered, fires only on threshold crossing, naturally non-flooding

⏲️ TICK passive throttling

The period of TICK passives is controlled by config:

ConfigDefaultDescription
passive.tick_interval_ticks20 (= 1 second)Check interval for TICK passives

When there is no TICK passive at all on the server, the corresponding polling task idles and adds no overhead — feel free to keep the default.


🖥️ Actionbar refresh

ConfigDefaultDescription
actionbar.refresh_ticks10Actionbar refresh interval
actionbar.hide_when_empty_slotDon't refresh the actionbar when the slot is empty, avoiding flooding the screen with blanks

Raising refresh_ticks lowers overhead but updates a bit more slowly; balance as you see fit.


💾 Persistence and in-memory state

StateStorageOn relog
Binary cooldownPersistedRetained — prevents refreshing cooldown by relogging
ChargesIn-memoryReset on relog
Toggle switchIn-memoryReset on relog

Charges / toggle are in-memory; a relogging player returns to the initial state. Persisting cooldowns is deliberate, to prevent the "relog clears CD" exploit.


🌉 Bridge and startup

  • The Mythic bridge's sync runs deferred, avoiding lag from every plugin racing to load at startup;
  • The AUTO mode fallback applies only to missing skills — an existing same-named MM skill is never overwritten and adds no extra overhead.

🐞 Debug overhead

  • debug: true prints a per-stage trace; under high-frequency triggers the flooding is severe — for troubleshooting only, off in production.
  • Once you've finished troubleshooting a skill, remember to turn its debug off — don't enable it server-wide.

See Diagnostics and Troubleshooting §7.


✅ Pre-launch checklist

  • [ ] Every high-frequency passive has a cooldown_ms or skill cooldown
  • [ ] No leftover debug: true
  • [ ] tick_interval_ticks / actionbar.refresh_ticks are sensible values
  • [ ] Players can't refresh cooldowns by relogging (cooldowns persist — correct by default)