Skip to main content

Production Actions

ProductionActions interacts with the Make-X production interface (widget group 270) and the legacy Smithing interface (widget group 312).

Interface-state reads are available from ProductionActions for action guards; workflow callers should use the production state described in Production Workflow.

Action Methods

  • chooseOption(int index) - clicks the item button at the given column index
  • chooseOption(String itemName) - clicks first item whose name contains the given string (case-insensitive, tags stripped)
  • chooseOption(Predicate<String>) - clicks first item matching predicate; returns PRODUCTION_OPTION_NOT_FOUND on no match
  • selectQuantity(ProductionQuantity) - clicks the corresponding quantity button; returns PRODUCTION_NOT_OPEN if interface closed
  • selectMakeXQuantity(int qty) - two-step: clicks the X button then calls queueResumeCount(qty) to submit the custom amount
  • enterAmount(int amount) - queueResumeCount(amount) directly; use when the input box is already open

Example:

if (ProductionActions.isOpen()) {
ProductionActions.chooseOption("Iron bar");
ProductionActions.selectQuantity(ProductionQuantity.ALL);
}

For a custom quantity:

ProductionActions.chooseOption("Bronze dart");
ProductionActions.selectMakeXQuantity(500);

ProductionQuantity Enum

ConstantAmountChild index in group 270
ONE10
FIVE51
TEN102
ALLInteger.MAX_VALUE3
X-1 (custom)4

Behavior notes:

  • All write methods are paced - PACED is returned while the cooldown is active.
  • PRODUCTION_NOT_OPEN is returned by any action method when neither production interface is visible.
  • Smithing product buttons are scanned in stable child-ID order from group 312 child 9 through 35; quantity buttons use group 312 children 3, 4, 5, 7, and 6 for 1, 5, 10, All, and X.
  • selectMakeXQuantity bundles the button click and the count resume into a single tick call; the interface must accept the count packet in the same server tick.