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.
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, orQuestState.NOT_STARTEDwhen the quest is null or unavailable.isStarted(quest)- true when the quest state is notNOT_STARTED.isComplete(quest)- true when the quest state isFINISHED.progress(quest)- immutableQuestProgress, or empty for null quests.all()- progress for every RuneLiteQuestenum 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 withfindQuest(...)and returns progress.satisfies(requirement)- evaluates a walkerQuestRequirementagainst the current quest state.setStateReaderForTesting(reader)andresetStateReaderForTesting()- 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)-DiaryTaskProgressfor 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.
Diary coverage is intentionally partial. Only explicitly mapped varbit/varplayer-backed tasks are exposed; unmapped tasks are absent instead of guessed.