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 扩展, 提供: * */ 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; }; } }