eddc706c9a
实现完整的现金/钱包、银行卡、支票、活期储蓄与定期存款系统, 实现并以 Highest 优先级注册 Vault Economy 接口,接入 PlaceholderAPI。 全程遵循 Folia 调度模型(AsyncScheduler / 实体区域线程), 数据缓存线程安全,支票兑现与定期领取做防刷处理。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
65 lines
2.0 KiB
Java
65 lines
2.0 KiB
Java
package com.craftbank.hooks;
|
|
|
|
import com.craftbank.CraftBank;
|
|
import com.craftbank.model.PlayerAccount;
|
|
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
|
|
import org.bukkit.OfflinePlayer;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
/**
|
|
* PlaceholderAPI 扩展, 提供:
|
|
* <ul>
|
|
* <li>%craftbank_cash% —— 现金余额</li>
|
|
* <li>%craftbank_bank_saving% —— 活期余额</li>
|
|
* <li>%craftbank_cash_formatted% —— 带货币符号的现金</li>
|
|
* <li>%craftbank_bank_saving_formatted% —— 带货币符号的活期</li>
|
|
* </ul>
|
|
*/
|
|
public class CraftBankExpansion extends PlaceholderExpansion {
|
|
|
|
private final CraftBank plugin;
|
|
|
|
public CraftBankExpansion(CraftBank plugin) {
|
|
this.plugin = plugin;
|
|
}
|
|
|
|
@Override
|
|
public @NotNull String getIdentifier() {
|
|
return "craftbank";
|
|
}
|
|
|
|
@Override
|
|
public @NotNull String getAuthor() {
|
|
return "CraftBank";
|
|
}
|
|
|
|
@Override
|
|
public @NotNull String getVersion() {
|
|
return plugin.getDescription().getVersion();
|
|
}
|
|
|
|
@Override
|
|
public boolean persist() {
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public String onRequest(OfflinePlayer player, @NotNull String params) {
|
|
if (player == null) {
|
|
return "";
|
|
}
|
|
// 占位符在主线程被解析: 仅读取已缓存数据, 不触发阻塞式数据库查询。
|
|
PlayerAccount account = plugin.getEconomyManager().getCached(player.getUniqueId());
|
|
double cash = account != null ? account.getCash() : 0.0;
|
|
double saving = account != null ? account.getBankSaving() : 0.0;
|
|
|
|
return switch (params.toLowerCase()) {
|
|
case "cash" -> plugin.getEconomyManager().formatNumber(cash);
|
|
case "cash_formatted" -> plugin.getEconomyManager().format(cash);
|
|
case "bank_saving" -> plugin.getEconomyManager().formatNumber(saving);
|
|
case "bank_saving_formatted" -> plugin.getEconomyManager().format(saving);
|
|
default -> null;
|
|
};
|
|
}
|
|
}
|