Skip to main content

Progress APIs

com.n3plugins.sdk.progress owns reference coverage for quest and achievement diary reads. Usage examples can stay in SDK Examples And Best Practices; this page is the API reference.

note

Progress APIs read eligibility/progress state. They do not perform quest steps, claim diary rewards, or click Quest Helper targets.

QuestProgressApi

QuestProgressApi wraps RuneLite Quest state reads and adapts walker QuestRequirement checks.

QuestState state = QuestProgressApi.state(Quest.COOKS_ASSISTANT);
boolean complete = QuestProgressApi.isComplete(Quest.COOKS_ASSISTANT);

Optional<Quest> quest = QuestProgressApi.findQuest("Cook's Assistant");
Optional<QuestProgress> progress = QuestProgressApi.progress("COOKS_ASSISTANT");

boolean allowed = QuestProgressApi.satisfies(requirement);

Methods:

  • state(quest) - current quest state, or QuestState.NOT_STARTED when the quest is null or unavailable.
  • isStarted(quest) - true when the quest state is not NOT_STARTED.
  • isComplete(quest) - true when the quest state is FINISHED.
  • progress(quest) - immutable QuestProgress, or empty for null quests.
  • all() - progress for every RuneLite Quest enum value.
  • started() - started or completed quest snapshots.
  • completed() - completed quest snapshots.
  • findQuest(name) - finds by enum name or player-facing quest name using normalized case/punctuation-insensitive matching.
  • progress(name) - resolves a name with findQuest(...) and returns progress.
  • satisfies(requirement) - evaluates a walker QuestRequirement against the current quest state.
  • setStateReaderForTesting(reader) and resetStateReaderForTesting() - test hooks for quest-state reads.

QuestProgress contains the Quest, display name, QuestState, started flag, and complete flag.

DiaryProgressApi

DiaryProgressApi exposes mapped achievement diary task progress backed by stable RuneLite varbits or varplayers.

Optional<DiaryProgress> lumbridgeEasy =
DiaryProgressApi.progress(DiaryRegion.LUMBRIDGE, DiaryTier.EASY);

List<DiaryProgress> varrock = DiaryProgressApi.forRegion(DiaryRegion.VARROCK);
boolean taskDone = DiaryProgressApi.isComplete(task);

Methods:

  • progress(region, tier) - progress for a mapped diary tier, or empty when no stable mapping exists.
  • all() - every mapped diary tier.
  • forRegion(region) - all mapped tiers in one diary region.
  • tasks(region, tier) - immutable mapped task list for a diary tier.
  • isComplete(task) - true when a mapped task's completion mask is set.
  • progress(task) - DiaryTaskProgress for one mapped task.
  • setReadersForTesting(varbitReader, varPlayerReader) - test hook for raw variable reads.
  • setTasksForTesting(tasks) - test hook for mapped task coverage.
  • resetForTesting() - restores live readers and default mappings.

DiaryProgress contains region, tier, mapped task progress, completed task count, total mapped task count, and an isComplete() flag. DiaryTask stores region, tier, display name, source kind (VARBIT or VARPLAYER), variable id, and completion mask. DiaryTaskProgress stores the mapped task, raw variable value, and complete flag.

Caution

Diary coverage is intentionally partial. Only explicitly mapped varbit/varplayer-backed tasks are exposed; unmapped tasks are absent instead of guessed.