# План миграции команд на новую архитектуру ## ✅ Что уже сделано ### 1. Создана базовая архитектура - `BaseCommand` - базовый класс для всех команд - `PlayerCommand` - для команд игроков - `AdminCommand` - для административных команд - `CommandManager` - централизованное управление ### 2. Созданы категории команд - `chat/` - команды чата - `messaging/` - личные сообщения - `social/` - социальные функции - `moderation/` - модерация - `admin/` - административные команды ### 3. Примеры новых команд - `GlobalChatCommand` (новая архитектура) - `LocalChatCommand` (новая архитектура) - `MsgCommand` (новая архитектура) - `ReplyCommand` (новая архитектура) - `IgnoreCommand` (новая архитектура) ## 🔄 План поэтапной миграции ### Этап 1: Команды чата (ПРИОРИТЕТ 1) - [x] `GlobalChatCommand` - создан - [x] `LocalChatCommand` - создан - [ ] Тестирование и отладка - [ ] Замена в CommandManager ### Этап 2: Личные сообщения (ПРИОРИТЕТ 1) - [x] `MsgCommand` - создан - [x] `ReplyCommand` - создан - [ ] Тестирование и отладка - [ ] Замена в CommandManager ### Этап 3: Социальные команды (ПРИОРИТЕТ 2) - [x] `IgnoreCommand` - создан - [ ] `UnignoreCommand` - [ ] `IgnoreListCommand` - [ ] `NickCommand` ### Этап 4: Команды модерации (ПРИОРИТЕТ 2) - [ ] `MuteCommand` - [ ] `UnmuteCommand` - [ ] `MuteListCommand` - [ ] `MuteHistoryCommand` - [ ] `MuteBlameCommand` ### Этап 5: Административные команды (ПРИОРИТЕТ 3) - [ ] `AnnounceCommand` - [ ] `ClearChatCommand` - [ ] `ClearChatConfigCommand` - [ ] `ChatSpyCommand` - [ ] `LoChatCommand` - [ ] `ReloadConfigCommand` - [ ] `DiscordCommand` ### Этап 6: Специальные команды (ПРИОРИТЕТ 4) - [ ] `CustomCommandsCommand` - [ ] Кастомные команды из `custom/` ## 🛠️ Процесс миграции одной команды ### 1. Создание новой команды ```java public class NewCommand extends PlayerCommand { public NewCommand(LoChat plugin) { super(plugin); } @Override protected boolean executePlayerCommand(Player player, Command command, String label, String[] args) { // Логика команды return true; } } ``` ### 2. Тестирование - Проверка функциональности - Проверка прав доступа - Проверка обработки ошибок ### 3. Замена в CommandManager ```java // Было: registerOldCommand("command", new OldCommand(plugin)); // Стало: registerCommand("command", new NewCommand(plugin)); ``` ### 4. Удаление старой команды - Удалить файл старой команды - Убрать импорты ## 📋 Чек-лист для каждой команды ### Обязательные проверки: - [ ] Наследуется от правильного базового класса - [ ] Правильная проверка прав доступа - [ ] Обработка ошибок - [ ] Валидация аргументов - [ ] Сообщения из конфигурации - [ ] TabCompleter (если нужен) ### Тестирование: - [ ] Команда выполняется корректно - [ ] Права доступа работают - [ ] Ошибки обрабатываются - [ ] Автодополнение работает - [ ] Нет дублирования кода ## 🎯 Ожидаемые результаты ### После полной миграции: - **Сокращение кода** на 40-50% - **Устранение дублирования** проверок - **Единообразная обработка** ошибок - **Простота добавления** новых команд - **Лучшая читаемость** кода - **Соответствие SOLID** принципам ### Метрики качества: - Цикломатическая сложность: ↓ 30% - Дублирование кода: ↓ 60% - Покрытие тестами: ↑ 80% - Время разработки новых команд: ↓ 50% ## 🚀 Следующие шаги 1. **Протестировать созданные команды** 2. **Мигрировать команды по приоритету** 3. **Обновить документацию** 4. **Создать примеры для разработчиков** 5. **Настроить автотесты**