d5bc819684
Adds configurable fees, transaction history, chat amount input, and v1.1.0 release documentation.
2.7 KiB
2.7 KiB
CraftBank — 项目约定
适用于 Folia 1.21.8 的经济与银行核心插件(Java 21+,Gradle 构建)。
仓库
- 远端:私有仓库
dmz7p4xmqh-coder/CraftBank(默认分支main)。 gh与git已安装并登录,可直接用于推送与发行。
每次改动后的固定流程
完成任何代码改动后,主动执行以下步骤(无需等用户再次要求):
- 构建验证:运行
./gradlew shadowJar,确认编译通过并产出build/libs/CraftBank-<version>.jar。 - 更新 README:若改动影响功能、指令、权限、配置项或 PlaceholderAPI 变量,同步更新
README.md。 - 提交并推送到
main。 - 发布 Release:用
gh release create创建新发行版,附上编译好的 jar。
版本号约定(语义化版本)
- 新功能 → 递增次版本号:
v1.x.0 - Bug 修复 → 递增修订号:
v1.0.x - 不兼容的重大改动 → 递增主版本号:
v2.0.0
发行版 tag 与 build.gradle.kts 里的 version、plugin.yml 的版本需保持一致(plugin.yml 通过 ${version} 占位符在构建时自动填充,改 build.gradle.kts 的 version 即可)。
构建注意事项
- 用当前 JDK(已验证 JDK 25)编译,通过
--release 21产出 Java 21 字节码。 - 不要在 shadowJar 中启用包重定位(
relocate):当前 shadow 8.3.5 的字节码重映射器在新 JDK 产出的invokedynamicclass 上会崩溃。如确需重定位,改用 JDK 21 编译或升级 shadow 插件。 - MySQL 驱动默认不打包;需要时在
build.gradle.kts取消相应依赖注释。 - 不要提交
build/、.gradle/、.Codex/(已在.gitignore中排除)。
架构速览
- 主类
CraftBank:初始化各子系统、注册 Vault(Highest)、封装 Folia 调度(runAsync/runForPlayer/runGlobal)。 economy/:EconomyManager(ConcurrentHashMap缓存 +synchronized账户)、VaultEconomyProvider(Vault 接口实现)。bank/BankManager:活期复利结算、定期存款创建 / 锁定 / 到期结算。database/DatabaseManager:SQLite/MySQL,定期领取用UPDATE ... WHERE claimed = 0原子置位防重复。items/:银行卡与支票的 PDC 创建与防伪校验。commands/、listeners/、gui/、hooks/:指令、事件、GUI、PlaceholderAPI。
Folia 线程纪律
- 严禁
Bukkit.getScheduler()。 - 数据库 / 排序 / 利息扫描等后台任务走
AsyncScheduler。 - 操作玩家物品、开 GUI、发消息从异步切回时调度到
player.getScheduler()(实体区域线程)。 - 经济数据操作必须线程安全(Vault 接口可能在其它插件的异步线程被调用)。