Skip to content

Repository files navigation

PackCheck

PackCheck is a local, informational RuneLite Plugin Hub plugin for named inventory and equipment checklists. It supports captured setups, researched built-in presets, required and optional rules, alternatives, 132 explicit dose families, 27 known charge/content families, base-pack inheritance, reusable add-ons, unexpected-item modes, an overlay, and debounced notifications.

PackCheck only compares your current setup with checklists you create. It does not click, withdraw, equip, use, activate or perform any gameplay action. Pack data remains local.

Status

This repository targets the standard external Plugin Hub build, Java 11, and RuneLite latest.release. Context rules are stored as opt-in suggestion metadata in the current release; automatic contextual activation is intentionally not enabled.

Screenshots

The screenshots below were captured from RuneLite 1.12.35 on macOS while logged out. See the logged-out visual QA record for the exercised states and verification boundary.

Preset checklist

PackCheck showing the MM2 Ice Barrage preset and its missing and optional requirements

Preset installation and reset

Choose a preset Review its source Reset customizations
Built-in preset chooser Preset source and safety review Reset preset confirmation

Customization

Edit the installed pack Edit a dose requirement
Editable installed preset Dose requirement editor

The clean logged-out state is also retained as visual evidence.

Privacy

  • Pack data is stored only under .runelite/packcheck/ in profile-keyed, versioned JSON files.
  • There is no server, telemetry, analytics, or network upload.
  • Account display names, inventory contents, and equipment contents are not transmitted.
  • Import and export happen only through text the user explicitly pastes or copies.

Compliance

PackCheck never injects input, invokes gameplay menu actions, withdraws or deposits items, changes equipment, activates prayers, casts spells, consumes items, moves the player, attacks, teleports, types chat, predicts combat, recommends prayer switches, or changes game click zones. It uses no reflection, native access, subprocess execution, dynamic code loading, runtime code generation, or Java serialization.

The overlay is non-interactive and informational. The hotkey only opens PackCheck or selects the locally configured default checklist.

User setup

  1. Build or open this project as described below.
  2. Start the development client with ./gradlew run.
  3. Enable PackCheck in RuneLite's plugin list.
  4. Open the PackCheck sidebar.
  5. Choose Capture setup, enter a pack name, review every generated rule, and save.
  6. Select a pack and optional add-ons. Resolve any displayed composition conflict explicitly.

Or choose Add preset, review its source and warning, and install one editable local copy. Editing an installed preset never changes the built-in definition. Reset preset restores the selected preset's current built-in name, rules, quantities, notes, and options after confirmation. Duplicating a preset creates an independent custom pack that is not linked to reset.

For a future Plugin Hub release, install it through RuneLite's Plugin Hub after review and publication.

Pack editing

Each requirement has a stable ID and supports required/optional, enabled/ignored, location, minimum/exact/maximum values, a measurement type, equipment slot, inventory slot, notes, and alternatives.

Alternative matcher syntax in the editor:

item:6570|Fire cape
item:8013,9780,13280|House teleport alternative|variations
family:prayer_potion|Prayer potion
family:super_restore|Super restore

Multiple lines are an “at least one of” group. Dose measurements sum every matching supported dose family. Item IDs are stable IDs; important requirements are never fuzzy-matched by name.

To override an inherited rule, choose Override inherited in the child editor. The stable requirement ID is retained. Uncheck Enabled to disable that inherited rule only in the child.

Built-in presets

Presets are offline starting points, not prescriptive best-in-slot loadouts. Their quantities reflect the linked guide's baseline or a clearly documented conservative choice. Review every installed rule for your stats, gear, spellbook, risk tolerance, route, budget, and intended trip length. PackCheck can see the rune pouch item but cannot inspect its contents.

Category Preset Research reference
Training MM2 maniacal monkeys — Ice Barrage Maniacal monkey strategies
Minigame Fight Caves — ranged/Jad Fight Cave strategies
Boss Vorkath — ranged Vorkath strategies
Boss Zulrah — ranged/magic hybrid Zulrah strategies
Boss Alchemical Hydra — melee Alchemical Hydra strategies
Boss Barrows Barrows strategies
Boss General Graardor — solo melee General Graardor strategies
Boss The Whisperer Whisperer strategies
Quest Monkey Madness II — Glough Monkey Madness II quick guide
Quest Song of the Elves — Fragment of Seren Fragment of Seren
Quest Sins of the Father — Vanstrom Klause Sins of the Father quick guide
Quest Dragon Slayer II — Vorkath Dragon Slayer II quick guide

The preset catalog is hardcoded and performs no runtime web request. Source URLs are shown before installation and stored in catalog metadata, not in account data.

Supported dose families

DoseService contains 132 explicit families. Item names are never parsed, and every item ID/dose value is reviewable in source. The expanded catalog covers:

  • Core combat: attack, strength, defence, ranging, magic, combat, super attack/strength/defence/combat, bastion, and battlemage.
  • Restoration and skilling: restore, prayer, super restore, energy, super energy, stamina, extended stamina, agility, fishing, super fishing, hunter, super hunter, magic essence, prayer regeneration, moonlight, extreme energy, and surge.
  • Poison, venom, and dragonfire: antipoison, super antipoison, Antidote+/++, anti-venom/+, extended anti-venom+, Relicym's balm, Sanfew serum, antifire, extended antifire, super antifire, and extended super antifire.
  • Brews and remedies: Saradomin, Zamorak, ancient, forgotten, and Armadyl brews; Menaphite remedy; Guthix rest/balance; Serum 207/208; goading; haemostatic dressing; and compost potion.
  • Divine boosts: divine super attack, strength, defence, combat, ranging, magic, bastion, and battlemage.
  • Minigame and raid supplies: Nightmare Zone absorption/overload/super ranging/super magic, Egniol, blighted super restore, all weak/standard/strong Chambers of Xeric Elder/Kodai/Twisted/Revitalisation/Xeric's aid/Prayer enhance/Overload tiers, and Tombs of Amascut nectar, Tears of Elidinis, liquid adrenaline, ambrosia, blessed crystal scarab, silk dressing, and smelling salts.
  • Mixes: the regular barbarian potion mixes, antifire and ancient variants, plus Sapphire glacialis, Snowy knight, Ruby harvest, Black warlock, Sunlight moth, and Moonlight moth mixes.

Family keys are stable snake-case identifiers such as extended_super_antifire, prayer_regeneration, divine_bastion, cox_overload_strong, and toa_smelling_salts. Use DoseService.supportedFamilies() or inspect DoseService for the complete authoritative list. Unsupported families should use item quantity and are labeled unsupported if configured as doses.

Supported known-charge families

ChargeService contains 27 families backed only by explicit item variants:

  • Teleports: ring of dueling, games necklace, slayer ring, burning amulet, amulet of glory (including trimmed variants), skills necklace, combat bracelet, digsite pendant, necklace of passage, ring of returning, ring of wealth (regular and imbued), enchanted lyre, and teleport crystal.
  • Other uses: abyssal bracelet, fungicide spray, watering can, waterskin, ogre bellows, and imp-in-a-box.
  • Visible container contents: baskets of apples, bananas, oranges, strawberries, and tomatoes; sacks of cabbages, onions, and potatoes.

These mappings follow the explicit-variant portion of RuneLite's own Item Charges data. A present item with no reliable item-ID mapping returns UNKNOWN_CHARGES; PackCheck never invents a charge count. Blowpipes, tridents, powered staves, recoil/forging jewellery, bracelets whose remaining uses are tracked from chat or account state, and degradable equipment without per-charge public item variants remain unsupported by known-charge rules.

Import and export

Export provides either versioned JSON or a packcheck: URL-safe encoded string. Import always shows a preview. Merge regenerates colliding pack IDs and remaps imported parent relationships; replace requires a separate explicit choice. The repository backs up data before schema migration and preserves malformed input as a timestamped .bak file before recovering with an empty store.

Development

Requirements: a Java 11-compatible JDK and internet access for Gradle's first dependency resolution.

./gradlew test
./gradlew build
./gradlew run

The run task launches RuneLite in developer mode. Jagex-account login for a development client follows RuneLite's official Using Jagex Accounts guide. Automated tests do not prove authenticated or in-game behavior.

On the current macOS workstation, the only installed runtime is JDK 23. RuneLite's macOS fullscreen adapter needs this development-only module export when launching with that JDK:

JAVA_TOOL_OPTIONS='--add-exports=java.desktop/com.apple.eawt=ALL-UNNAMED' ./gradlew run --no-daemon

This is a local launcher workaround, not plugin code or a Plugin Hub runtime requirement.

Known limitations

  • Automatic contextual suggestions are not active in 1.1. The local data model/editor stores user-created region, bank, Slayer, and location association metadata for a later opt-in implementation.
  • Charge support is intentionally limited to explicit item variants. Internal, varbit, chat-derived, or percentage durability is not guessed.
  • Dose support is broad but still explicit. Newly released dose variants require a source update before PackCheck will count them.
  • Built-in presets are researched starting points, not guarantees of safety or success. They cannot account for skill levels, gear quality, guide changes, personal mechanics, pouch contents, or supplies consumed before the snapshot.
  • Capture creates reviewable minimum rules and does not infer fixed inventory slots. Equipped items are fixed to their observed equipment slots.
  • Item-variation matching must be enabled per matcher in the editor; exact matching is the default.
  • Live, authenticated RuneLite behavior must be confirmed manually by the user.

License

BSD 2-Clause. See LICENSE.

About

A local, informational RuneLite plugin for named inventory and equipment checklists.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages