Power Skiller
PowerSkillerPlugin is a native n3 port of PiggyPlugins PowerSkiller under
com.n3plugins.powerskiller (config group n3powerskiller, disabled by
default).
Architecture
PowerSkillerPluginowns RuneLite lifecycle, hotkey toggle, overlay, bootstrap gate, Break Handler registration, and input-lock request/release.PowerSkillerControlleris the pure per-tick state machine.PowerSkillerRuntimekeeps RuneLite and SDK access out of the controller.RuneLitePowerSkillerRuntimeadapts toInteractionApi.actions.*andsdk.query.PowerSkillerItemPolicyhandles tag-stripped, case-insensitive substring matching for required tools and keep-list items.
State priority
- Stopped by hotkey ->
STOPPED - Account bootstrap or login unavailable ->
WAITING - Required tools missing ->
MISSING_TOOLS - Moving or animating ->
ANIMATING - Inventory full + banking enabled + bank closed →
OPEN_BANK - Banking enabled + bank open + depositables present →
DEPOSIT_ITEMS - Banking enabled + bank open + no more depositables →
CLOSE_BANK - Banking disabled + droppable items present →
DROP_ITEMS - Otherwise interact with configured object or NPC →
FIND_TARGET - Missing target or hard action failure →
TIMEOUT
Each active state issues at most one interaction per game tick.
Behavior
searchNpcswitches target lookup between NPCs and tile objects.objectToInteractis the configured object or NPC name.expectedActionis passed directly to the action class.toolsToUseanditemsToKeepare comma-separated substring policies after HTML tag stripping and lower-casing.shouldBankopens the nearest bank withBankActions.openNearest()and deposits each unprotected bank-inventory widget withDeposit-Allone per tick until none remain, then closes the bank withBankActions.close()before resuming skilling.- When banking is disabled, drops one eligible inventory item per tick with
InventoryActions.use(widget, "Drop")until no droppable items remain, then resumes skilling. useForestryTreeNotClosestrestricts object targeting to known tree names and ranks nearest supported trees. True multi-drop batching remains pending live RuneLite validation.- While the hotkey-controlled loop is running, the plugin is active in Break Handler. A due or active break releases the input lock and skips the action tick before the controller can interact with objects, NPCs, inventory, or bank.
Validation
.\gradlew.bat test --tests com.n3plugins.powerskiller.* --console plain
.\gradlew.bat test --tests com.n3plugins.NativeManifestTest --tests com.n3plugins.PacketUtils.InputLockWiringTest --console plain
.\gradlew.bat compileJava --console plain
Live validation pending
Hotkey behavior, target interaction timing, bank-inventory Deposit-All, one-item
drop cadence, and forestry target ranking still require in-client RuneLite
observation.