Files
HamsterCurrency-Parent/currency-plugin/src/main/java/cn/hamster3/currency/HamsterCurrency.java
MiniDay 5192b4bb15 fix: placeholder api 挂载失效
placeholder api 挂载失效
2022-08-25 20:03:50 +08:00

160 lines
5.7 KiB
Java

package cn.hamster3.currency;
import cn.hamster3.api.utils.LogUtils;
import cn.hamster3.currency.api.CurrencyAPI;
import cn.hamster3.currency.command.currency.CurrencyCommand;
import cn.hamster3.currency.command.vault.VaultCommand;
import cn.hamster3.currency.command.vault.VaultPayCommand;
import cn.hamster3.currency.command.vault.VaultSeeCommand;
import cn.hamster3.currency.command.vault.VaultTopCommand;
import cn.hamster3.currency.core.FileDataManager;
import cn.hamster3.currency.core.FileManager;
import cn.hamster3.currency.core.IDataManager;
import cn.hamster3.currency.core.SQLDataManager;
import cn.hamster3.currency.data.CurrencyType;
import cn.hamster3.currency.hook.PlaceholderHook;
import cn.hamster3.currency.hook.VaultEconomyHook;
import cn.hamster3.currency.listener.CurrencyListener;
import cn.hamster3.currency.listener.SQLListener;
import cn.hamster3.service.bukkit.api.ServiceMessageAPI;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.Bukkit;
import org.bukkit.command.PluginCommand;
import org.bukkit.entity.Player;
import org.bukkit.plugin.ServicePriority;
import org.bukkit.plugin.java.JavaPlugin;
import java.sql.SQLException;
public final class HamsterCurrency extends JavaPlugin {
private static LogUtils logUtils;
private IDataManager dataManager;
private CurrencyListener listener;
private boolean loaded;
public static LogUtils getLogUtils() {
return logUtils;
}
@Override
public void onLoad() {
FileManager.reload(this);
logUtils = new LogUtils(this);
logUtils.infoDividingLine();
if (FileManager.isUseBC()) {
logUtils.info("使用多服务器模式...");
try {
SQLDataManager sqlDataManager = new SQLDataManager(this);
logUtils.info("SQL存档管理器初始化完成!");
listener = new SQLListener(this, sqlDataManager);
logUtils.info("事件监听器初始化完成!");
dataManager = sqlDataManager;
} catch (SQLException | ClassNotFoundException e) {
logUtils.error(e, "插件加载时遇到了一个错误: ");
loaded = false;
}
} else {
logUtils.info("使用单服务器模式...");
FileDataManager fileDataManager = new FileDataManager(this);
logUtils.info("文件存档管理器初始化完成!");
listener = new CurrencyListener(this, fileDataManager);
logUtils.info("事件监听器初始化完成!");
dataManager = fileDataManager;
}
CurrencyAPI.setDataManager(dataManager);
logUtils.info("API初始化完成!");
loaded = true;
logUtils.infoDividingLine();
}
@Override
public void onEnable() {
logUtils.infoDividingLine();
if (!loaded) {
logUtils.warning("插件未能成功启动!");
setEnabled(false);
return;
}
dataManager.loadConfig();
PluginCommand command = getCommand("HamsterCurrency");
new CurrencyCommand(command, dataManager);
logUtils.info("插件命令已注册!");
Bukkit.getPluginManager().registerEvents(listener, this);
logUtils.info("事件监听器已注册!");
registerVault();
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
logUtils.info("检测到 PlaceholderAPI 已安装...");
new PlaceholderHook(dataManager).register();
logUtils.info("已挂载 PlaceholderAPI 变量!");
} else {
logUtils.info("未检测到 PlaceholderAPI!");
}
Bukkit.getScheduler().runTaskAsynchronously(this, () -> {
dataManager.onEnable();
for (Player player : Bukkit.getOnlinePlayers()) {
dataManager.loadPlayerData(player.getUniqueId());
}
});
ServiceMessageAPI.subscribeTag("HamsterCurrency");
logUtils.info("插件已启动!");
logUtils.infoDividingLine();
}
private void registerVault() {
logUtils.infoDividingLine();
if (!FileManager.isVaultHook()) {
Bukkit.getServicesManager().unregister(this);
logUtils.info("不使用Vault经济系统挂接...");
return;
}
if (!Bukkit.getPluginManager().isPluginEnabled("Vault")) {
logUtils.warning("未找到 Vault 插件! 取消注册Vault经济系统...");
return;
}
String type = FileManager.getVaultCurrencyType();
logUtils.info("尝试以 %s 注册Vault经济系统...", type);
CurrencyType currencyType = dataManager.getCurrencyType(type);
if (currencyType == null) {
logUtils.warning("未找到经济类型 %s! 取消注册Vault经济系统...", type);
return;
}
VaultEconomyHook hook = new VaultEconomyHook(dataManager);
logUtils.info("已初始化Vault连接器...");
Bukkit.getServicesManager().register(Economy.class, hook, this, ServicePriority.Normal);
logUtils.info("Vault经济系统注册成功!");
new VaultPayCommand(getCommand("payMoney"), dataManager);
new VaultSeeCommand(getCommand("balance"), dataManager);
new VaultTopCommand(getCommand("balanceTop"), dataManager);
new VaultCommand(getCommand("economy"), dataManager);
logUtils.infoDividingLine();
}
@Override
public void onDisable() {
logUtils.infoDividingLine();
if (dataManager != null) {
dataManager.onDisable();
}
Bukkit.getServicesManager().unregister(this);
logUtils.info("插件已关闭!");
logUtils.infoDividingLine();
logUtils.close();
}
}