Описание
# Bank System Mod
## About
BankSystem is a Minecraft mod that adds a full banking system to the game. Every player gets an account that can hold money and items, with support for shared accounts, per-user permissions, redstone automation, in-world balance displays, and an interactive balance-history chart. Players can found **companies**, hire workers, mint physical share items, pay wages on a schedule and hand out dividends to shareholders. The Bank Terminal includes a full crafting grid that can pull ingredients directly from your account, and individual slots can be bound to third-party currency mods so a single balance is shared across every system that touches it. Ideal for multiplayer servers with active economies, and the financial backbone for the [Stock Market Mod](https://www.curseforge.com/minecraft/mc-mods/stockmarket).
> **Version 2.1.0 is a TEST VERSION.** It ships major new systems — companies with workers, physical shares, the Share Stamper block, recurring payouts and dividends, a company statistics dashboard, plus the external-currency-mod binding SPI (Numismatics and Lightman's Currency) and the in-game Mod Settings screen — none of which have been fully tested in production. Expect bugs. Feedback and bug reports are welcome on [GitHub](https://github.com/KROIA/BankSystem/issues). Do not use on production servers without backups. Stable release: **v1.4.1**.
## Features
### Bank Accounts
* Personal and shared bank accounts holding both money and items in the same slot list.
* Per-user permissions — Deposit, Withdraw, and Manage, mixed and matched per account and per member.
* Shared accounts always keep at least one manager — the last user cannot be removed by accident.
* Money system with 21 denominations — cent coins (1¢, 5¢, 10¢, 20¢, 50¢), a $1 coin, everyday notes ($5, $10, $20, $50, $100, $200, $500, $1000) and a high-value tier for large economies ($5K, $10K, $20K, $50K, $100K, $500K, $1M). Each has its own artwork, converts into its neighbours in a crafting grid, and is placeable as a decorative block.
* Configurable allowed-items list prevents the bank from being used as infinite storage.
### Bank Terminal
* Deposit and withdraw money and items from a single screen.
* Full 3×3 crafting grid inside the terminal that can source missing ingredients from your bank account and auto-deposit the crafted output.
* JEI integration — the "+" button on any recipe fills the grid, and clicking any item in the bank list looks up its recipes and applies the best one your bank can satisfy.
* Item filter box narrows the balance list by name or tag.
* The terminal remembers your last-selected account across every terminal on the server.
* Interactive balance-history chart with zoom, pan, tag-based search, and per-item series filters that persist across sessions.
### ATM & Automation
* ATM block — withdraw money as specific note denominations.
* Bank Upload and Bank Download blocks — redstone-powered automation that connects to hoppers, pipes, and modded item conduits on a configurable interval.
* Coin-variant deposits are routed to the account's money slot at the currency mod's live face value — no per-variant sub-accounts are created.
### [Companies](https://github.com/KROIA/BankSystem/blob/main/documentation/user-guide/Companies.md)
* Found a company with `/company create ` — it gets its own shared bank account with you as founder.
* Company Management screen with seven tabs — Overview, Workers, Payouts, Shares, Market, Statistics and a founder-only Danger Zone.
* Hire workers straight from the Workers tab with per-user Deposit / Withdraw / Manage toggles; founders can never be locked out of their own company.
* Recurring wages and one-time payouts — pick a target, an amount, a currency (money *or* any item) and an interval. Missed runs are listed with a per-row retry.
* Dividends — pay every shareholder a per-share amount in one all-or-nothing run; the run is refused outright if the company can't cover it.
* Statistics dashboard — cashflow chart over 24 h / 7 d / 30 d / 90 d / all-time, balance, net cashflow, days-to-insolvency estimate, missed payouts, and a live shareholder table.
* Transfer the founder role or dissolve the company from the Danger Zone, both behind typed confirmation.
### Shares
* Blank Share item (paper + leather) and the Share Stamper block that turns blanks into Stamped Shares of a specific company.
* Share Stamper runs continuously until you stop it, the input runs out, the output fills, or the company hits its maximum supply — with optional hopper auto-input and auto-output, each behind its own permission-gated toggle.
* REDEEM mode runs the stamper backwards, burning shares and freeing supply again.
* Share Visual editor — design your company's share card from a card colour plus a two-layer symbol design, with a live preview. 45 bundled pixel-art symbols, and server operators can drop in their own PNGs, which reach clients without a resource-pack reload.
* Stamped shares render their full card art everywhere — inventory, hand, on the ground and in item frames — and their tooltip shows the company, its description and a live `issued / max` supply count.
* Shares of different companies never stack together; shares of the same company do.
* With StockMarket installed, the Market tab opens a real tradeable market for your company's shares.
### Bank Displays
* Configurable in-world display showing a live balance overview grid or a balance-history line chart for any account.
* Adjacent displays automatically link into a multi-block screen and inherit configuration from neighbors on placement.
* Chart colors are derived per item from the item's own texture for a distinct look per market.
### Currency Mod Bindings
* Bind any bank slot to an external currency mod's account. Supported are:
* Numismatics
* Lightman's Currency.
* Every deposit, withdrawal, and StockMarket trade routes through the bound account transparently.
* Coin variants auto-convert at the mod's live face value — Numismatics spurs / bevels / sprockets / cogs / crowns / suns and Lightman's copper / iron / gold / emerald / diamond / netherite coins.
* Locked-balance protocol keeps pending StockMarket orders intact across bind and unbind.
* Unbind offers a three-way choice — keep funds on BankSystem, keep them on the external provider, or cancel.
* Public `ExternalCurrencyProvider` SPI lets third-party mod authors add more providers via Architectury service loader.
### Administration
* In-game Mod Settings screen for server admins (master only) — every `settings.json` value editable with validation, no more manual file edits.
* Dedicated BankSystem-admin permission flag gates settings, allowed-item list, and slave-trust access.
* Transaction ledger records every deposit, withdrawal, transfer, payout, dividend and share stamp — the data behind the statistics dashboard and the payout history.
* `/banksystem symbols` admin commands to add, remove, list and reload the server's share-symbol library.
* ItemID merge guard, monotonic short counter, and world-format versioning protect world data against silent corruption from mod updates or downgrades.
* TerraFirmaCraft-compatible item identity — banked food no longer spoils inside the account, and spoiled items can't be laundered into fresh ones.
### Multi-Server
* Master/slave architecture for server networks — one master holds authoritative balances, slave servers forward requests.
* Trust-based access control — untrusted slaves are read-only, trusted slaves can write. Admins toggle trust with `/banksystem trust `.
* Master is the sole ItemID minter so mixed-mod setups can never desynchronise item identities.
* Mixed-mod slaves hide items they can't resolve — no more broken "air" rows in the terminal or chart.
### API for Developers
* Sync and async interfaces for bank accounts, banks, and the bank manager, exposed through `BankSystemAPI` for other mods.
* `ItemPriceProvider` API — external mods can supply market prices for total-wealth tracking.
* `ExternalCurrencyProvider` SPI — third-party currency mods plug in via Architectury service loader.
* Company APIs — payout manager, dividend payer, share-visual lookup and share-icon renderer, all exposed through `BankSystemAPI`.
* Full event and signal system for dependent mods — user, account, ItemID-merge, and multi-server lifecycle events, documented in `documentation/developer-guide/EventsAndSignals.md`.
## What's new since 1.4.1
The 1.4.1 → 2.1.0 window spans the entire 2.0.x line plus the company update. Highlights, grouped by area:
### Companies & Shares (new in 2.1.0)
* `/company create`, `/company info` and `/company manage` — companies with their own bound bank account and an immortal-founder rule.
* Company Management screen with Overview, Workers, Payouts, Shares, Market, Statistics and Danger Zone tabs.
* Recurring and one-time payouts in money or any item, with a live countdown, failure reasons, payout history and a Pay Missed retry popup.
* Dividends to every shareholder in one atomic, all-or-nothing run, in any currency the company holds.
* Blank Share and Stamped Share items, plus the Share Stamper block with continuous stamping, redeem mode and optional hopper automation.
* Share Visual editor — card colour, two symbol layers, display name and description, with a live preview and a 45-symbol bundled library that server operators can extend with their own PNGs.
* Statistics dashboard — cashflow chart, headline metrics, solvency estimate and a shareholder ranking.
* Transaction ledger behind it all — every deposit, withdrawal, transfer, payout, dividend, stamp and share trade is recorded.
* StockMarket bridge — open, pause and close a real market for your company's shares from the Market tab.
* Autosave interval is now seconds-based (default 5 s), closing an item-duplication window on server crashes. **Servers with a custom `SAVE_INTERVAL_MINUTES` must re-set it as `SAVE_INTERVAL_SECONDS`.**
### Bank Terminal & UI
* Balance-history chart with zoom, pan, tag-based search, and per-item series filters.
* 3×3 crafting grid inside the Bank Terminal with full JEI recipe-transfer support on Fabric, NeoForge, and Quilt.
* Filter box above the item list; JEI's item panel now sits beside the terminal instead of overlapping it.
* Bank Terminal remembers your last-selected account across every terminal on the server.
* Account picker can list accounts you lack rights on as grayed-out with an exact "missing rights" tooltip.
* Shared accounts can no longer be orphaned by removing the last managing user.
### Blocks & Displays
* Bank Display block with live balance-overview and history-chart modes, auto-linking multi-block screens.
* Money items are now placeable as decorative stockpile blocks.
* Refreshed pixel-art textures for every block and item.
### Currency Mod Support
* Numismatics adapter — bind personal (PLAYER) and shared (BLAZE\_BANKER) accounts to BankSystem slots.
* Lightman's Currency adapter — bind personal and team accounts with primary-chain routing for LC's multi-chain MoneyValue model.
* Coin-variant auto-conversion at deposit time — every denomination in the currency mod's chain credits the bound money slot at its live face value.
* Bindings screen reachable from account management, with a full picker for provider → account → confirmation flow.
* Fresh accounts auto-seed a slot for every registered currency provider's base currency.
* Public `ExternalCurrencyProvider` SPI with Architectury service-loader discovery for third-party adapters.
### Administration
* In-game Mod Settings screen on the master server — every setting editable with typed inputs, server-side validation, and "⟳ Restart required" markers.
* BankSystem-admin permission flag gates settings and management access instead of relying on operator level alone.
* Trust-based writes for slave servers — untrusted slaves are locked to reads; deposit, withdraw, and account edits are rejected at the master.
### Multi-Server Hardening
* Master is now the sole ItemID minter — slave servers never assign shorts locally, closing every cross-server ID divergence class for mixed-mod setups.
* Items shared between master and slave travel by stable resource name instead of per-startup registry slots — first-time slave connections no longer render wrong item names.
* Mixed-mod setups hide items the local server can't resolve — no broken "air" rows.
* Rejected operations now tell the affected player why instead of failing silently in the master's log.
* New lifecycle events for dependent mods — slave-connected, slave-disconnected, and trusted-slaves-changed.
### World-Data Safety
* World-format versioning — newer-mod saves are refused by older builds before anything is loaded or mutated.
* ItemID merge guard — identity-set changes that would collapse distinct bank items now require admin confirmation at startup with a full merge report.
* Monotonic ItemID counter — dropped shorts stay reserved for the lifetime of the world so downstream data can never be silently rebound to an unrelated item.
* Corrupted-world detection and one-shot repair path for the pre-2.0.3 ItemID load-order bug, with a full audit trail.
* Alias-table auto-heal at load; alias insertions guarded at write time with a stack-trace-annotated ERROR log on violation.
### Item Identity
* Volatile item components — datapack tag and config list strip components from bank item identity, so mods like TerraFirmaCraft can rewrite food creation dates without corrupting bank entries.
* Deposit-gated components — spoiled items can no longer be laundered into fresh ones; the deposit check uses the game's own component-aware stack equality.
### API
* `ItemPriceProvider` API and `setPriceCurrencyItem` for total-wealth tracking.
* Per-user custom data field on the `User` object with sync via ARRS.
* `ExternalCurrencyProvider` SPI and `unregisterCurrencyProvider` primitive.
* `IBankSystemEvents.getItemIDsMergedEvent()` for dependent mods to reconcile after a merge.
* Slave-connection, disconnect, and trust-change events, plus a full developer guide in `documentation/developer-guide/EventsAndSignals.md`.
* AND-permission account picker for dependent mods (`hasAllPermissions` + `requireAllPermissions`).
Full per-version changelog: [`changelog/`](https://github.com/KROIA/BankSystem/tree/mc_1.21.1/changelog).
## Please visit the repository for full documentation
**[Bank System Mod Repository](https://github.com/KROIA/BankSystem)**
## Dependencies
* [Architectury](https://www.curseforge.com/minecraft/mc-mods/architectury-api)
* [Fabric API](https://www.curseforge.com/minecraft/mc-mods/fabric-api) (Fabric only)
* [Mod Utilities](https://www.curseforge.com/minecraft/mc-mods/modutilities) (Quilt only — bundled inside the jar on Fabric and NeoForge)
* [Quilted Fabric API](https://www.curseforge.com/minecraft/mc-mods/qsl) (Quilt only)
***
## Bank Terminal — deposit, withdraw, and craft in one screen.
***
## Create a bank account and deposit into your own account.
***
## Account management — permissions, users, and settings per account.
***
## ATM Block — withdraw money as specific note denominations.
***
## Bank Displays — live balance overview or history chart, in-world.
***
## Money Stockpile — place money items as decorative blocks.
***
## Bank Upload / Download blocks — redstone-powered automation.
***
## Currency Mod Bindings — one balance across BankSystem, StockMarket, and the currency mod.
***
## Pick a provider, then pick an account — personal or shared.
***
## Bound slots and unbind flow — three-way choice on where funds stay.
***
## Coin-variant auto-conversion at the deposit terminal.
***
## In-game Mod Settings — edit every server setting from the bank management window (master only).
***
## Companies — overview, workers and payouts in one control centre.
***
## Share Stamper — turn blank shares into your company's shares.
***
## Share Visuals — design the card, pick two symbol layers, see it live.
***
## Multi-Server — share bank accounts across a network of connected servers.