How 6078hitheday/bc-stock-mod works
BCStock is a client-side Fabric mod that brings Palaren stock-market data into Minecraft HUDs and screens, supports manual chat-command trades, and maintains local history. Its main workflow refreshes public market data and gathers personal data from game chat replies or read-only container probing, normalizes it into snapshots, and displays it for monitoring and decisions. Manual trades require quantity selection and explicit confirmation; configured automatic modes are a separate path. The README documents the major capabilities; only selected source excerpts were available, so uncertain internal wiring is omitted.
Main entry points: CommandGateway.java Command gateway · SnapshotStore.java Market snapshot · BcStockClient.java Client bootstrap · MarketRefreshCoordinator.java Market refresh
Components 24
Client runtime
- Client bootstrap
src/main/java/cn/myflycat/bcstock/BcStockClient.java - Runtime settings
src/main/java/cn/myflycat/bcstock/config/ConfigRuntime.java - Network hooks
src/main/java/cn/myflycat/bcstock/mixin/ClientPlayNetworkHandlerMixin.java
Market data
- Market refresh
src/main/java/cn/myflycat/bcstock/data/MarketRefreshCoordinator.java - API client
src/main/java/cn/myflycat/bcstock/data/ApiClient.java - Command gateway
src/main/java/cn/myflycat/bcstock/data/CommandGateway.java - Container probe
src/main/java/cn/myflycat/bcstock/probe/InvestProbe.java - Market snapshot
src/main/java/cn/myflycat/bcstock/data/SnapshotStore.java - Market caches
src/main/java/cn/myflycat/bcstock/data/MarketCache.java
Player experience
- Market board
src/main/java/cn/myflycat/bcstock/ui/StockBoardScreen.java - Company detail
src/main/java/cn/myflycat/bcstock/ui/DetailScreen.java - Quote HUD
src/main/java/cn/myflycat/bcstock/ui/StockHud.java - Local alerts
src/main/java/cn/myflycat/bcstock/ui/LocalAlertBridge.java - Quantity dialog
src/main/java/cn/myflycat/bcstock/ui/QtyDialogScreen.java - Trade confirmation
src/main/java/cn/myflycat/bcstock/ui/TradeConfirmScreen.java
Decision and trading
- Decision engine
src/main/java/cn/myflycat/bcstock/decision/DecisionEngine.java - Decision presets
src/main/java/cn/myflycat/bcstock/decision/DecisionPreset.java - Auto-trade planner
src/main/java/cn/myflycat/bcstock/decision/AutoTradePlanner.java - Auto-trade executor
src/main/java/cn/myflycat/bcstock/data/AutoTradeExecutor.java
Local history
- Trade ledger
src/main/java/cn/myflycat/bcstock/data/LedgerStore.java - Snapshot journal
src/main/java/cn/myflycat/bcstock/data/SnapshotJournal.java
Other components
- Player
- Bilicraft server
- Market HTTP API
Connections 34
- Player → Market board: opens with K
- Player → Quote HUD: toggles with H
- Client bootstrap → Market refresh: starts polling
- Market refresh → API client: requests quotes
- API client → Market HTTP API: reads market data
- Market refresh → Market snapshot: updates snapshot
- Client bootstrap → Command gateway: wires command sender
- Command gateway → Bilicraft server: sends chat commands
- Bilicraft server → Network hooks: sends chat and slots
- Network hooks → Command gateway: forwards chat replies
- Command gateway → Market snapshot: applies parsed replies
- Network hooks → Container probe: signals slot updates
- Container probe → Bilicraft server: reads container data
- Market board → Market snapshot: reads snapshot
- Company detail → Market snapshot: reads company data
- Quote HUD → Market snapshot: reads snapshot
- Local alerts → Market snapshot: checks local data
- Market board → Company detail: opens details
- Market board → Quantity dialog: starts manual trade
- Quantity dialog → Trade confirmation: submits draft
- Trade confirmation → Command gateway: sends on confirmation
- Decision engine → Decision presets: uses thresholds
- Company detail → Decision engine: shows advice
- Auto-trade planner → Decision engine: evaluates advice
- Auto-trade executor → Auto-trade planner: requests trade plan
- Auto-trade executor → Command gateway: dispatches trade
- Client bootstrap → Trade ledger: initializes per player
- Command gateway → Trade ledger: records fills
- Client bootstrap → Snapshot journal: restores snapshots
- Market snapshot → Snapshot journal: persists snapshots
- Market refresh → Market caches: uses market cache
- Client bootstrap → Runtime settings: loads settings
- Runtime settings → Market refresh: sets API options
- Runtime settings → Auto-trade planner: sets trade limits