银行系统

银行系统

BankSystem是一个Minecraft模组,将货币引入游戏。玩家可以拥有一个银行账户,不仅可以存储金钱,还能存放物品。

经济

银行系统模组

关于

BankSystem 是一个 Minecraft 模组,为游戏添加了一套完整的银行系统。每个玩家都会获得一个可以存放金钱和物品的账户,支持共享账户、按用户权限、红石自动化、世界内余额显示以及交互式余额历史图表。玩家可以创立公司、雇佣员工、铸造实物股票物品、按计划支付工资并向股东发放股息。银行终端包含一个完整的合成网格,可以直接从你的账户中取用材料,并且单个槽位可以绑定第三方货币模组,使单一余额在接入该系统的所有模组之间共享。非常适合拥有活跃经济生态的多人服务器,也是 股市模组 的金融支柱。

版本 2.1.0 是一个测试版本。 它引入了重大的新系统 —— 带有员工的公司、实物股票、股票盖章机方块、定期付款和股息、公司统计仪表板,以及外部货币模组绑定 SPI(Numismatics 和 Lightman's Currency)和游戏内模组设置界面 —— 这些功能均未经生产环境全面测试。预计会有错误。欢迎在 GitHub 上提供反馈和错误报告。如无备份,请勿在生产服务器上使用。稳定版发布:v1.4.1。

功能特性

银行账户

  • 在同一个槽位列表中同时存放金钱和物品的个人及共享银行账户。
  • 按用户权限 —— 存款、取款和管理,可按账户和成员进行任意组合。
  • 共享账户始终保留至少一名管理员 —— 最后一个用户不会被意外移除。
  • 采用 21 种面额的货币系统 —— 分币(1¢、5¢、10¢、20¢、50¢)、$1 硬币、日常纸币($5、$10、$20、$50、$100、$200、$500、$1000)以及面向大型经济体的高价值层级($5K、$10K、$20K、$50K、$100K、$500K、$1M)。每种货币都有各自的图案,可在合成网格中互相转换,并且可以作为装饰性方块放置。
  • 可配置的允许物品列表可防止银行被用作无限存储。

银行终端

  • 在单个界面中存入和取出金钱与物品。
  • 终端内置完整的 3×3 合成网格,可从你的银行账户中获取缺失的材料,并自动存入合成产物。
  • JEI 集成 —— 任何配方的“+”按钮都会填充网格,点击银行列表中的任何物品会查找其配方并应用你的银行所能满足的最佳配方。
  • 物品过滤框可通过名称或标签缩小余额列表范围。
  • 终端会记住你在服务器上所有终端中最后选择的账户。
  • 交互式余额历史图表,支持缩放、平移、基于标签的搜索,以及跨会话保留的按物品序列筛选器。

ATM 与自动化

  • ATM 方块 —— 以特定纸币面额提取金钱。
  • 银行上传与银行下载方块 —— 基于红石的自动化,可在可配置的时间间隔内连接到漏斗、管道和模组物品管道。
  • 硬币变体存款会按照货币模组的实时面值路由到账户的货币槽位 —— 不会为每个变体创建子账户。

公司

  • 使用 /company create <name> <maxSupply> 创立公司 —— 公司将获得自己的共享银行账户,你为创始人。
  • 公司管理界面包含七个选项卡 —— 概览、员工、付款、股票、市场、统计和仅限创始人的危险区域。
  • 直接在员工选项卡中雇佣员工,并附带按用户的存款/取款/管理开关;创始人永远不会被锁定在自己的公司之外。
  • 定期工资和一次性付款 —— 选择目标、金额、货币(金钱或任何物品)和时间间隔。错过的运行会列出,并带有每行重试选项。
  • 股息 —— 在一次全有或全无的运行中向每位股东支付每股金额;如果公司无法支付,则直接拒绝该次运行。
  • 统计仪表板 —— 24 小时/7 天/30 天/90 天/全部时间的现金流图表、余额、净现金流、预计破产天数、错过的付款和实时股东表。
  • 从危险区域转移创始人角色或解散公司,两者都需要输入确认文本。

股票

  • 空白股票物品(纸 + 皮革)和股票盖章机方块,可将其转换为特定公司的盖章股票。
  • 股票盖章机将持续运行,直到你停止它、输入耗尽、输出填满或公司达到最大供应量 —— 带有可选的漏斗自动输入和自动输出,每个都在各自独立的权限开关后面。
  • 兑换(REDEEM)模式反向运行盖章机,销毁股票并重新释放供应量。
  • 股票视觉编辑器 —— 从卡片颜色加两层符号设计来设计你公司的股票卡片,并附带实时预览。内置 45 个像素艺术符号,服务器管理员可以放入自己的 PNG,客户端无需重新加载资源包即可获取。
  • 盖章股票会在各处渲染其完整的卡片图案 —— 物品栏、手持、地面和物品展示框中 —— 其工具提示显示公司、公司描述以及实时的 已发行 / 最大 供应量计数。
  • 不同公司的股票永远不会堆叠在一起;同一公司的股票则可以。
  • 如果安装了 StockMarket,市场选项卡将为你的公司股票打开一个真正的可交易市场。

银行显示屏

  • 可配置的世界内显示屏,为任何账户显示实时余额概览网格或余额历史折线图。
  • 相邻的显示屏会自动连接成多方块屏幕,并在放置时继承邻居的配置。
  • 图表颜色根据每个物品的纹理独立生成,为每个市场提供独特的外观。

货币模组绑定

  • 将任何银行槽位绑定到外部货币模组的账户。受支持的有:
    • Numismatics
    • Lightman's Currency。
  • 每笔存款、取款和 StockMarket 交易都会透明地通过绑定账户进行。
  • 硬币变体按模组的实时面值自动转换 —— Numismatics 的 spurs / bevels / sprockets / cogs / crowns / suns 以及 Lightman's 的 copper / iron / gold / emerald / diamond / netherite 硬币。
  • 锁定余额协议可在绑定和解绑期间保持待处理的 StockMarket 订单完好无损。
  • 解绑提供三向选择 —— 将资金保留在 BankSystem 中、保留在外部提供商处,或取消。
  • 公开的 ExternalCurrencyProvider SPI 允许第三方模组作者通过 Architectury 服务加载器添加更多提供商。

管理

  • 为服务器管理员(仅限主服务器)提供游戏内模组设置界面 —— 每个 settings.json 值均可编辑并附有验证,不再需要手动编辑文件。
  • 专门的 BankSystem 管理员权限标志控制设置、允许物品列表和从属服务器信任访问。
  • 交易分类账记录每笔存款、取款、转账、付款、股息和股票盖章 —— 这是统计仪表板和付款历史背后的数据。
  • 用于添加、移除、列出和重新加载服务器股票符号库的 /banksystem symbols 管理员命令。
  • ItemID 合并保护、单调短计数器以及世界格式版本控制可保护世界数据免受模组更新或降级导致的静默损坏。
  • 兼容 TerraFirmaCraft 的物品标识 —— 存入账户的食物不再腐烂,且腐烂物品无法被洗成新鲜物品。

多服务器

  • 面向服务器网络的主/从架构 —— 一台主服务器持有权威余额,从服务器转发请求。
  • 基于信任的访问控制 —— 不受信任的从服务器为只读,受信任的从服务器可以写入。管理员使用 /banksystem trust <slaveID> 切换信任。
  • 主服务器是唯一的 ItemID 铸造者,因此混合模组设置永远不会使物品标识失步。
  • 混合模组的从服务器会隐藏它们无法解析的物品 —— 终端或图表中不再出现损坏的“空气”行。

面向开发者的 API

  • 面向银行账户、银行和银行管理器的同步和异步接口,通过 BankSystemAPI 提供给其他模组。
  • ItemPriceProvider API —— 外部模组可为总财富跟踪提供市场价格。
  • ExternalCurrencyProvider SPI —— 第三方货币模组通过 Architectury 服务加载器接入。
  • 公司 API —— 付款管理器、股息支付器、股票视觉查询和股票图标渲染器,均通过 BankSystemAPI 公开。
  • 完整的事件和信号系统,供依赖模组使用 —— 用户、账户、ItemID 合并和多服务器生命周期事件,记录在 documentation/developer-guide/EventsAndSignals.md 中。

1.4.1 以来的新增内容

1.4.1 → 2.1.0 的窗口涵盖了整个 2.0.x 系列以及公司更新。按领域分组的高亮内容如下:

公司与股票(2.1.0 新增)

  • /company create、/company info 和 /company manage —— 公司拥有自己绑定的银行账户和永续创始人规则。
  • 包含概览、员工、付款、股票、市场、统计和危险区域选项卡的公司管理界面。
  • 以金钱或任何物品进行的定期和一次性付款,附带实时倒计时、失败原因、付款历史以及“补付错过的款项”重试弹窗。
  • 在一次原子化、全有或全无的运行中,以公司持有的任何货币向每位股东支付股息。
  • 空白股票和盖章股票物品,以及股票盖章机方块,支持连续盖章、兑换模式和可选的漏斗自动化。
  • 股票视觉编辑器 —— 卡片颜色、两个符号层、显示名称和描述,附带实时预览和内置 45 符号库,服务器操作员可以使用自己的 PNG 进行扩展。
  • 统计仪表板 —— 现金流图表、关键指标、偿付能力估算和股东排名。
  • 其背后是交易分类账 —— 每笔存款、取款、转账、付款、股息、盖章和股票交易都会被记录。
  • StockMarket 桥接 —— 从市场选项卡为你的公司股票开启、暂停和关闭真实市场。
  • 自动保存间隔现在基于秒(默认 5 秒),关闭了服务器崩溃时物品复制的窗口。使用自定义 SAVE_INTERVAL_MINUTES 的服务器必须重新将其设置为 SAVE_INTERVAL_SECONDS。

银行终端与界面

  • 支持缩放、平移、基于标签的搜索和按物品序列筛选器的余额历史图表。
  • 银行终端内置 3×3 合成网格,在 Fabric、NeoForge 和 Quilt 上提供完整的 JEI 配方转移支持。
  • 物品列表上方的过滤框;JEI 的物品面板现在位于终端旁边而不是重叠。
  • 银行终端会记住你在服务器上所有终端中最后选择的账户。
  • 账户选择器可以将你没有权限的账户显示为灰色,并附有精确的“缺少权限”工具提示。
  • 共享账户不再会因为移除最后一位管理用户而变成孤儿账户。

方块与显示屏

  • 银行显示屏方块,具有实时余额概览和历史图表模式,以及自动连接的多方块屏幕。
  • 金钱物品现在可以作为装饰性储备方块放置。
  • 为所有方块和物品刷新了像素艺术纹理。

货币模组支持

  • Numismatics 适配器 —— 将个人(PLAYER)和共享(BLAZE_BANKER)账户绑定到 BankSystem 槽位。
  • Lightman's Currency 适配器 —— 支持个人和团队账户,并为 LC 的多链 MoneyValue 模型提供主链路由。
  • 存款时的硬币变体自动转换 —— 货币模组链中的每种面额都会按其实时面值记入绑定的货币槽位。
  • 可从账户管理访问的绑定界面,包含提供商 → 账户 → 确认流程的完整选择器。
  • 新账户会自动为每个已注册货币提供商的基础货币预置一个槽位。
  • 公开的 ExternalCurrencyProvider SPI,通过 Architectury 服务加载器发现第三方适配器。

管理

  • 主服务器上的游戏内模组设置界面 —— 每个设置均可通过类型化输入进行编辑,附带服务器端验证和“⟳ 需要重启”标记。
  • BankSystem 管理员权限标志控制设置和管理访问权限,而不是仅仅依赖操作员等级。
  • 对从服务器的基于信任的写入 —— 不受信任的从服务器被锁定为只读;存款、取款和账户编辑在主服务器上会被拒绝。

多服务器加固

  • 主服务器现在是唯一的 ItemID 铸造者 —— 从服务器永远不会在本地分配短 ID,从而消除了混合模组设置中所有跨服务器 ID 分歧的类别。
  • 主服务器和从服务器之间共享的物品通过稳定的资源名称而非每次启动的注册表槽位传输 —— 首次连接的从服务器不再显示错误的物品名称。
  • 混合模组设置会隐藏本地服务器无法解析的物品 —— 不再有损坏的“空气”行。
  • 被拒绝的操作现在会告知受影响的玩家原因,而不是在主服务器的日志中静默失败。
  • 为依赖模组新增生命周期事件 —— 从服务器已连接、从服务器已断开以及受信任从服务器已更改。

世界数据安全

  • 世界格式版本控制 —— 较新的模组存档会在加载或修改任何内容之前被旧版本拒绝。
  • ItemID 合并保护 —— 会坍缩不同银行物品的标识集更改现在需要在启动时获得管理员确认,并附带完整的合并报告。
  • 单调 ItemID 计数器 —— 已丢弃的短 ID 在世界存续期间保持保留,因此下游数据永远不会被静默地重新绑定到无关物品。
  • 针对 pre-2.0.3 ItemID 加载顺序错误的损坏世界检测和一次性修复路径,附带完整的审计跟踪。
  • 加载时自动修复别名表;写入时保护别名插入,违规时记录带有堆栈跟踪注释的错误日志。

物品标识

  • 易失性物品组件 —— 数据包标签和配置列表会从银行物品标识中剥离组件,因此 TerraFirmaCraft 等模组可以重写食物创建日期而不会损坏银行条目。
  • 存款门控组件 —— 腐烂物品不能再被洗成新鲜物品;存款检查使用游戏自身的组件感知堆叠相等性。

API

  • 用于总财富跟踪的 ItemPriceProvider API 和 setPriceCurrencyItem。
  • User 对象上的按用户自定义数据字段,通过 ARRS 同步。
  • ExternalCurrencyProvider SPI 和 unregisterCurrencyProvider 原语。
  • 供依赖模组在合并后协调的 IBankSystemEvents.getItemIDsMergedEvent()。
  • 从服务器连接、断开和信任更改事件,以及位于 documentation/developer-guide/EventsAndSignals.md 的完整开发者指南。
  • 供依赖模组使用的 AND 权限账户选择器(hasAllPermissions + requireAllPermissions)。

完整的按版本更新日志:changelog/。

请访问仓库获取完整文档

银行系统模组仓库

依赖项


银行终端 —— 在一个界面中存款、取款和合成。


创建一个银行账户并存入你自己的账户。


账户管理 —— 每个账户的权限、用户和设置。


ATM 方块 —— 以特定纸币面额提取金钱。


银行显示屏 —— 世界中的实时余额概览或历史图表。


金钱储备 —— 将金钱物品作为装饰性方块放置。


银行上传/下载方块 —— 基于红石的自动化。


货币模组绑定 —— 在 BankSystem、StockMarket 和货币模组之间共享一个余额。


选择提供商,然后选择账户 —— 个人或共享。


绑定槽位与解绑流程 —— 对资金去向进行三向选择。


存款终端的硬币变体自动转换。


游戏内模组设置 —— 从银行管理窗口编辑每个服务器设置(仅限主服务器)。


公司 —— 在一个控制中心内完成概览、员工和付款。


股票盖章机 —— 将空白股票转换为公司股票。


股票视觉 —— 设计卡片,选择两个符号层,实时预览。


多服务器 —— 在连接的服务器网络中共享银行账户。