Files
CraftBank/README.md
T
Purpur Build d5bc819684 feat: add transaction logs and custom bank inputs
Adds configurable fees, transaction history, chat amount input, and v1.1.0 release documentation.
2026-06-30 10:20:52 +08:00

4.9 KiB
Raw Blame History

🏦 CraftBank(工艺银行)

适用于 Folia 1.21.8 的全能经济与银行核心插件 —— 旨在完全替代 XConomy 等传统经济插件。

Folia Java Vault

CraftBank 内置完善的「个人钱包 / 现金」系统,并引入深度模拟的银行系统:实体银行卡、可交易支票、活期储蓄与严格的定期存款(带利息)。全程遵循 Folia 多核服务端的线程模型,使用 AsyncScheduler / GlobalRegionScheduler / RegionScheduler 调度,绝不使用已弃用的 Bukkit.getScheduler()


核心功能

模块 说明
💵 核心经济 每位玩家独立现金账户;实现 Vault Economy 接口并以 Highest 优先级注册,接管全服扣款
💳 银行卡 实体物品,PDC 绑定 UUID + 序列号;右键指定方块开柜;丢失可挂失补办(旧卡作废)
📜 支票 /cheque <金额> 具现化为可流通实体物品;右键兑现入钱包;PDC 防伪 + 防刷
💰 活期储蓄 存取自由,按真实时间戳逐日复利结算(含离线补偿,带封顶)
定期存款 7/15/30 天可选,到期前任何情况不可提前支取;到期本息自动入活期
📒 交易流水 记录转账、存取、支票、定期、利息与管理操作;管理员可分页查询
🧾 手续费 转账与活期取现可按配置收取固定 / 百分比手续费
💬 自定义金额输入 银行 GUI 左键进入聊天输入自定义金额,右键保留「全部」快捷操作

🛠️ 依赖

MySQL 驱动默认未内置;若使用 MySQL,请将驱动放入服务端 libraries,或在 build.gradle.kts 中取消相应依赖注释后自行打包。


💻 指令与权限

基础经济(所有人)

指令 说明
/money [玩家] 查看现金余额(查他人需 craftbank.money.others
/pay <玩家> <金额> 现金转账
/baltop [页码] 现金排行榜

银行玩家(craftbank.use

指令 说明
/bank open 打开银行 GUI(可配置是否允许)
/bank card apply 申请新银行卡
/bank card revoke 挂失并作废当前银行卡
/bank deposit <金额> 现金 → 活期
/bank withdraw <金额> 活期 → 现金
/cheque <金额> 开具支票

管理员(craftbank.admin

指令 说明
/bankadmin reload 重载配置
/bankadmin give/take/set <玩家> <金额> 增加 / 扣除 / 设置现金
/bankadmin setinterest <savings|term_7d|term_15d|term_30d> <利率> 动态修改利率
/bankadmin log <玩家> [页码] 分页查看玩家交易流水

🔌 PlaceholderAPI 变量

变量 含义
%craftbank_cash% 现金(纯数字)
%craftbank_cash_formatted% 现金(含货币符号)
%craftbank_bank_saving% 活期(纯数字)
%craftbank_bank_saving_formatted% 活期(含货币符号)
%craftbank_total% 现金 + 活期总额(纯数字)
%craftbank_total_formatted% 现金 + 活期总额(含货币符号)
%craftbank_has_card% 是否持有有效银行卡
%craftbank_savings_rate% 当前活期日利率百分比

⚙️ 配置文件

详见生成的 config.yml,涵盖:数据库(SQLite/MySQL)、货币设置、利率(活期 / 各定期)、银行交互方块、转账 / 取现手续费、交易流水开关、银行卡与支票的自定义材质 / CustomModelData / 名称 / Lore、以及全部消息文案。


🔨 从源码构建

# 需要 JDK 21+(已用 JDK 25 验证通过)
./gradlew shadowJar

产物位于 build/libs/CraftBank-<version>.jar,已内置 SQLite 与 HikariCP 驱动,可直接丢进 plugins/ 目录。


🤖 Folia 线程安全设计

  • 后台任务(数据库、/baltop 排序、利息扫描)走 AsyncScheduler
  • 玩家相关操作(扣物品、开 GUI、发消息)从异步切回时调度到 player.getScheduler()(实体区域线程)。
  • 经济数据缓存使用 ConcurrentHashMap,单账户余额变更用 synchronized 保证原子,抵御来自其它插件异步线程(经 Vault)的并发刷钱。
  • 支票兑现在玩家区域线程独占操作物品栏;定期领取用数据库 UPDATE ... WHERE claimed = 0 原子置位防重复发放。

📄 许可证

LICENSE