NsTut Economy 0.0.14 - NeoForge 26.1.2
Curse Maven Snippet
What's new
Economy 0.0.14
Team economy foundation
- Add typed economic principals:
PLAYER,TEAM,SERVER, andTAX. - Keep the legacy UUID account API source-compatible while adding typed account lookup, creation, deletion, and transfer methods.
- Migrate legacy saved balances deterministically to
PLAYER:<uuid>and persist non-player principals in a separate version-safe balance section. - Ensure player starting balance is applied only to newly created player accounts. Team accounts always start at zero.
- Allow a player account and team account to use the same raw UUID without colliding.
- Represent Economy's server and tax accounts with typed identities.
- Preserve typed identities in balance/transfer events and transaction counterparties, with legacy UUID constructors/accessors retained. Add same-UUID player/team event, veto, and history regression tests.
FTB Teams integration
- Add an optional, loader-neutral team-economy provider contract.
- Auto-register an FTB Teams provider when FTB Teams is installed without introducing a hard dependency.
- Treat the built-in FTB Teams provider as a fallback: addon-owned
TeamEconomyProviderregistrations take precedence, and FTB lifecycle events are ignored while a custom provider is active. - Persist stable
TeamEconomyProvider.providerId()provenance with Team-wallet lifecycle state. Authorization, order revalidation, reconciliation, deletion, equal-share settlement, and final storage custody now respect the owning provider; if that provider is absent, its wallet/storage/orders are preserved fail-closed instead of being reinterpreted by the FTB fallback. - Treat only FTB party teams as shared Economy wallets; FTB personal and server teams are intentionally excluded.
- Enable optional team economy by default with a simple
enabledserver toggle. Without FTB Teams, Economy continues normally with personal accounts. Legacy mode config migrates toenabled=trueunless explicitly overridden. - Add configurable minimum roles for viewing, depositing, market spending, direct Team payout, and administration, defaulting to MEMBER / MEMBER / OFFICER / OWNER / OWNER. Legacy
withdrawRolemigrates topayoutRole. - Re-resolve membership and rank for every authorization check so kicks, leaves, and demotions fail closed.
- Add permission-checked personal→team deposits and team→typed-principal spending/withdrawal helpers so authorization and balance mutation stay in one server-side operation.
- Keep Economy balances in Economy persistence rather than FTB Teams extension data.
- Show separate Personal and Team balances in the Market, with the FTB party display name, current role, configured spend threshold, and an explicit Market principal indicator.
- Hide team wallet UI when team economy is disabled/unavailable or current membership no longer permits viewing; show the wallet currently selected for new market actions.
Compatibility and tests
Add pure-Java regression coverage for typed account identity, starting-balance isolation, persistence, team-mode selection, fresh rank checks, and server-authoritative wallet snapshots.
Test reflection-adapter behavior with doubles for party filtering, rank mapping, leave/kick revalidation, and fail-closed behavior.
Verify public reflection signatures against real, pinned FTB Teams jars for all five supported loader/version targets in CI.
Include pinned FTB Teams and FTB Library in every loader development runtime, while keeping the production integration optional.
Add saved-data round-trip coverage for Minecraft 1.20.1, Minecraft 1.21.1, and NeoForge 26.1.2, including TEAM/SERVER/TAX principals.
Add team-aware market identities that persist economic principal, actor, and physical storage owner separately while preserving legacy UUID APIs.
Add the Personal/Team account switcher and Team Treasury UI. New Team orders use typed TEAM-owned Vaults/Tanks/providers for stock and delivery; legacy orders keep their recorded PLAYER storage.
Block same-team self-trading by principal, revalidate team authorization before execution/edit/cancel, and invalidate stale team orders after leave/kick/demotion.
Persist typed buyer/seller identities in trade history and typed debtor/creditor principals in compensation/recovery metadata.
Add idempotent Team deletion handling: freeze the final member snapshot, close/cancel/recover outstanding orders first, then split remaining Team cash equally across that snapshot with persisted per-recipient progress. Team-owned Vault/Tank custody moves to the last recorded owner only after cash settlement finishes.
Add
/economy teambalance/deposit/pay/use controls, deliberately omit ordinary Team -> Personal withdrawal, reject Team self-payment, and makeTEAM_PRIMARYdefaults track current membership unless explicitly overridden.Extend
IOrder/IOrderManageradditively with typed identity creation/execution paths for addons.Keep Team closure persistence and lifecycle binding controls internal to Economy instead of freezing them into the supported top-level addon API; add public
TransactionContextsfactories for addon-authored transfers.Keep server runtime binding internal so addons cannot replace Economy's live account/order services. Global event reset is internalized too, while the shipped
EconomyEvents.clearListeners()symbol remains as a deprecated 0.0.13 binary-compatibility shim until a documented breaking API release.Add Team-provider onboarding to Getting Started and Extending Economy, including
EconomyApi.teamEconomy(),TeamEconomyProvider, provider precedence, and closure-membership requirements.Verify FTB lifecycle reflection contracts against the pinned Teams and Library artifacts in addition to provider method signatures.
Add Containers ownership labels and server-authorized Personal/Team reassignment.
Treat Vault/Tank BOTH / INPUT / OUTPUT changes as storage administration (adminRole, OWNER by default) and surface permission/stale-target failures through in-game feedback instead of silent no-ops.
Refactor interactive Containers rows onto native OpenUI Cards, stacks, badges, buttons, flex sizing, and tooltips instead of manual click-region/layout arithmetic.
Persist explicit storage account kinds in orders/trades; same-UUID PLAYER and TEAM storage remain distinct after reload and network sync.
Close already-open Team storage menus when membership or rank is lost.
Preserve typed Team recovery attribution after cancelled creation and failed provider release.
Version the expanded Market wire format as
market_v3; use matching client/server builds.Make built-in Tank capacity server-configurable through
config/economy-storage.propertiesand split fluid-container handling into dedicated Input/Output slots so stackable containers can process cleanly.Add explicit Personal/Team principal forms for balance, pay, and admin give/take/set commands while preserving legacy Personal shorthands.
Replace container ownership/mode action verbs with clickable state chips and collapse Team Treasury explanatory rules behind an expandable Info control.
Make the Personal/Team Market principal a single server-authoritative view state across New Order, Orders, Portfolio, Containers, and Pay Player; principal-sensitive lists are filtered before sync and stale Team selection falls back to Personal when market-spend permission is lost.
Simplify container/order rows: Containers no longer repeat an owner text line, owner/I/O state chips place the adjustment glyph on the right, and My/Team Orders no longer repeat
/ Personalor/ Teamon every row.
This mod has no additional files

