Equipment actions
EquipmentActions provides result-aware wear and remove dispatches. All writes return InteractionResult and route through the pacer.
EquipmentInventorySlot (RuneLite API) defines the slots: HEAD, CAPE, AMULET, WEAPON, BODY, SHIELD, ARMS, LEGS, HAIR, GLOVES, BOOTS, JAW, RING, and AMMO. Granular reads use com.n3plugins.sdk.query.Equipment and EquipmentItemQuery.
isEquipped(...) before calling equip(...) to avoid redundant widget interactions.
Loadouts
com.n3plugins.sdk.loadouts defines the desired state for inventory and equipment. A loadout is a target, not an action: bank and production workflow builders reconcile live game state against it.
InventoryPlan asserts current state (“do I have this right now?”). InventoryLoadout and EquipmentLoadout declare target state (“what should I hold or wear after restocking?”).
amount(int) (default 1), optional(boolean), noted(boolean), stackable(boolean), and slot(EquipmentInventorySlot) (required for equipment loadouts).
InventoryLoadout.add throws IllegalArgumentException when items exceed the 28-slot capacity. Both loadout types expose isFulfilled(), getRequiredItems(), getExcessItems(), getForeignItemIds(), and setItemDepletionListener(...). Builders use getForeignItemIds(), getMissingItems(), and getUnequippedItems() to plan deposits, withdrawals, and equips.
ItemMetadataResolver derives stackability from client metadata. In tests without a client, set stackable(...) explicitly or inject a resolver with ItemMetadataResolver.setResolverForTesting(...).
BankActions.withdraw(loadout, maxActions) withdraws missing loadout items with a depletion listener and an action cap:
Tab actions
TabActions separates deliberate tab changes from check-only prerequisites.
Tab enum covers COMBAT, SKILLS, QUESTS, INVENTORY, EQUIPMENT, PRAYER, MAGIC, FRIENDS_CHAT, FRIENDS, LOGOUT, SETTINGS, EMOTES, and MUSIC. Each constant holds three packed widget IDs; a zero value means the slot is absent in that layout.
Requested inventory, equipment, prayer, magic, combat, and minigame actions never select a side tab for their caller. Open the tab explicitly first.