How adamski201/iron-herblore works
Iron Herblore is a RuneLite plugin for ironmen that turns banked items into estimated Herblore XP, product quantities, and secondary-reagent balances. RuneLite item sources are adapted into quantities; recipe selections and settings determine production chains; calculators produce XP and reagent-demand results; the plugin UI presents editable rows, gear choices, and breakdowns. The graph preserves the README’s storage, precursor, gear, and configuration capabilities. Some implementation files were not sampled, so those subsystem links are omitted or marked unverified rather than inferred from names alone.
Main entry points: HerbloreApp.java Herblore App · RuneLiteAdapter.java RuneLite Adapter · HerblorePlugin.java Plugin Lifecycle · HerblorePanel.java Herblore Panel
Components 27
Plugin Runtime
- Plugin Lifecycle
src/main/java/adamski/HerblorePlugin.java - Plugin Config
src/main/java/adamski/infrastructure/HerbloreConfig.java - Herblore App
src/main/java/adamski/app/HerbloreApp.java - App Store
src/main/java/adamski/app/HerbloreStore.java - State Persistence
src/main/java/adamski/infrastructure/AppStatePersistence.java - App Result
src/main/java/adamski/app/HerbloreResult.java
Inputs & Recipes
- RuneLite Adapter
src/main/java/adamski/infrastructure/RuneLiteAdapter.java - Potion Storage
src/main/java/adamski/infrastructure/PotionStorageAdapter.java - Item Sources
src/main/java/adamski/domain/ItemSource.java - Item Quantities
src/main/java/adamski/domain/ItemQuantities.java - Recipe Catalog
src/main/java/adamski/data/Recipes.java - Potion Doses
src/main/java/adamski/data/PotionDoses.java - Secondary Precursors
src/main/java/adamski/data/SecondaryPrecursors.java
Domain Calculation
- Recipe Graph
src/main/java/adamski/domain/route/RecipeGraph.java - Recipe Selection
src/main/java/adamski/domain/route/RecipeSelection.java - Chain Resolver
src/main/java/adamski/domain/route/RecipeChainResolver.java - XP Calculator
src/main/java/adamski/domain/result/ChainResultCalculator.java - Chain Results
src/main/java/adamski/domain/result/ChainResult.java - Secondary Balance
src/main/java/adamski/domain/balance/SecondaryBalanceCalculator.java - Amulet Calculator
src/main/java/adamski/domain/result/AlchemistAmuletCalculator.java
UI & State
- Settings
src/main/java/adamski/app/HerbloreSettings.java - Herblore Panel
src/main/java/adamski/ui/HerblorePanel.java - Row View Factory
src/main/java/adamski/ui/RowViewFactory.java - Recipe Rows
src/main/java/adamski/ui/RowPanel.java - Amount Formatting
src/main/java/adamski/ui/Amounts.java
Other components
- Ironman
- RuneLite Sources
Connections 33
- Ironman → Herblore Panel: uses
- RuneLite Sources → RuneLite Adapter: provides items
- Plugin Lifecycle → Herblore App: creates
src/main/java/adamski/HerblorePlugin.java - Plugin Lifecycle → RuneLite Adapter: configures
src/main/java/adamski/HerblorePlugin.java - Plugin Lifecycle → Plugin Config: configures
src/main/java/adamski/HerblorePlugin.java - Plugin Lifecycle → State Persistence: configures
src/main/java/adamski/HerblorePlugin.java - Plugin Lifecycle → Herblore Panel: creates
src/main/java/adamski/HerblorePlugin.java - RuneLite Adapter → Potion Storage: uses
src/main/java/adamski/infrastructure/RuneLiteAdapter.java - RuneLite Adapter → Item Quantities: produces
src/main/java/adamski/infrastructure/RuneLiteAdapter.java - Potion Storage → Item Quantities: produces
src/main/java/adamski/infrastructure/PotionStorageAdapter.java - RuneLite Adapter → Potion Doses: uses
src/main/java/adamski/infrastructure/RuneLiteAdapter.java - RuneLite Adapter → Secondary Precursors: uses
src/main/java/adamski/infrastructure/RuneLiteAdapter.java - Herblore App → App Store: updates
src/main/java/adamski/app/HerbloreApp.java - Herblore App → Settings: reads
src/main/java/adamski/app/HerbloreApp.java - Herblore App → Recipe Graph: uses
src/main/java/adamski/app/HerbloreApp.java - Herblore App → Recipe Selection: reads
src/main/java/adamski/app/HerbloreApp.java - Herblore App → Chain Resolver: resolves chains
src/main/java/adamski/app/HerbloreApp.java - Herblore App → XP Calculator: calculates XP
src/main/java/adamski/app/HerbloreApp.java - Herblore App → Amulet Calculator: calculates gear
src/main/java/adamski/app/HerbloreApp.java - Herblore App → App Result: publishes
src/main/java/adamski/app/HerbloreApp.java - Recipe Graph → Recipe Catalog: indexes
src/main/java/adamski/domain/route/RecipeGraph.java - XP Calculator → Chain Results: builds
src/main/java/adamski/domain/result/ChainResultCalculator.java - Chain Results → Secondary Balance: supplies demand
src/main/java/adamski/domain/balance/SecondaryBalanceCalculator.java - Herblore Panel → Herblore App: sends choices
src/main/java/adamski/ui/HerblorePanel.java - Herblore Panel → Row View Factory: builds views
src/main/java/adamski/ui/HerblorePanel.java - Row View Factory → Chain Results: renders
src/main/java/adamski/ui/RowViewFactory.java - Row View Factory → Secondary Balance: renders
src/main/java/adamski/ui/RowViewFactory.java - Herblore Panel → Recipe Rows: displays
src/main/java/adamski/ui/HerblorePanel.java - Recipe Rows → Amount Formatting: formats
src/main/java/adamski/ui/RowPanel.java - Plugin Config → Settings: loads settings
- State Persistence → Recipe Selection: saves state
src/main/java/adamski/infrastructure/AppStatePersistence.java - Recipe Catalog → Recipe Graph: defines recipes
- Ironman → RuneLite Adapter: owns inventory