feat: allow other plugins to start any helper via PluginMessage - #2756
Open
ajkatz wants to merge 3 commits into
Open
feat: allow other plugins to start any helper via PluginMessage#2756ajkatz wants to merge 3 commits into
ajkatz wants to merge 3 commits into
Conversation
ajkatz
marked this pull request as draft
July 2, 2026 07:01
pajlada
reviewed
Jul 2, 2026
ajkatz
force-pushed
the
plugin-message-start
branch
from
July 2, 2026 08:04
e7d8940 to
3d9c49a
Compare
ajkatz
force-pushed
the
plugin-message-start
branch
from
July 2, 2026 08:27
2807919 to
b87ca8d
Compare
pajlada
marked this pull request as ready for review
July 2, 2026 08:59
pajlada
marked this pull request as draft
July 2, 2026 08:59
Collaborator
|
The snapshot build failures are fine, they're an issue on our end not yours |
Author
thank you for the quick feedback! I'll wait until those are fixed |
ajkatz
marked this pull request as ready for review
July 3, 2026 01:53
Adds an inbound PluginMessage handler (namespace "questhelper", name "start", data key "quest") so other plugins can deep-link a quest helper by display name, mirroring the plugin message convention Quest Helper already uses toward Shortest Path. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Review feedback: the data map must carry the requesting plugin's display name under "source"; the start is announced as a game message so the player always sees which plugin triggered it. Messages without a source are ignored.
ajkatz
force-pushed
the
plugin-message-start
branch
from
July 21, 2026 21:44
b87ca8d to
23c81ad
Compare
Author
|
@pajlada rebased this and looks like it's no longer hitting that build issue now 🥳 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Quest Helper already participates in the RuneLite
PluginMessageecosystem outbound — it posts toshortestpath(DetailedQuestStep) andnotenoughrunes(QuestRequirementsPanel) — but has no inbound receiver, so other plugins can't deep-link into it. This adds the other direction using the same convention:questhelperstart{ "quest": "<helper display name>", "source": "<requesting plugin display name>" }— both requiredThe start is announced in the player's chat —
Quest Helper for Dragon Slayer I started, requested by My Plugin.— so it's always visible which plugin triggered it. Messages without asourceare ignored.Works for every helper type, not just quests: the handler delegates to the existing
QuestMenuHandler#startUpQuest(String)— the same generic path the quest list andonChatMessageauto-start use — so quests, miniquests, achievement diaries, skill helpers, generic helpers, and player-made quests all resolve throughQuestHelperQuest.getByName, and the Shield of Arrav / RFD special cases are inherited rather than duplicated. The call is wrapped inclientThread.invokeLatersincePluginMessagearrives on the poster's thread and the Shield of Arrav branch reads the local player.Malformed or foreign messages are ignored (namespace/name gate + payload type checks), so nothing changes for anyone who doesn't post the message.
Motivation: I maintain the Goal Planner hub plugin and want "resume in Quest Helper" on quest and diary goals — but this is deliberately generic so any plugin (or future Quest Helper features) can use it. Tested end-to-end: a dev client running both plugins, with Goal Planner posting the message and this handler starting quest and diary helpers.
./gradlew buildgreen.🤖 Generated with Claude Code