Files
OpenKnockBackManager/src/main/java/me/dw1e/kbm/KnockbackManager.java
YuruzukiOvO 4aa069ca79 1
2025-11-21 22:32:04 +08:00

101 lines
3.9 KiB
Java

package me.dw1e.kbm;
import me.dw1e.kbm.api.KnockbackManagerAPI;
import me.dw1e.kbm.commands.KBMCommandHandler;
import me.dw1e.kbm.config.ConfigManager;
import me.dw1e.kbm.data.PlayerDataManager;
import me.dw1e.kbm.listeners.PacketListener;
import me.dw1e.kbm.listeners.PlayerEventListener;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;
public final class KnockbackManager extends JavaPlugin {
private static KnockbackManager instance;
private ConfigManager configManager;
private PlayerDataManager playerDataManager;
private KnockbackManagerAPI api;
private PacketListener packetListener;
private int serverTick;
private final String pluginPrefix = ChatColor.DARK_GRAY + "[" + ChatColor.YELLOW + "KBM" + ChatColor.DARK_GRAY + "] ";
@Override
public void onEnable() {
instance = this;
if (!getDescription().getName().equals("KnockbackManager") ||
!getDescription().getAuthors().contains("dw1e")) {
getLogger().severe("检测到插件信息篡改,已停止运行!");
Bukkit.getPluginManager().disablePlugin(this);
return;
}
this.configManager = new ConfigManager(this);
this.playerDataManager = new PlayerDataManager();
this.api = new KnockbackManagerAPIImpl(this);
this.configManager.loadConfigs(Bukkit.getConsoleSender());
this.playerDataManager.registerAllPlayers();
getCommand("kbm").setExecutor(new KBMCommandHandler(this));
Bukkit.getPluginManager().registerEvents(new PlayerEventListener(this), this);
Bukkit.getScheduler().runTaskTimer(this, () -> serverTick++, 0L, 1L);
setupProtocolLib();
getLogger().info("Knockback Manager 已启用!");
}
@Override
public void onDisable() {
if (packetListener != null) {
packetListener.unregister();
}
if (playerDataManager != null) {
playerDataManager.clearAllData();
}
instance = null;
getLogger().info("Knockback Manager 已禁用!");
}
private void setupProtocolLib() {
org.bukkit.plugin.Plugin protocolLib = Bukkit.getPluginManager().getPlugin("ProtocolLib");
if (protocolLib != null && protocolLib.isEnabled()) {
String version = protocolLib.getDescription().getVersion();
try {
int minorVersion = Integer.parseInt(version.split("\\.")[1]);
if (minorVersion < 5) {
logMessage(ChatColor.RED + "不支持的 ProtocolLib 版本: " + ChatColor.YELLOW + version +
ChatColor.RED + ", 请使用 5.0.0 或之后的版本, Misplace 模块将不会启用!");
} else {
logMessage(ChatColor.GREEN + "检测到 ProtocolLib " + ChatColor.YELLOW + version +
ChatColor.GREEN + ", 已启用 Misplace 模块!");
this.packetListener = new PacketListener(this);
this.packetListener.register();
}
} catch (Exception e) {
logMessage(ChatColor.RED + "解析 ProtocolLib 版本时出错, Misplace 模块将不会启用!");
}
} else {
logMessage(ChatColor.RED + "未检测到 ProtocolLib 安装/运行, Misplace 模块将不会启用!");
}
}
public void logMessage(String message) {
Bukkit.getConsoleSender().sendMessage(pluginPrefix + message);
}
// Getters
public static KnockbackManager getInstance() { return instance; }
public ConfigManager getConfigManager() { return configManager; }
public PlayerDataManager getPlayerDataManager() { return playerDataManager; }
public KnockbackManagerAPI getAPI() { return api; }
public int getServerTick() { return serverTick; }
public String getPluginPrefix() { return pluginPrefix; }
}