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 扩展, 提供:
*
* - %craftbank_cash% —— 现金余额
* - %craftbank_bank_saving% —— 活期余额
* - %craftbank_cash_formatted% —— 带货币符号的现金
* - %craftbank_bank_saving_formatted% —— 带货币符号的活期
*
*/
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;
};
}
}