LoChat/src/main/java/com/loki/lochat/LoChat.java

135 lines
4.3 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.loki.lochat;
import com.loki.lochat.api.service.PunishmentService;
import com.loki.lochat.commands.CommandManager;
import com.loki.lochat.config.ConfigManager;
import com.loki.lochat.config.MessageConfig;
import com.loki.lochat.core.PluginInitializer;
import com.loki.lochat.core.PluginShutdown;
import com.loki.lochat.core.registry.ServiceRegistry;
import com.loki.lochat.gradient.GradientModule;
import com.loki.lochat.integrations.DiscordIntegration;
import com.loki.lochat.managers.AutoMessageManager;
import com.loki.lochat.managers.CustomCommandManager;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
/**
* Главный класс плагина LoChat
* Использует SOLID архитектуру с Dependency Injection через ServiceRegistry
*/
public final class LoChat extends JavaPlugin {
private static LoChat instance;
// Основные компоненты
private ServiceRegistry serviceRegistry;
private ConfigManager configManager;
private MessageConfig messageConfig;
private GradientModule gradientModule;
private AutoMessageManager autoMessageManager;
private CustomCommandManager customCommandManager;
private DiscordIntegration discordIntegration;
private CommandManager commandManager;
// Вспомогательные классы
private PluginInitializer initializer;
private PluginShutdown shutdown;
@Override
public void onEnable() {
instance = this;
getLogger().info("Загрузка LoChat v" + getPluginMeta().getVersion() + " для Paper/Folia " + Bukkit.getMinecraftVersion() + "...");
// Инициализация
initializer = new PluginInitializer(this);
shutdown = new PluginShutdown(this);
// Конфиги
configManager = initializer.initConfigs();
messageConfig = initializer.initMessageConfig();
// Service Registry (SOLID DI)
serviceRegistry = initializer.initServiceRegistry(configManager, messageConfig);
// Менеджеры
customCommandManager = initializer.initCustomCommandManager();
autoMessageManager = initializer.initAutoMessageManager();
// Интеграции
discordIntegration = initializer.initDiscordIntegration();
gradientModule = initializer.initGradientModule();
initializer.initIntegrations(discordIntegration, gradientModule);
// Команды и слушатели
commandManager = new CommandManager(this);
commandManager.registerCommands();
initializer.registerListeners(serviceRegistry, discordIntegration);
initializer.registerPluginChannels();
// Автосообщения
autoMessageManager.start();
getLogger().info("LoChat успешно запущен!");
}
@Override
public void onDisable() {
shutdown.shutdown(serviceRegistry, autoMessageManager, discordIntegration, gradientModule);
}
public void reload() {
configManager.reload();
messageConfig.reload();
autoMessageManager.reload();
if (gradientModule != null) {
gradientModule.reload();
}
if (customCommandManager != null) {
customCommandManager.reload();
}
if (discordIntegration != null) {
discordIntegration.reload();
}
if (serviceRegistry != null) {
try {
serviceRegistry.get(PunishmentService.class).save();
} catch (IllegalStateException ignored) {
}
}
}
// Геттеры
public static LoChat getInstance() {
return instance;
}
public ServiceRegistry getServiceRegistry() {
return serviceRegistry;
}
public ConfigManager getConfigManager() {
return configManager;
}
public MessageConfig getMessageConfig() {
return messageConfig;
}
public GradientModule getGradientModule() {
return gradientModule;
}
public CustomCommandManager getCustomCommandManager() {
return customCommandManager;
}
public CommandManager getCommandManager() {
return commandManager;
}
public DiscordIntegration getDiscordIntegration() {
return discordIntegration;
}
}