Quest Actions & Gates
This page documents the committed source. Treat revision-sensitive RuneLite UI, packet, or in-game outcomes as pending live-client verification unless the page records direct evidence.
QuestActions provides quick, read-only utilities to check player quest eligibility and progress. Use it to gate automation loops or verify quest prerequisites before initiating a plugin task. The SDK also packages Quest Helper source for compilation and authoring analysis, while current live consumers reflect against the user's installed official Quest Helper.
QuestActions API
All methods are static, do not write to the client, and are safe to run off the client thread. They return a default NOT_STARTED state instead of throwing exceptions if the player is logged out or unavailable.
Core Methods
| Method | Returns | Description |
|---|---|---|
getState(Quest quest) | QuestState | Returns FINISHED, IN_PROGRESS, or NOT_STARTED. |
isStarted(Quest quest) | boolean | Returns true if the quest is IN_PROGRESS or FINISHED. |
isComplete(Quest quest) | boolean | Returns true if the quest is FINISHED. |
For advanced quest requirements and filtering (such as looking up quest progress by display name strings or evaluating complex nested requirements), use the Progress APIs. Refer to the Progress APIs documentation.
Developer Example
Gate a plugin's startup on a quest requirement:
import com.n3plugins.Api.actions.QuestActions;
import net.runelite.api.Quest;
public void onGameTick() {
// Gate execution until Dragon Slayer I is completed
if (!QuestActions.isComplete(Quest.DRAGON_SLAYER_I)) {
log.warn("Dragon Slayer I is required to run this plugin. Stopping.");
stopPlugin();
return;
}
// Perform quest-gated actions
if (QuestActions.isStarted(Quest.RECIPE_FOR_DISASTER)) {
log.debug("Recipe for Disaster in progress; proceeding with sub-stages.");
}
}
RuneLite populates its local quest cache upon login. During login transitions or loading screens, getState may temporarily return NOT_STARTED. Check readiness via PacketUtilsPlugin.isAccountBootstrapReady() before stopping or erroring out due to quest states.
Quest Helper Integration
Current shared consumers use QuestHelperSnapshotReader to reflect against the player's installed official Quest Helper plugin. It exposes a flattened snapshot of the official helper's current selected step. Questing Assistant and other snapshot consumers therefore depend on an installed and compatible official plugin for live Quest Helper state.