Files
CraftBank/AGENTS.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

2.7 KiB
Raw Permalink Blame History

CraftBank — 项目约定

适用于 Folia 1.21.8 的经济与银行核心插件(Java 21+,Gradle 构建)。

仓库

  • 远端:私有仓库 dmz7p4xmqh-coder/CraftBank(默认分支 main)。
  • ghgit 已安装并登录,可直接用于推送与发行。

每次改动后的固定流程

完成任何代码改动后,主动执行以下步骤(无需等用户再次要求):

  1. 构建验证:运行 ./gradlew shadowJar,确认编译通过并产出 build/libs/CraftBank-<version>.jar
  2. 更新 README:若改动影响功能、指令、权限、配置项或 PlaceholderAPI 变量,同步更新 README.md
  3. 提交并推送main
  4. 发布 Release:用 gh release create 创建新发行版,附上编译好的 jar。

版本号约定(语义化版本)

  • 新功能 → 递增次版本号:v1.x.0
  • Bug 修复 → 递增修订号:v1.0.x
  • 不兼容的重大改动 → 递增主版本号:v2.0.0

发行版 tag 与 build.gradle.kts 里的 versionplugin.yml 的版本需保持一致(plugin.yml 通过 ${version} 占位符在构建时自动填充,改 build.gradle.ktsversion 即可)。

构建注意事项

  • 用当前 JDK(已验证 JDK 25)编译,通过 --release 21 产出 Java 21 字节码。
  • 不要在 shadowJar 中启用包重定位(relocate):当前 shadow 8.3.5 的字节码重映射器在新 JDK 产出的 invokedynamic class 上会崩溃。如确需重定位,改用 JDK 21 编译或升级 shadow 插件。
  • MySQL 驱动默认不打包;需要时在 build.gradle.kts 取消相应依赖注释。
  • 不要提交 build/.gradle/.Codex/(已在 .gitignore 中排除)。

架构速览

  • 主类 CraftBank:初始化各子系统、注册 Vault(Highest)、封装 Folia 调度(runAsync / runForPlayer / runGlobal)。
  • economy/EconomyManagerConcurrentHashMap 缓存 + synchronized 账户)、VaultEconomyProviderVault 接口实现)。
  • bank/BankManager:活期复利结算、定期存款创建 / 锁定 / 到期结算。
  • database/DatabaseManagerSQLite/MySQL,定期领取用 UPDATE ... WHERE claimed = 0 原子置位防重复。
  • items/:银行卡与支票的 PDC 创建与防伪校验。
  • commands/listeners/gui/hooks/:指令、事件、GUI、PlaceholderAPI。

Folia 线程纪律

  • 严禁 Bukkit.getScheduler()
  • 数据库 / 排序 / 利息扫描等后台任务走 AsyncScheduler
  • 操作玩家物品、开 GUI、发消息从异步切回时调度到 player.getScheduler()(实体区域线程)。
  • 经济数据操作必须线程安全(Vault 接口可能在其它插件的异步线程被调用)。