Skip to content

Feat/mushtree and digsite transport#1672

Merged
chsami merged 15 commits intochsami:developmentfrom
Chillibloke:feat/mushtree-and-digsite-transport
Feb 3, 2026
Merged

Feat/mushtree and digsite transport#1672
chsami merged 15 commits intochsami:developmentfrom
Chillibloke:feat/mushtree-and-digsite-transport

Conversation

@Chillibloke
Copy link
Contributor

  • New file: MagicMushtree.java - Handles all 4 Fossil Island mushtree destinations
  • Modified: MountedDigsite.java - Fixed widget-based teleport selection
  • Modified: Rs2Walker.java - Added mushtree handling and reachability bypass
  • Modified: transports.tsv - Added 12 mushtree routes + Brimhaven dungeon entries

chsami and others added 15 commits January 8, 2026 06:41
build(ci): update Gradle task for shaded JAR build
2.1.10 upgrade to latest runelite
fix(gradle): update microbot version to 2.1.11
Update breakhandler to allow to stop a plugin when taking a break
update latest runelite and collision map
Added: Grimstone dungeon ledge, brimhaven dungeon, waterbirth island dungeon
Added fairy ring DLP (grimstone dungeon)
Bank Fixes + Update latest runelite
Add dialogue handling for multi-destination teleport items when used
from inventory (not equipped). Previously, items like Slayer Ring would
interact successfully but fail to handle the destination selection
dialogue that appears afterward.

Supported items: Slayer ring, Games necklace, Skills necklace,
Ring of dueling, Ring of wealth, Amulet of glory, Combat bracelet,
Digsite pendant, Necklace of passage, Giantsoul amulet.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Allow Crafting Guild bank location to be accessible when the crafting cape
is in inventory, not just when equipped.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Magic Mushtree (Mycelium Transportation System) support for Fossil Island
- Fix POH mounted digsite pendant to use widget clicks like MountedXerics
- Add Brimhaven Dungeon transport entries with correct object IDs
- Skip tile reachability check for mushtree transports

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 2, 2026

Walkthrough

This pull request introduces Magic Mushtree transport support for Fossil Island, adding a new enum with four destination constants and methods for validating and handling mushtree-based transport interactions. It enhances the crafting guild bank location to recognize crafting capes in the inventory as valid access requirements. The Rs2Walker class is extended to detect Magic Mushtree objects, skip reachability checks for them, and delegate transport handling to the new enum. Additionally, dialogue-based destination selection is now supported for multi-destination teleport items, with a new helper method to identify items requiring dialogue-driven selection. A duplicate getWidget() method in MountedDigsite is refactored to a single location.

Possibly related PRs

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 40.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main additions: Magic Mushtree transport support and fixes to Digsite (MountedDigsite) teleportation.
Description check ✅ Passed The description is directly related to the changeset, listing the new MagicMushtree.java file, modifications to MountedDigsite.java and Rs2Walker.java, and updates to transports.tsv.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ast-grep (0.40.5)
runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/walker/Rs2Walker.java

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In
`@runelite-client/src/main/java/net/runelite/client/plugins/microbot/shortestpath/MagicMushtree.java`:
- Around line 76-78: The method in MagicMushtree currently ignores the boolean
result of sleepUntil and always returns true; capture the return value of
sleepUntil (the arrival success) when calling sleepUntil(() ->
Rs2Player.getWorldLocation().distanceTo(dest) < OFFSET, 10000) and return that
boolean instead of unconditionally returning true so the method accurately
reflects whether the player arrived.

In
`@runelite-client/src/main/java/net/runelite/client/plugins/microbot/util/bank/enums/BankLocation.java`:
- Around line 129-134: The equipped vs inventory cape check is inconsistent:
isWearingCraftingGuild (in BankLocation) only checks
Rs2Equipment.isWearing("crafting cape") but the inventory check includes
"crafting cape(t)"; update the isWearingCraftingGuild boolean to also accept the
trimmed variant by adding Rs2Equipment.isWearing("crafting cape(t)") (or
otherwise normalize/check both "crafting cape" and "crafting cape(t)") so both
equipped and inventory checks treat trimmed crafting capes the same.

Comment on lines +76 to +78
// Wait until we arrive at destination
sleepUntil(() -> Rs2Player.getWorldLocation().distanceTo(dest) < OFFSET, 10000);
return true;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Return value ignores whether arrival actually succeeded.

The sleepUntil on line 77 returns a boolean indicating if the player arrived at the destination, but the method returns true unconditionally on line 78. If the 10-second timeout expires without arriving, the method still reports success—inconsistent with the documented contract.

🔧 Proposed fix
         // Wait until we arrive at destination
-        sleepUntil(() -> Rs2Player.getWorldLocation().distanceTo(dest) < OFFSET, 10000);
-        return true;
+        return sleepUntil(() -> Rs2Player.getWorldLocation().distanceTo(dest) < OFFSET, 10000);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// Wait until we arrive at destination
sleepUntil(() -> Rs2Player.getWorldLocation().distanceTo(dest) < OFFSET, 10000);
return true;
// Wait until we arrive at destination
return sleepUntil(() -> Rs2Player.getWorldLocation().distanceTo(dest) < OFFSET, 10000);
🤖 Prompt for AI Agents
In
`@runelite-client/src/main/java/net/runelite/client/plugins/microbot/shortestpath/MagicMushtree.java`
around lines 76 - 78, The method in MagicMushtree currently ignores the boolean
result of sleepUntil and always returns true; capture the return value of
sleepUntil (the arrival success) when calling sleepUntil(() ->
Rs2Player.getWorldLocation().distanceTo(dest) < OFFSET, 10000) and return that
boolean instead of unconditionally returning true so the method accurately
reflects whether the player arrived.

@chsami chsami merged commit f24ac9e into chsami:development Feb 3, 2026
3 checks passed
@coderabbitai coderabbitai bot mentioned this pull request Feb 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants