101 lines
3.9 KiB
Java
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; }
|
|
} |