package org.blz.adminmode; import org.blz.adminmode.commands.AdminModeCommand; import org.blz.adminmode.config.ConfigManager; import org.blz.adminmode.dialog.AdminDialogService; import org.blz.adminmode.dialog.DialogPreferenceStore; import org.blz.adminmode.dialog.MenuEmojiPreferenceStore; import org.blz.adminmode.integrations.CoreProtectIntegration; import org.blz.adminmode.integrations.LuckPermsIntegration; import org.blz.adminmode.listeners.AdminModeListener; import org.blz.adminmode.listeners.GameModeChangeListener; import org.blz.adminmode.listeners.MobTargetListener; import org.blz.adminmode.listeners.PlayerDeathListener; import org.blz.adminmode.listeners.PlayerSessionListener; import org.blz.adminmode.moderation.ModeratorAccessManager; import org.blz.adminmode.moderation.ModeManager; import org.blz.adminmode.moderation.ModeSessionLogger; import org.blz.adminmode.moderation.ModeratorPreferencesStore; import org.blz.adminmode.moderation.ModeratorWarningStore; import org.blz.adminmode.moderation.PlayerFreezeManager; import org.blz.adminmode.session.SessionStorage; import org.bukkit.plugin.java.JavaPlugin; public class AdminMode extends JavaPlugin { private static AdminMode instance; private ConfigManager configManager; private ModeManager modeManager; private AdminModeCommand adminModeCommand; private AdminDialogService dialogService; private org.blz.adminmode.managers.BelzeBoolManager belzeBoolManager; private ModeratorAccessManager moderatorAccessManager; private PlayerFreezeManager freezeManager; @Override public void onEnable() { instance = this; saveDefaultConfig(); configManager = new ConfigManager(this); SessionStorage sessionStorage = new SessionStorage(this); moderatorAccessManager = new ModeratorAccessManager(this); ModeratorPreferencesStore preferencesStore = new ModeratorPreferencesStore(this); ModeratorWarningStore warningStore = new ModeratorWarningStore(this); LuckPermsIntegration luckPermsIntegration = new LuckPermsIntegration(this, configManager); CoreProtectIntegration coreProtectIntegration = new CoreProtectIntegration(this, configManager); ModeSessionLogger sessionLogger = new ModeSessionLogger(this, configManager); modeManager = new ModeManager(this, configManager, luckPermsIntegration, sessionStorage, sessionLogger, preferencesStore); adminModeCommand = new AdminModeCommand(configManager, modeManager, coreProtectIntegration, moderatorAccessManager); DialogPreferenceStore dialogPreferenceStore = new DialogPreferenceStore(this); MenuEmojiPreferenceStore emojiPreferenceStore = new MenuEmojiPreferenceStore(this); dialogService = new AdminDialogService(this, configManager, adminModeCommand, dialogPreferenceStore, emojiPreferenceStore, preferencesStore, warningStore); adminModeCommand.setDialogService(dialogService); adminModeCommand.setDialogPreferenceStore(dialogPreferenceStore); getCommand("adminmode").setExecutor(adminModeCommand); getCommand("adminmode").setTabCompleter(adminModeCommand); org.blz.adminmode.commands.AdminFixCommand adminFixCommand = new org.blz.adminmode.commands.AdminFixCommand(adminModeCommand); getCommand("admfix").setExecutor(adminFixCommand); getCommand("admfix").setTabCompleter(adminFixCommand); getServer().getPluginManager().registerEvents(new AdminModeListener(adminModeCommand, configManager, modeManager, dialogService), this); getServer().getPluginManager().registerEvents(new MobTargetListener(adminModeCommand, configManager), this); getServer().getPluginManager().registerEvents(new GameModeChangeListener(adminModeCommand, configManager), this); getServer().getPluginManager().registerEvents(new PlayerSessionListener(adminModeCommand, modeManager), this); getServer().getPluginManager().registerEvents(new PlayerDeathListener(modeManager), this); freezeManager = new PlayerFreezeManager(this); adminModeCommand.setFreezeManager(freezeManager); getServer().getPluginManager().registerEvents(freezeManager, this); for (org.bukkit.entity.Player onlinePlayer : getServer().getOnlinePlayers()) { if (modeManager.hasSession(onlinePlayer.getUniqueId())) { getServer().getScheduler().runTaskLater(this, () -> adminModeCommand.resumeMode(onlinePlayer), 1L); } } // Load Pocket Dimension World new org.blz.adminmode.utils.WorldLoader(this, "pocket_dimension").loadWorld(); // Register Abilities belzeBoolManager = new org.blz.adminmode.managers.BelzeBoolManager(this); adminModeCommand.setBelzeBoolManager(belzeBoolManager); getLogger().info("AdminMode успешно включен!"); } @Override public void onDisable() { getLogger().info("AdminMode отключен!"); } public static AdminMode getInstance() { return instance; } public ConfigManager getConfigManager() { return configManager; } public ModeManager getModeManager() { return modeManager; } public AdminModeCommand getAdminModeCommand() { return adminModeCommand; } }