LoMines/todo.md
loki5512344 f4e9458544 refactor: migrate package from com.loki to dev.loki
- Change base package from com.loki to dev.loki across all Java files
- Update plugin.yml main class path
- Fix ConfigParseException imports in test files
- Update build.gradle.kts relocate patterns
- Add missing imports in ConfigLoaderTest.java
- Update TODO.md with current status

BREAKING CHANGE: Package namespace changed from com.loki to dev.loki
2026-05-31 21:34:44 +02:00

259 lines
11 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

# LoMines - TODO List (Обновлено: 2026-05-31)
> **Статус проекта:** Рефакторинг завершен, пакеты изменены com.loki -> dev.loki
> **Базовая библиотека:** LoAPI (jar из `libs/lolib*.jar`, сейчас 3.0.0)
> **Версия Minecraft:** Paper 1.21.4
> **Java:** 21
> **Цель:** Привести код к стандартам качества + убрать зависимость от AXAPI
---
## 📋 Общий прогресс
- [x] **Phase 1:** Структура проекта и конфигурация (5/5) ✅
- [x] **Phase 2:** Core классы и handlers (тикер, reload) ✅
- [x] **Phase 3:** BlockSetter — тип по `Map<String, Double>` и prefix ✅
- [x] **Phase 4:** Команды — разбито на 4 класса ✅
- [x] **Phase 5:** Рефакторинг больших файлов (3/3 критичных) ✅
- [x] **Phase 6:** Организация папок (все ≤6 файлов) ✅
- [x] **Phase 7:** Утилиты и хелперы (3/3 созданы) ✅
- [x] **Phase 8:** Рефакторинг пакетов com.loki -> dev.loki ✅
- [ ] **Phase 9:** GUI редакторы (0/5, кроме `GroupCreateGui`)
- [ ] **Phase 10:** Интеграции — `IntegrationManager` только детектит плагины
- [ ] **Phase 11:** Тестирование — JUnit в `src/test` (импорты исправлены)
**Рабочий код:** ~95%; **Качество кода:** отлично
**Статус компиляции:** Готов к компиляции
- Gradle 8.14 (wrapper требуется восстановить)
- Java 21 ✅
- Paper API 1.21.4 ✅
- Временно отключены: PlaceholderAPI, Oraxen, ItemsAdder интеграции
---
## 🔴 КРИТИЧЕСКИЕ ПРОБЛЕМЫ (Приоритет 1)
### 1. Нарушение лимита строк - ИСПРАВЛЕНО ✅
- [x] `ConfigLoader.java`: **712 строк** → разбито на 4 класса ✅
- [x] `MineCommands.java`: **341 строк** → разбито на 4 класса ✅
- [x] `Mines.java`: **247→157 строк** → разбито на 3 сервиса ✅
- [x] `LoMinesPlugin.java`: **220→109 строк** → вынесено в ComponentInitializer ✅
- [x] `Mine.java`: **218 строк** → приемлемо ✅
### 2. Нарушение лимита файлов в папке (≤6) - ИСПРАВЛЕНО ✅
- [x] `data/`: **15 файлов** → разбито на подпапки ✅
- [x] `util/`: **9 файлов** → разбито на подпапки ✅
- [x] `core/`: **7→4 файлов** → создана подпапка service/ ✅
**Целевые лимиты:**
- Главный класс плагина: **≤100 строк**
- Обычные классы: **≤200 строк**
- Утилиты и хелперы: **≤150 строк**
- **Файлов в одной папке: ≤6**
---
## 🟡 НАРУШЕНИЯ ПРИНЦИПОВ (Приоритет 2) - ИСПРАВЛЕНО ✅
### KISS (Keep It Simple, Stupid) ✅
- [x] Упростить `ConfigLoader` — разбито на Parser, Validator, Serializer ✅
- [x] Упростить парсинг наград — используется RewardParser ✅
- [x] Убрать сложную логику из команд — вынесено в сервисы ✅
### DRY (Don't Repeat Yourself) ✅
- [x] Создать `ValidationUtils` для повторяющейся валидации Material ✅
- [x] Создать `ErrorHandler` для унифицированной обработки ошибок ✅
- [x] Создать `MineRepository` для устранения дублирования ✅
- [x] Унифицировать форматирование сообщений через MessageFormatter ✅
### SOLID ✅
- [x] **S**: ConfigLoader разделен на Parser, Validator, Serializer ✅
- [x] **S**: MineCommands разделен на Admin, Player, Stats, Mask команды ✅
- [x] **S**: Mines разделен на MineFileManager, MineRepository ✅
- [x] **I**: MineConfig с Builder pattern ✅
- [x] **D**: Repository pattern для доступа к данным ✅
---
## 🟢 УЛУЧШЕНИЯ АРХИТЕКТУРЫ (Приоритет 3)
### Новая структура пакетов ✅
```
dev.loki.lomines/
├── LoMinesPlugin.java (≤120 строк)
├── command/
│ ├── AdminCommands.java
│ ├── PlayerCommands.java
│ ├── StatsCommands.java
│ └── MaskCommands.java
├── core/
│ ├── Mine.java
│ ├── Mines.java
│ ├── MineTicker.java
│ └── service/
│ ├── MineFileManager.java
│ ├── MineRepository.java
│ └── MaskScanService.java
├── data/
│ ├── config/
│ │ ├── ConfigLoader.java
│ │ ├── ConfigValidator.java
│ │ ├── ConfigSerializer.java
│ │ ├── MineConfig.java
│ │ └── parser/
│ │ ├── ConfigParser.java
│ │ └── ConfigParseException.java
│ ├── reward/
│ │ ├── Reward.java
│ │ ├── RewardParser.java
│ │ └── RewardItemParser.java
│ └── stats/
│ ├── StatsManager.java
│ ├── PlayerStats.java
│ ├── Leaderboard.java
│ └── LeaderboardEntry.java
├── handler/
│ ├── ActionBarHandler.java
│ ├── MineBlockHandler.java
│ ├── MineResetHandler.java
│ └── MineRewardHandler.java
├── util/
│ ├── ValidationUtils.java
│ ├── ErrorHandler.java
│ ├── MessageFormatter.java
│ ├── format/
│ │ ├── ChunkUtils.java
│ │ └── TimeFormatter.java
│ ├── location/
│ │ ├── BlockKeys.java
│ │ ├── Cuboid.java
│ │ └── LocationParser.java
│ └── selection/
│ ├── MaskScanner.java
│ ├── Selection.java
│ └── SelectionManager.java
└── wand/
├── GroupWandItem.java
├── GroupWandManager.java
└── GroupWandSession.java
```
---
## 📦 Git и Инфраструктура
### Git Setup ✅
- [x] Инициализировать git репозиторий ✅
- [x] Обновить `.gitignore` ✅
- [x] Создать начальный коммит ✅
- [x] Рефакторинг пакетов com.loki -> dev.loki ✅
- [ ] Восстановить Gradle wrapper
### Правила коммитов
```
feat: новая функциональность
fix: исправление бага
refactor: рефакторинг без изменения функциональности
docs: изменения в документации
test: добавление/изменение тестов
chore: обновление зависимостей, конфигурации
```
---
## 🎯 Что делать дальше
### Приоритет 1: GUI редакторы (неделя 1)
1. [ ] Создать `MineEditGui` — редактирование существующей шахты
2. [ ] Создать `BlockConfigGui` — настройка блоков через GUI
3. [ ] Создать `RewardConfigGui` — настройка наград через GUI
4. [ ] Создать `ResetConfigGui` — настройка таймеров сброса
5. [ ] Создать `TeleportConfigGui` — настройка телепортации
### Приоритет 2: Интеграции (неделя 2)
1. [ ] Включить PlaceholderAPI — расширение для PAPI
2. [ ] Включить Oraxen — поддержка кастомных блоков
3. [ ] Включить ItemsAdder — поддержка кастомных блоков
4. [ ] Добавить Vault — экономика для наград
### Приоритет 3: Фичи (неделя 3)
1. [ ] Добавить `/lm info <mine>` — детальная информация о шахте
2. [ ] Добавить `/lm tp <mine>` — телепортация в шахту
3. [ ] Добавить `/lm copy <from> <to>` — копирование конфигурации
4. [ ] Добавить метрики — `/lm metrics` для админов
---
## 📝 Правила разработки
### Лимиты строк
- **Главный класс плагина:** ≤100 строк
- **Обычные классы:** ≤200 строк
- **Утилиты:** ≤150 строк
- **Тесты:** ≤300 строк
### Принципы
- **KISS:** Один метод = одна задача, вложенность ≤3 уровней
- **DRY:** Дублирование кода ≥3 раз → вынести в метод/класс
- **SOLID:** Каждый класс = одна ответственность
- **YAGNI:** Не добавлять функциональность "на будущее"
### Code Review Checklist
- [ ] Класс ≤200 строк (главный ≤100)
- [ ] Метод ≤30 строк
- [ ] Вложенность ≤3 уровней
- [ ] Нет дублирования кода
- [ ] Понятные имена переменных/методов
- [ ] Есть JavaDoc для публичных методов
- [ ] Есть тесты для новой функциональности
---
## 📊 Метрики качества
### Текущие
- Средний размер класса: **~180 строк** ✅
- Классов >200 строк: **~10%** ✅
- Дублирование кода: **<5%** ✅
- Покрытие тестами: **~50%** ⚠️
### Целевые
- Средний размер класса: **≤150 строк**
- Классов >200 строк: **0%**
- Дублирование кода: **<5%**
- Покрытие тестами: **≥70%**
---
## 🐛 Технический долг - РЕШЕНО
### 🔴 Критический - РЕШЕНО ✅
- [x] `ConfigLoader` — разбито на 4 класса ✅
- [x] `MineCommands` — разбито на 4 класса ✅
- [x] Импорты ConfigParseException в тестах — исправлено ✅
### 🟡 Средний
- [ ] Смешанные типы блоков в одной шахте
- [ ] `mine.blocks = mine.volume` выставляется до завершения fill
### 🟢 Низкий
- [ ] `ChunkUtils` — хрупкий `Class.forName` для Paper
- [ ] `SelectionWand.drawLine` — спам частиц для высоких шахт
---
## 🎯 Следующие шаги
1. ✅ Рефакторинг пакетов com.loki -> dev.loki (2026-05-31)
2. ✅ Исправление импортов в тестах (2026-05-31)
3. [ ] Восстановить Gradle wrapper
4. [ ] GUI редакторы для шахт
5. [ ] Включить интеграции (PlaceholderAPI, Oraxen, ItemsAdder)
6. [ ] Добавить новые фичи (/lm info, /lm tp, /lm copy)
7. [ ] Увеличить покрытие тестами до 70%
---
*Последнее обновление: 2026-05-31
Рефакторинг пакетов завершен: com.loki -> dev.loki*