1
This commit is contained in:
101
src/main/java/me/dw1e/kbm/KnockbackManager.java
Normal file
101
src/main/java/me/dw1e/kbm/KnockbackManager.java
Normal file
@@ -0,0 +1,101 @@
|
||||
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; }
|
||||
}
|
||||
Reference in New Issue
Block a user