feat: CraftBank Folia 1.21.8 经济与银行核心插件初始实现
实现完整的现金/钱包、银行卡、支票、活期储蓄与定期存款系统, 实现并以 Highest 优先级注册 Vault Economy 接口,接入 PlaceholderAPI。 全程遵循 Folia 调度模型(AsyncScheduler / 实体区域线程), 数据缓存线程安全,支票兑现与定期领取做防刷处理。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
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;
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user