- Updated LoLib dependency to version 3.0.0 in build.gradle.kts - Added HikariCP and MySQL connector dependencies for improved database handling - Enhanced jar minimization process to exclude JDBC pool and driver - Refactored configuration management by introducing ConfigAccessor and ConfigLoader for better file handling and validation - Removed deprecated GenerationOptions class and integrated its functionality into the new structure - Improved command error handling and added cooldown hints for admin commands
4.2 KiB
4.2 KiB
LoParkour — TODO
Обновлено: 2026-04-02. Длинный хвост старых аудитов и дублей: ARCHIVE_TODO.md.
Легенда
- 🔴 Критично — баг/краш/безопасность
- 🟡 Важно — заявлено, но не работает / серьёзные проблемы
- 🟢 Планово — улучшение / техдолг
- ✅ Готово
Главный план (стабилизация)
Консолидировано после обхода: меню/util, LoParkour, LoParkourCommand, join/teleport, SessionStateManager, Island.build(), Locales, LoLib 3.x.
P0 — блокер загрузки или геймплей
| # | Задача | Статус |
|---|---|---|
| 1 | LoLib 3.x в classpath | ✅ build.gradle.kts → libs/lolib-3.0.0.jar |
| 2 | GeneratorCleanup — хвост только сзади по индексу в history |
✅ |
| 3 | Потокобезопасность history |
✅ synchronizedList, снимок при полном reset() |
P1 — важно
| # | Задача | Статус |
|---|---|---|
| 4 | Хотбар: клик по предмету | ✅ isSimilar в restriction listener |
| 5 | SQL readPlayer на корректном потоке |
✅ |
P2 — проверить после P0–P1
| # | Задача | Статус |
|---|---|---|
| 6 | LifecycleTickManager / cleanup / time UI |
✅ |
| 7 | Scoring в воздухе | ✅ документировано (стояние на блоке) |
Контекст (не в «критичном» списке)
- Порядок
generateFirst/ телепорт изIsland.build()— ок при неизменённом порядке вызовов. history.contains(Block)— Bukkit сравнивает по миру и координатам.InventoryType.CHESTв GUI — при странных кейсах проверить тип инвентаря.
Порядок работ (регрессия)
./gradlew build, старт безLinkageError.- Ручной прогон паркура: счёт, меню, scoreboard, режимы.
Follow-up (сделано в коде)
- Leaderboard: sync-таймер; итерация/снимки без гонок с
synchronizedMap. - AdminCommandHandler: cooldown 2.5 с на
forcejoin,forceleave,reset,recoverinventory; при блокировке — сообщение. - SQLConnectionManager: HikariCP +
mysql-connector-jв shadow. - SQL password: если задана непустая
LOPARKOUR_SQL_PASSWORD, она перекрываетconfig.yml→sql.password. - World: валидация имени; папка через
getWorldContainer(); безопасное удаление; кик только если мир не null. - LoParkourCommand:
MultiModeдля join к другу; tab-complete; leaderboard без хака; «too many args». - PlayerCommandHandler:
/parkour leaderboardбез второго аргумента открывает меню лидербордов. - RandomStyle / ElytraGenerator: защита от пустых списков.
- InventoryData: новые сохранения в YAML; legacy binary читается один раз при миграции.
DuelMode
Отдельная крупная фича (не багфикс): PvP/дуэльный режим из старых заметок — проектировать и оценивать отдельно (сессии, арена, матчмейкинг, награды). Детали и старые идеи см. в ARCHIVE_TODO.md (поиск по «Duel» / режимам).
Чек-лист перед релизом
./gradlew build- Старт сервера,
/parkour, меню, один полный забег - SQL: при проде выставить
LOPARKOUR_SQL_PASSWORDна хосте - Проверить миграцию старых
.datинвентарей при первом заходе игрока