Skip to main content

Inventory Setups

[n3] Inventory Setups provides setup management within the n3 ecosystem. It features a setup editor, sections and ordering, favorites, compact/icon/standard views, notes, hotkeys, bank filtering, Bank Tags layouts, import/export, fuzzy variations, stack management, spellbook and pouch metadata, and inventory/equipment highlighting.

The plugin uses the existing inventorysetups config group and V3 per-setup storage keys. It migrates or loads existing data without manual import. Data stays profile-scoped through RuneLite's configuration system.

Caution

Disable the official Inventory Setups plugin before enabling the n3 variant. Startup rejects the official plugin when enabled so both implementations avoid writing the same configuration group concurrently.

Setup Management

Use the sidebar to create, update, rename, copy, delete, reorder, import, and export setups. The editor supports sections, layout controls, bank filtering, fuzzy items, quantity management, inventory gaps, equipment, rune and bolt pouches, quiver contents, spellbook, attack option, notes, and additional filtered items. Item metadata relies on the modern IdMapRegistry.

Bank layouts require RuneLite's Bank Tags plugin. When users disable Bank Tags, setup management continues working but layout features drop offline.

Apply and Cancel

Select a setup and click Apply to start a one-shot client-thread workflow. The status line shows the current phase and progress. Cancel stops the Apply controller and any shared-walker route captured by that controller. PacketUtilsPlugin securely owns walker ticking.

Apply executes these state steps:

  1. Freeze a copy of the selected setup and open the nearest reachable bank through the shared walker.
  2. Count banked, carried, and equipped items together. Resolve exact IDs and fuzzy variations, preferring the saved ID. If the target lacks complete items, stop before depositing anything.
  3. Deposit the current inventory and equipment. Withdraw and equip the saved equipment first, then withdraw the saved inventory quantities.
  4. Restore all 28 saved inventory positions, including empty gaps, using paced slot swaps. It routes equal stackable items through an empty slot so a drag skips merging the stacks. It retries an unchanged drag after four ticks before reporting an eight-tick timeout.
  5. Finish only after slot-by-slot inventory and equipment validation. The final status explicitly lists any saved spellbook, rune-pouch, bolt-pouch, quiver, or attack-option mismatch that Apply cannot automate.

PACED and movement-in-progress results wait for another tick. Logout, unreachable bank, missing supplies, unhealthy packet mappings, failed interactions, cancellation, or an ineffective slot move terminate the workflow with a visible status.

The Apply workflow operates as a focused process with active-only Break Handlers.

info

Apply automates inventory, worn equipment, intelligent pouch filling (rune pouch, bolt pouch, quiver), and spellbook swapping (when the player wears a Magic cape). Attack option requires manual action, but Apply checks it before reconciliation and again at completion and lists mismatches in the status line. Notes and additional-item metadata remain saved, displayed, and filtered without representing live state.

Slot Move Operations

Exact slot restoration calls InventoryActions.moveSlot(fromSlot, toSlot). The action resolves 0-based dynamic inventory children, queries ActionPacer, and sends the mapped widget drag packet. It returns an InteractionResult. It handles unavailable widgets, invalid slots, an empty source, pacing, or packet-mapping failures without asserting convergence early.

Threading and Bank Tags

Setup and section lists use snapshot-on-write collections because the RuneLite client thread manages persistence and Apply work while Swing's EDT renders and initiates panel operations. Name and section membership indexes use concurrent maps, preventing rendering iterations from triggering structural modification failures.

Bank Tags configuration changes trigger a deferred bank-search and overview refresh. This synchronizes Inventory Setups layout rendering when users edit or remove a layout through RuneLite's Bank Tags plugin.

Validation

Automated tests cover the controller phases, preflight-before-deposit behavior, exact gap swaps, stack-merge avoidance, delayed-drag retry, metadata warnings, pacing, cancellation, logout, persistence conversion, and navigation branding.