Bank

基本信息

属性 值
类名 mytown.entities.Bank
文件 src/main/java/mytown/entities/Bank.java
行数 90
启用版本 Minecraft 1.7.10

功能

城镇银行,每个 Town 恰有一个 (Town.bank = new Bank(this),构造时传入 Town 自身)。

与 EconomyProxy 的区别:本类是城镇内部账本(存 int), 而 EconomyProxy 走 MyEssentials 的外部经济系统(可能是物品也可能是 Vault 货币)。

结构

成员 类型 初值
town private Town 构造器传入
amount private int 0
daysNotPaid private int 0

⚠️ amount 初值是硬编码的 0,不是 Config 的 defaultBankAmount(默认 5)。后者是新建城镇时写入的额度, 不是本字段的声明初值 —— 两者不可混淆。

关键方法

方法 返回 说明
makePayment(int) boolean 余额足够则扣款返回 true,否则 false 且不扣
payUpkeep() void 支付维护费
getNextPaymentAmount() int 下次应缴额(payUpkeep() 的依据)

实现要点

  • makePayment 是先判后扣:if (this.amount >= amount) 才 this.amount -= amount, 余额不足时直接返回 false,余额不变。
  • daysNotPaid 记录连续未缴维护费的天数, 与 Config 的 upkeepTownDeletionDays(默认 7 天) 配合判定是否删除城镇。
  • Town ↔ Bank 互相持有引用,序列化时需注意递归深度。

相关条目