140 lines
No EOL
5 KiB
Markdown
140 lines
No EOL
5 KiB
Markdown
# План миграции команд на новую архитектуру
|
|
|
|
## ✅ Что уже сделано
|
|
|
|
### 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. **Настроить автотесты** |