refactor: Remove emoji system and chat filters, implement SOLID architecture

This commit is contained in:
loki5512344 2026-02-23 12:10:51 +01:00
parent 16a5e09118
commit 74482851aa
72 changed files with 2654 additions and 1287 deletions

View file

@ -1,110 +1,99 @@
package com.loki.lochat;
import com.loki.lochat.api.service.IgnoreService;
import com.loki.lochat.api.service.MuteService;
import com.loki.lochat.commands.*;
import com.loki.lochat.config.ConfigManager;
import com.loki.lochat.config.MessageConfig;
import com.loki.lochat.core.registry.ServiceRegistry;
import com.loki.lochat.gradient.GradientModule;
import com.loki.lochat.integrations.LibertyBansHook;
import com.loki.lochat.integrations.PlaceholderAPIHook;
import com.loki.lochat.listeners.ChatListener;
import com.loki.lochat.managers.*;
import com.loki.lochat.listener.ChatEventListener;
import com.loki.lochat.listener.PlayerEventListener;
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 ChatManager chatManager;
private PMManager pmManager;
private IgnoreManager ignoreManager;
private AutoMessageManager autoMessageManager;
private AntiSpamManager antiSpamManager;
private CooldownManager cooldownManager;
private MentionManager mentionManager;
private SpyManager spyManager;
private EmojiManager emojiManager;
private CustomCommandManager customCommandManager;
private GradientModule gradientModule;
private LibertyBansHook libertyBansHook;
private MuteManager muteManager;
private HeadEmojiManager headEmojiManager;
private com.loki.lochat.integrations.SkinsRestorerHook skinsRestorerHook;
private AutoMessageManager autoMessageManager;
private CustomCommandManager customCommandManager;
@Override
public void onEnable() {
instance = this;
getLogger().info("Загрузка LoChat v" + getDescription().getVersion() + " для Paper/Folia " + Bukkit.getMinecraftVersion() + "...");
// Инициализация конфигов
// Конфиги
configManager = new ConfigManager(this);
messageConfig = new MessageConfig(this);
// Инициализация менеджеров
emojiManager = new EmojiManager(this);
ignoreManager = new IgnoreManager(this);
pmManager = new PMManager();
antiSpamManager = new AntiSpamManager(this);
cooldownManager = new CooldownManager();
mentionManager = new MentionManager(this);
spyManager = new SpyManager(this);
// Service Registry (SOLID DI) - с зависимостями
serviceRegistry = new ServiceRegistry(this, configManager, messageConfig);
getLogger().info("ServiceRegistry инициализирован (SOLID DI)");
// Менеджеры
customCommandManager = new CustomCommandManager(this);
muteManager = new MuteManager(this);
chatManager = new ChatManager(this);
autoMessageManager = new AutoMessageManager(this);
// Инициализация интеграций
skinsRestorerHook = new com.loki.lochat.integrations.SkinsRestorerHook(this);
headEmojiManager = new com.loki.lochat.managers.HeadEmojiManager(this);
// Интеграции
initIntegrations();
// Инициализация модуля градиентов (интегрированный LoPreff)
gradientModule = new GradientModule(this);
if (gradientModule.init()) {
getLogger().info("Gradient модуль (LoPreff) загружен!");
}
// Инициализация LibertyBans интеграции
libertyBansHook = new LibertyBansHook(this);
// Регистрация команд
// Команды и слушатели
registerCommands();
registerListeners();
// Регистрация листенеров
getServer().getPluginManager().registerEvents(new ChatListener(this), this);
// Запуск автосообщений
// Автосообщения
autoMessageManager.start();
// PlaceholderAPI
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
new PlaceholderAPIHook(this).register();
getLogger().info("PlaceholderAPI подключен!");
}
getLogger().info("LoChat успешно запущен!");
}
@Override
public void onDisable() {
if (autoMessageManager != null) {
autoMessageManager.stop();
}
if (ignoreManager != null) {
ignoreManager.save();
}
if (gradientModule != null) {
gradientModule.shutdown();
}
if (muteManager != null) {
muteManager.save();
}
if (autoMessageManager != null) autoMessageManager.stop();
// Сохранение данных через сервисы
IgnoreService ignoreService = serviceRegistry.get(IgnoreService.class);
if (ignoreService != null) ignoreService.save();
MuteService muteService = serviceRegistry.get(MuteService.class);
if (muteService != null) muteService.save();
if (gradientModule != null) gradientModule.shutdown();
getLogger().info("LoChat отключен!");
}
private void initIntegrations() {
// Gradient модуль
gradientModule = new GradientModule(this);
if (gradientModule.init()) {
getLogger().info("Gradient модуль (LoPreff) загружен!");
}
// LibertyBans
new LibertyBansHook(this);
// PlaceholderAPI
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
new PlaceholderAPIHook(this).register();
getLogger().info("PlaceholderAPI подключен!");
}
}
private void registerCommands() {
getCommand("g").setExecutor(new GlobalChatCommand(this));
getCommand("globalchat").setExecutor(new GlobalChatCommand(this));
getCommand("l").setExecutor(new LocalChatCommand(this));
getCommand("msg").setExecutor(new MsgCommand(this));
getCommand("reply").setExecutor(new ReplyCommand(this));
@ -114,123 +103,52 @@ public final class LoChat extends JavaPlugin {
getCommand("chatspy").setExecutor(new ChatSpyCommand(this));
getCommand("clearchat").setExecutor(new ClearChatCommand(this));
LoChatCommand loChatCommand = new LoChatCommand(this);
getCommand("lochat").setExecutor(loChatCommand);
getCommand("lochat").setTabCompleter(loChatCommand);
LoChatCommand loChatCmd = new LoChatCommand(this);
getCommand("lochat").setExecutor(loChatCmd);
getCommand("lochat").setTabCompleter(loChatCmd);
// Команды мутов
MuteCommand muteCommand = new MuteCommand(this);
getCommand("lmute").setExecutor(muteCommand);
getCommand("lmute").setTabCompleter(muteCommand);
MuteCommand muteCmd = new MuteCommand(this);
getCommand("lmute").setExecutor(muteCmd);
getCommand("lmute").setTabCompleter(muteCmd);
UnmuteCommand unmuteCommand = new UnmuteCommand(this);
getCommand("lunmute").setExecutor(unmuteCommand);
getCommand("lunmute").setTabCompleter(unmuteCommand);
UnmuteCommand unmuteCmd = new UnmuteCommand(this);
getCommand("lunmute").setExecutor(unmuteCmd);
getCommand("lunmute").setTabCompleter(unmuteCmd);
getCommand("lmutelist").setExecutor(new MuteListCommand(this));
MuteHistoryCommand muteHistoryCommand = new MuteHistoryCommand(this);
getCommand("lmutehistory").setExecutor(muteHistoryCommand);
getCommand("lmutehistory").setTabCompleter(muteHistoryCommand);
MuteHistoryCommand historyCmd = new MuteHistoryCommand(this);
getCommand("lmutehistory").setExecutor(historyCmd);
getCommand("lmutehistory").setTabCompleter(historyCmd);
MuteBlameCommand muteBlameCommand = new MuteBlameCommand(this);
getCommand("lmuteblame").setExecutor(muteBlameCommand);
getCommand("lmuteblame").setTabCompleter(muteBlameCommand);
MuteBlameCommand blameCmd = new MuteBlameCommand(this);
getCommand("lmuteblame").setExecutor(blameCmd);
getCommand("lmuteblame").setTabCompleter(blameCmd);
// Команда настройки очистки чата
ClearChatConfigCommand clearChatConfigCommand = new ClearChatConfigCommand(this);
getCommand("clearchatconfig").setExecutor(clearChatConfigCommand);
getCommand("clearchatconfig").setTabCompleter(clearChatConfigCommand);
// Внутренняя команда для информации об игроке
getCommand("lochat").setExecutor(new PlayerInfoCommand(this));
ClearChatConfigCommand clearCfgCmd = new ClearChatConfigCommand(this);
getCommand("clearchatconfig").setExecutor(clearCfgCmd);
getCommand("clearchatconfig").setTabCompleter(clearCfgCmd);
}
private void registerListeners() {
getServer().getPluginManager().registerEvents(new ChatEventListener(this, serviceRegistry), this);
getServer().getPluginManager().registerEvents(new PlayerEventListener(serviceRegistry), this);
getLogger().info("Слушатели зарегистрированы (новая архитектура)");
}
public void reload() {
configManager.reload();
messageConfig.reload();
emojiManager.reload();
autoMessageManager.stop();
autoMessageManager.start();
if (gradientModule != null) {
gradientModule.reload();
}
if (customCommandManager != null) {
customCommandManager.reload();
}
}
public static LoChat getInstance() {
return instance;
}
public ConfigManager getConfigManager() {
return configManager;
}
public MessageConfig getMessageConfig() {
return messageConfig;
}
public ChatManager getChatManager() {
return chatManager;
}
public PMManager getPmManager() {
return pmManager;
}
public IgnoreManager getIgnoreManager() {
return ignoreManager;
}
public AutoMessageManager getAutoMessageManager() {
return autoMessageManager;
}
public AntiSpamManager getAntiSpamManager() {
return antiSpamManager;
}
public CooldownManager getCooldownManager() {
return cooldownManager;
}
public MentionManager getMentionManager() {
return mentionManager;
}
public SpyManager getSpyManager() {
return spyManager;
}
public EmojiManager getEmojiManager() {
return emojiManager;
}
public GradientModule getGradientModule() {
return gradientModule;
}
public CustomCommandManager getCustomCommandManager() {
return customCommandManager;
}
public LibertyBansHook getLibertyBansHook() {
return libertyBansHook;
}
public MuteManager getMuteManager() {
return muteManager;
}
public HeadEmojiManager getHeadEmojiManager() {
return headEmojiManager;
}
public com.loki.lochat.integrations.SkinsRestorerHook getSkinsRestorerHook() {
return skinsRestorerHook;
autoMessageManager.reload();
if (gradientModule != null) gradientModule.reload();
if (customCommandManager != null) customCommandManager.reload();
}
// Геттеры
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; }
}