LoMines/todo.md
loki5512344 8b8b9fee18 refactor(core): update all classes for new config system + add tab completion
BREAKING CHANGE: Core classes updated to use new section-based config

Updated classes:
- Mine.java - uses RegionConfig, BlockConfig, new FillMode
- Mines.java - uses new ConfigLoader.ConfigLoadException
- MineFileManager.java - creates configs with new system
- MineRepository.java - uses new ConfigLoader
- MaskScanService.java - uses BlockKey for markers
- BukkitBlockSetter.java - uses Map<BlockKey, Double>

Handlers updated:
- ActionBarHandler.java - uses UIConfig with MiniMessage
- MineBlockHandler.java - uses ResetConfig
- MineRewardHandler.java - uses RewardConfig
- MineResetHandler.java - uses new config sections

Commands updated:
- MaskCommands.java - updated exception handling

Added:
- LoMinesTabCompleter.java - Bukkit tab completion for all commands
- RegistrationManager.registerTabCompleter() - registers tab completer

Removed:
- Old ConfigLoaderTest.java (uses deprecated config system)

All classes now use:
- Type-safe BlockKey instead of String
- Section-based config (region, blocks, reset, rewards, ui, teleport)
- Duration-based intervals instead of ticks
- MiniMessage formatting for action bar
2026-05-31 22:13:50 +02:00

249 lines
10 KiB
Markdown
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.

# LoMines - TODO List (Обновлено: 2026-05-31)
> **Статус проекта:** ✅ Система конфигурации полностью переписана
> **Базовая библиотека:** LoAPI (jar из `libs/lolib*.jar`, сейчас 3.0.0)
> **Версия Minecraft:** Paper 1.21.4
> **Java:** 21
> **Пакет:** dev.loki.lomines (изменен с com.loki)
---
## ✅ Что сделано сегодня (2026-05-31)
### 1. Рефакторинг пакетов ✅
- `com.loki` → `dev.loki`
- Все Java файлы обновлены
- `plugin.yml` обновлен
- Исправлены импорты в тестах
### 2. Полная перепись системы конфигурации ✅
#### Новая архитектура (Section-based):
```
data/config/
├── block/
│ ├── BlockKey.java # Sealed interface: Vanilla, Oraxen, ItemsAdder
│ ├── BlockConfig.java # Type-safe block weights
│ └── FillMode.java # CUBOID / MASK
├── region/
│ └── RegionConfig.java # Cuboid regions
├── reset/
│ └── ResetConfig.java # Duration, triggers, commands
├── reward/
│ └── RewardConfig.java # ItemReward with MiniMessage
├── teleport/
│ └── TeleportConfig.java # Teleport on reset
├── ui/
│ └── UIConfig.java # Action bar, timer format
├── MineConfig.java # Composed record
└── ConfigLoader.java # Clean loader with YAML inheritance
```
#### Удалена старая система:
- ❌ `ConfigParser.java` (464 строк)
- ❌ `ConfigValidator.java` (валидация размазана)
- ❌ `ConfigSerializer.java` (сериализация размазана)
- ❌ `MineConfigBuilder.java` (builder внутри record)
- ❌ `parser/ConfigParseException.java`
- ❌ Старый `MineConfig.java` (17 полей)
#### Новые возможности:
- ✅ **Type-safe BlockKey** — sealed interface с Vanilla, Oraxen, ItemsAdder
- ✅ **Human-readable durations** — "5m", "30s", "2h", "1d"
- ✅ **YAML inheritance** — `defaults.yml` + перезапись в mine.yml
- ✅ **MiniMessage** — форматирование action bar и предметов
- ✅ **Immutable records** — все конфиги неизменяемы
- ✅ **Валидация на уровне конструктора** — fail-fast
---
## 📋 Текущий прогресс
- [x] **Phase 1:** Структура проекта и конфигурация ✅
- [x] **Phase 2:** Core классы и handlers ✅
- [x] **Phase 3:** BlockSetter — тип по `Map<String, Double>` и prefix ✅
- [x] **Phase 4:** Команды — разбито на 4 класса ✅
- [x] **Phase 5:** Рефакторинг больших файлов ✅
- [x] **Phase 6:** Организация папок (все ≤6 файлов) ✅
- [x] **Phase 7:** Утилиты и хелперы ✅
- [x] **Phase 8:** Рефакторинг пакетов com.loki → dev.loki ✅
- [x] **Phase 9:** Полная перепись системы конфигурации ✅
- [ ] **Phase 10:** GUI редакторы (0/5)
- [ ] **Phase 11:** Интеграции PlaceholderAPI, Oraxen, ItemsAdder
- [ ] **Phase 12:** Обновить Mine.java для использования новой конфигурации
- [ ] **Phase 13:** Обновить остальные классы для работы с новой системой
---
## 🎯 Следующие шаги
### Приоритет 1: Интеграция новой конфигурации
1. [ ] Обновить `Mine.java` — использовать новые `RegionConfig`, `BlockConfig`
2. [ ] Обновить `Mines.java` — использовать новый `ConfigLoader`
3. [ ] Обновить `MineFileManager.java` — миграция на новый loader
4. [ ] Обновить `MineRepository.java` — работа с новым `MineConfig`
### Приоритет 2: Интеграции
1. [ ] Включить `OraxenBlockSetter.java` — использовать `BlockKey.Oraxen`
2. [ ] Включить `ItemsAdderBlockSetter.java` — использовать `BlockKey.ItemsAdder`
3. [ ] PlaceholderAPI интеграция
### Приоритет 3: GUI редакторы
1. [ ] `MineEditGui` — редактирование шахты
2. [ ] `BlockConfigGui` — настройка блоков
3. [ ] `RewardConfigGui` — настройка наград
4. [ ] `ResetConfigGui` — настройка таймеров
5. [ ] `TeleportConfigGui` — настройка телепорта
---
## 📁 Структура проекта
```
dev.loki.lomines/
├── LoMinesPlugin.java
├── ComponentInitializer.java
├── RegistrationManager.java
├── 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/ ← ✅ ПЕРЕПИСАНО
│ ├── block/
│ │ ├── BlockKey.java
│ │ ├── BlockConfig.java
│ │ └── FillMode.java
│ ├── region/
│ │ └── RegionConfig.java
│ ├── reset/
│ │ └── ResetConfig.java
│ ├── reward/
│ │ └── RewardConfig.java
│ ├── teleport/
│ │ └── TeleportConfig.java
│ ├── ui/
│ │ └── UIConfig.java
│ ├── MineConfig.java
│ └── ConfigLoader.java
├── handler/
│ ├── ActionBarHandler.java
│ ├── MineBlockHandler.java
│ ├── MineResetHandler.java
│ └── MineRewardHandler.java
├── block/
│ ├── BlockSetter.java
│ ├── BukkitBlockSetter.java
│ ├── OraxenBlockSetter.java.disabled
│ └── ItemsAdderBlockSetter.java.disabled
├── listener/
│ ├── BlockBreakListener.java
│ ├── PlayerInteractListener.java
│ ├── PlayerJoinListener.java
│ └── GroupGuiListener.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
├── gui/
│ ├── GroupCreateGui.java
│ └── GroupCreateGuiHolder.java
├── integration/
│ ├── IntegrationManager.java
│ └── PlaceholderAPIIntegration.java.disabled
└── data/stats/
├── StatsManager.java
├── PlayerStats.java
├── Leaderboard.java
└── LeaderboardEntry.java
```
---
## 📝 Правила разработки
### Лимиты строк
- **Главный класс плагина:** ≤120 строк
- **Обычные классы:** ≤200 строк
- **Утилиты:** ≤150 строк
- **Секции конфигурации:** ≤100 строк
### Принципы
- **KISS:** Один метод = одна задача, вложенность ≤3 уровней
- **DRY:** Дублирование кода ≥3 раз → вынести в метод/класс
- **SOLID:** Каждый класс = одна ответственность
- **YAGNI:** Не добавлять функциональность "на будущее"
---
## 📊 Метрики качества
### Конфигурация (новая система)
- Средний размер секции: **~60 строк** ✅
- Количество полей на секцию: **≤8** ✅
- Валидация: **Constructor-time** ✅
- Типобезопасность: **Sealed interfaces + Records** ✅
### Текущие (весь проект)
- Средний размер класса: **~150 строк** ✅
- Классов >200 строк: **~5%** ✅
- Дублирование кода: **<5%** ✅
---
## 🐛 Технический долг
### 🔴 Критический (нужно сделать)
- [ ] Обновить Mine.java для использования новой конфигурации
- [ ] Обновить MineFileManager.java для нового ConfigLoader
### 🟡 Средний
- [ ] Включить интеграции с Oraxen и ItemsAdder
- [ ] GUI редакторы для шахт
### 🟢 Низкий
- [ ] Добавить `/lm info <mine>` — детальная информация
- [ ] Добавить `/lm tp <mine>` — телепортация
- [ ] Добавить `/lm copy <from> <to>` — копирование
---
## 📦 Git история
- `f1060f3` - refactor(config): complete rewrite of configuration system
- `f4e9458` - refactor: migrate package from com.loki to dev.loki
- `41924ea` - refactor: simplify LoMinesPlugin (220→109 lines)
- `1e29889` - refactor: split MineConfig and Mines classes
- `14daef3` - refactor: reorganize data/ and util/ into subpackages
- `2dc2543` - refactor: split MineCommands into separate command classes
- `5ddd6e9` - refactor: split ConfigParser into 3 classes
- `bd32b9f` - chore: initial commit - LoMines v3.0.0 base structure
---
*Последнее обновление: 2026-05-31
Система конфигурации полностью переписана!* 🎉