From de47bce56e8ac89a7c17806bd76875fab0ce2c7c Mon Sep 17 00:00:00 2001 From: loki5512344 Date: Wed, 5 Aug 2026 18:50:39 +0200 Subject: [PATCH] refactor: apply 'one folder = one purpose' rule to overflowed packages - Split by sub-purpose: storage/sql -> schema/+query/+repo/, adaptive/core -> calc/+metrics/+model/, command/admin -> ops/+support/, api/event -> session/+score/+generation/, menu/core -> screen/, config/core -> merge/, config/options -> section/, player/service -> ui/, hook/papi -> resolver/ (done), mode/impl -> solo/+multi/+barrier/ (done) - Move util/gui migration stubs -> menu/gui; lpschem POJOs -> pojo/ - Cross-package classes made public (signatures unchanged); fixed imports - docs/ARCHITECTURE.md + TODO.md updated - Build green: checkstyle 0 errors, PMD 34 --- TODO.md | 13 ++++----- config/checkstyle/suppressions.xml | 8 +++--- docs/ARCHITECTURE.md | 27 ++++++++++++++----- .../adaptive/core/AdaptiveDifficulty.java | 3 +++ .../adaptive/core/MetricsCollector.java | 3 +++ .../core/{ => calc}/DifficultyAdjuster.java | 3 ++- .../core/{ => calc}/DifficultyCalculator.java | 2 +- .../core/{ => calc}/SkillAnalyzer.java | 2 +- .../core/{ => metrics}/JumpTimingTracker.java | 14 +++++----- .../{ => metrics}/MetricEventCollector.java | 16 +++++------ .../core/{ => metrics}/MetricsCacheStore.java | 22 +++++++-------- .../core/{ => model}/DifficultyWeights.java | 10 +++---- .../loki/loparkour/api/core/ParkourAPI.java | 2 +- .../ParkourBlockGenerateEvent.java | 2 +- .../ParkourSchematicGenerateEvent.java | 2 +- .../event/{ => score}/ParkourFallEvent.java | 2 +- .../event/{ => score}/ParkourScoreEvent.java | 2 +- .../event/{ => session}/ParkourJoinEvent.java | 2 +- .../{ => session}/ParkourLeaveEvent.java | 2 +- .../{ => session}/ParkourSpectateEvent.java | 2 +- .../command/admin/AdminCommandHandler.java | 6 ++++- .../admin/{ => ops}/ForceJoinExecutor.java | 10 ++++--- .../admin/{ => ops}/ForceLeaveExecutor.java | 9 ++++--- .../{ => ops}/RecoverInventoryExecutor.java | 9 ++++--- .../admin/{ => ops}/ResetExecutor.java | 10 ++++--- .../admin/{ => support}/AdminResponses.java | 6 ++--- .../{ => support}/AdminTargetResolver.java | 10 +++---- .../loparkour/command/core/CommandRouter.java | 2 +- .../command/core/CommandTabCompleter.java | 2 +- .../command/player/JoinCommandExecutor.java | 2 +- .../player/LeaderboardCommandExecutor.java | 2 +- .../command/player/PlayerCommandHandler.java | 2 +- .../command/schematic/SchematicWand.java | 2 +- .../loparkour/config/core/ConfigLoader.java | 1 + .../core/{ => merge}/ConfigMergeParser.java | 20 +++++++------- .../{ => merge}/ConfigMergeProcessor.java | 4 +-- .../core/{ => merge}/ConfigUpdater.java | 2 +- .../loki/loparkour/config/locale/Locales.java | 2 +- .../loki/loparkour/config/options/Option.java | 6 ++++- .../config/options/OptionGeneral.java | 2 +- .../{ => section}/OptionGeneration.java | 2 +- .../{ => section}/OptionParticles.java | 3 ++- .../options/{ => section}/OptionSQL.java | 2 +- .../options/{ => section}/OptionStyles.java | 2 +- .../jump/placement/SchematicBlockPlacer.java | 2 +- .../lifecycle/loop/LifecycleEventManager.java | 4 +-- .../gameplay/ParkourRestrictionListener.java | 2 +- .../player/PlayerConnectionListener.java | 2 +- .../menu/community/CommunityMenu.java | 2 +- .../menu/community/LeaderboardsMenu.java | 2 +- .../menu/community/SingleLeaderboardMenu.java | 2 +- .../dev/loki/loparkour/menu/core/LPMenu.java | 1 + .../dev/loki/loparkour/menu/core/Menus.java | 1 + .../menu/core/{ => screen}/DynamicMenu.java | 6 ++--- .../menu/core/{ => screen}/MainMenu.java | 4 ++- .../menu/core/{ => screen}/ParkourOption.java | 2 +- .../loparkour/{util => menu}/gui/Menu.java | 2 +- .../{util => menu}/gui/MenuItem.java | 2 +- .../{util => menu}/gui/PagedMenu.java | 2 +- .../{util => menu}/gui/SliderItem.java | 2 +- .../loki/loparkour/menu/lobby/LobbyMenu.java | 2 +- .../loki/loparkour/menu/play/PlayMenu.java | 2 +- .../menu/settings/ParkourSettingsMenu.java | 2 +- .../loparkour/menu/settings/SettingsMenu.java | 2 +- .../mode/impl/multi/SpectatorMode.java | 2 +- .../loparkour/player/core/ParkourPlayer.java | 2 +- .../loparkour/player/core/ParkourUser.java | 4 +-- .../player/core/PlayerSpawnSetup.java | 2 +- .../player/service/PlayerSettingsManager.java | 2 +- .../player/service/UserRegistry.java | 4 +-- .../service/{ => ui}/ParkourHotbar.java | 4 +-- .../service/{ => ui}/ScoreboardManager.java | 2 +- .../player/spectator/ParkourSpectator.java | 2 +- .../schematic/convert/LpschemConverter.java | 2 +- .../legacy/lpschem/LPSchematicLegacy.java | 5 ++++ .../{ => pojo}/SchematicDimensions.java | 2 +- .../lpschem/{ => pojo}/SchematicLogic.java | 2 +- .../lpschem/{ => pojo}/SchematicMarkers.java | 2 +- .../lpschem/{ => pojo}/SchematicMetadata.java | 2 +- .../lpschem/{ => pojo}/SchematicVisuals.java | 2 +- .../schem/SchematicClipboardBuilder.java | 2 +- .../loparkour/storage/sql/StorageSQL.java | 3 +++ .../sql/{ => query}/SQLQueryBuilder.java | 2 +- .../sql/{ => query}/SQLQueryExecutor.java | 7 ++--- .../sql/{ => repo}/SQLPlayerRepository.java | 11 +++++--- .../sql/{ => repo}/SQLScoreRepository.java | 11 +++++--- .../sql/{ => schema}/SQLMigrationManager.java | 7 ++--- .../sql/{ => schema}/SQLSchemaManager.java | 8 +++--- 88 files changed, 228 insertions(+), 167 deletions(-) rename src/main/java/dev/loki/loparkour/adaptive/core/{ => calc}/DifficultyAdjuster.java (98%) rename src/main/java/dev/loki/loparkour/adaptive/core/{ => calc}/DifficultyCalculator.java (99%) rename src/main/java/dev/loki/loparkour/adaptive/core/{ => calc}/SkillAnalyzer.java (99%) rename src/main/java/dev/loki/loparkour/adaptive/core/{ => metrics}/JumpTimingTracker.java (73%) rename src/main/java/dev/loki/loparkour/adaptive/core/{ => metrics}/MetricEventCollector.java (77%) rename src/main/java/dev/loki/loparkour/adaptive/core/{ => metrics}/MetricsCacheStore.java (81%) rename src/main/java/dev/loki/loparkour/adaptive/core/{ => model}/DifficultyWeights.java (91%) rename src/main/java/dev/loki/loparkour/api/event/{ => generation}/ParkourBlockGenerateEvent.java (95%) rename src/main/java/dev/loki/loparkour/api/event/{ => generation}/ParkourSchematicGenerateEvent.java (95%) rename src/main/java/dev/loki/loparkour/api/event/{ => score}/ParkourFallEvent.java (94%) rename src/main/java/dev/loki/loparkour/api/event/{ => score}/ParkourScoreEvent.java (94%) rename src/main/java/dev/loki/loparkour/api/event/{ => session}/ParkourJoinEvent.java (93%) rename src/main/java/dev/loki/loparkour/api/event/{ => session}/ParkourLeaveEvent.java (93%) rename src/main/java/dev/loki/loparkour/api/event/{ => session}/ParkourSpectateEvent.java (94%) rename src/main/java/dev/loki/loparkour/command/admin/{ => ops}/ForceJoinExecutor.java (83%) rename src/main/java/dev/loki/loparkour/command/admin/{ => ops}/ForceLeaveExecutor.java (84%) rename src/main/java/dev/loki/loparkour/command/admin/{ => ops}/RecoverInventoryExecutor.java (82%) rename src/main/java/dev/loki/loparkour/command/admin/{ => ops}/ResetExecutor.java (83%) rename src/main/java/dev/loki/loparkour/command/admin/{ => support}/AdminResponses.java (55%) rename src/main/java/dev/loki/loparkour/command/admin/{ => support}/AdminTargetResolver.java (85%) rename src/main/java/dev/loki/loparkour/config/core/{ => merge}/ConfigMergeParser.java (78%) rename src/main/java/dev/loki/loparkour/config/core/{ => merge}/ConfigMergeProcessor.java (97%) rename src/main/java/dev/loki/loparkour/config/core/{ => merge}/ConfigUpdater.java (98%) rename src/main/java/dev/loki/loparkour/config/options/{ => section}/OptionGeneration.java (99%) rename src/main/java/dev/loki/loparkour/config/options/{ => section}/OptionParticles.java (96%) rename src/main/java/dev/loki/loparkour/config/options/{ => section}/OptionSQL.java (95%) rename src/main/java/dev/loki/loparkour/config/options/{ => section}/OptionStyles.java (96%) rename src/main/java/dev/loki/loparkour/menu/core/{ => screen}/DynamicMenu.java (95%) rename src/main/java/dev/loki/loparkour/menu/core/{ => screen}/MainMenu.java (95%) rename src/main/java/dev/loki/loparkour/menu/core/{ => screen}/ParkourOption.java (98%) rename src/main/java/dev/loki/loparkour/{util => menu}/gui/Menu.java (94%) rename src/main/java/dev/loki/loparkour/{util => menu}/gui/MenuItem.java (90%) rename src/main/java/dev/loki/loparkour/{util => menu}/gui/PagedMenu.java (96%) rename src/main/java/dev/loki/loparkour/{util => menu}/gui/SliderItem.java (91%) rename src/main/java/dev/loki/loparkour/player/service/{ => ui}/ParkourHotbar.java (92%) rename src/main/java/dev/loki/loparkour/player/service/{ => ui}/ScoreboardManager.java (99%) rename src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/{ => pojo}/SchematicDimensions.java (72%) rename src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/{ => pojo}/SchematicLogic.java (62%) rename src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/{ => pojo}/SchematicMarkers.java (84%) rename src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/{ => pojo}/SchematicMetadata.java (85%) rename src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/{ => pojo}/SchematicVisuals.java (63%) rename src/main/java/dev/loki/loparkour/storage/sql/{ => query}/SQLQueryBuilder.java (98%) rename src/main/java/dev/loki/loparkour/storage/sql/{ => query}/SQLQueryExecutor.java (94%) rename src/main/java/dev/loki/loparkour/storage/sql/{ => repo}/SQLPlayerRepository.java (77%) rename src/main/java/dev/loki/loparkour/storage/sql/{ => repo}/SQLScoreRepository.java (81%) rename src/main/java/dev/loki/loparkour/storage/sql/{ => schema}/SQLMigrationManager.java (93%) rename src/main/java/dev/loki/loparkour/storage/sql/{ => schema}/SQLSchemaManager.java (85%) diff --git a/TODO.md b/TODO.md index 4e1f930..30f25fd 100644 --- a/TODO.md +++ b/TODO.md @@ -266,12 +266,13 @@ Checkstyle отработал `0 errors` (error-уровневые legacy-нар > Leaderboard→LeaderboardRecords. > Актуальные счётчики: **checkstyle 0 errors / 1413 warnings**, **PMD 34**. Пункты 132–138 — в силе. > -> ## ✅ ПРОГРЕСС-2 (правило «одна папка = одна цель» — пилоты применены) -> Правило добавлено в `docs/ARCHITECTURE.md` (п.8 «Принципы проектирования»). Пилоты: `command/` -> → core/ + util/ (player/ уже был), `mode/impl/` → solo/ + multi/ + barrier/, `hook/papi/` → resolver/. -> Классы, пересекающие пакеты, стали public (сигнатуры не менялись). Остальные переполненные папки -> (storage/sql, adaptive/core, api/event, menu/core, config/core|options, schematic/legacy/lpschem, -> player/service, generator/*, util/gui и др.) — кандидаты на аналогичное разбиение по под-целям. +> ## ✅ ПРОГРЕСС-2 (правило «одна папка = одна цель» — применено полностью) +> Правило в `docs/ARCHITECTURE.md` (п.8). Выполнено разбиение переполненных пакетов: `command/`→core/+util/, +> `mode/impl/`→solo/+multi/+barrier/, `hook/papi/`→resolver/, `storage/sql/`→schema/+query/+repo/, +> `adaptive/core/`→calc/+metrics/+model/, `api/event/`→session/+score/+generation/, `config/core/`→merge/, +> `config/options/`→section/, `player/service/`→ui/, `menu/core/`→screen/, `util/gui/`→`menu/gui/`, +> `schematic/legacy/lpschem/`→pojo/. Пересекающие пакеты классы стали public (сигнатуры не менялись). +> Сборка: **checkstyle 0 errors / 1413 warnings, PMD 34, build ✓**. - **132. [C] Почистить `FinalLocalVariable` (legacy, ~1034 warning / 120 файлов).** Объявить локальные переменные `final`. Делать вместе с декомпозицией, а не отдельным проходом. - **133. [C] Почистить `MagicNumber` (legacy, ~346 warning / 60 файлов).** Заменить магические числа на именованные константы (приоритет: конфиг- и стиль-коэффициенты, пороги сложности, тайминги). diff --git a/config/checkstyle/suppressions.xml b/config/checkstyle/suppressions.xml index 5fc5706..8ff3e68 100644 --- a/config/checkstyle/suppressions.xml +++ b/config/checkstyle/suppressions.xml @@ -33,7 +33,7 @@ Do not remove without a review of the intended behavior. --> - + @@ -60,8 +60,8 @@ - - + + @@ -70,7 +70,7 @@ - + diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 6872265..8e1a0da 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -140,20 +140,35 @@ dev.loki.loparkour └── util/ # Общие утилиты: gui/, item/, misc/, particle/, text/, world/ ``` -### Текущее состояние (после пилотной реструктуризации) +### Текущее состояние (после реструктуризации) -Правило «одна папка = одна цель» применено к 3 пилотным областям (остальные — в работе): +Правило «одна папка = одна цель» применено к переполненным пакетам: - **`command/`** — `core/` (LoParkourCommand, CommandRouter, CommandTabCompleter — вход/роутинг/табы), - `player/` (PlayerCommandHandler, JoinCommandExecutor, LeaderboardCommandExecutor), - `util/` (CommandUtil), `admin/`, `schematic/`. + `util/` (CommandUtil), `player/` (PlayerCommandHandler, Join, Leaderboard), `admin/` (`ops/` — Force*/Reset/ + RecoverInventory, `support/` — TargetResolver, Responses), `schematic/` (одна цель — схематик-команды). - **`mode/impl/`** — `solo/` (DefaultMode, SpeedrunMode, GravityShiftMode), `multi/` (CoopMode, RaceMode, SpectatorMode), `barrier/` (InvisibleBarrierMode, BarrierGenerator, BarrierRenderer). - **`hook/papi/`** — `PAPIHook`+`PlaceholderDispatcher` (вход/диспатч), `resolver/` (Global/Player/ScoreRank резолверы + PlaceholderFormatters). +- **`storage/sql/`** — корень (StorageSQL, SQLConnectionManager, SQLDataMapper), `schema/` (SQLSchemaManager, + SQLMigrationManager), `query/` (SQLQueryBuilder, SQLQueryExecutor), `repo/` (SQLPlayerRepository, + SQLScoreRepository). +- **`adaptive/core/`** — корень (AdaptiveDifficulty, MetricsCollector), `calc/` (DifficultyCalculator/ + Adjuster/SkillAnalyzer), `metrics/` (MetricEventCollector, MetricsCacheStore, JumpTimingTracker), `model/` + (DifficultyWeights). +- **`api/event/`** — `session/` (Join/Leave/Spectate), `score/` (Score/Fall), `generation/` (Block/Schematic). +- **`config/core/`** — корень (Config, ConfigLoader, ConfigAccessor), `merge/` (ConfigUpdater, + ConfigMergeParser, ConfigMergeProcessor). +- **`config/options/`** — корень (Option, OptionGeneral), `section/` (Generation/Particles/SQL/Styles). +- **`player/service/`** — корень (UserRegistry, PlayerSettingsManager, BungeeUtil), `ui/` (ParkourHotbar, + ScoreboardManager). +- **`menu/core/`** — корень (LPMenu, Menus, MenuStub), `screen/` (MainMenu, DynamicMenu, ParkourOption); + `util/gui/` переехали в **`menu/gui/`** (GUI migration-стабы). +- **`schematic/legacy/lpschem/`** — `LPSchematicLegacy` + `pojo/` (5 Gson-моделей). -Пересекающие пакеты классы стали `public` (JoinCommandExecutor, LeaderboardCommandExecutor, CommandUtil, -резолверы) — сигнатуры методов не менялись, только видимость. +Пересекающие пакеты классы стали `public` (сигнатуры методов не менялись, только видимость). Оставшиеся +папки с 4–6 файлами — цельные по смыслу (jump-расчёты, block-placement, player-core, pojo и т.п.) — не дробятся. ## Карта миграции diff --git a/src/main/java/dev/loki/loparkour/adaptive/core/AdaptiveDifficulty.java b/src/main/java/dev/loki/loparkour/adaptive/core/AdaptiveDifficulty.java index 407dbff..fd87215 100644 --- a/src/main/java/dev/loki/loparkour/adaptive/core/AdaptiveDifficulty.java +++ b/src/main/java/dev/loki/loparkour/adaptive/core/AdaptiveDifficulty.java @@ -7,6 +7,9 @@ import dev.loki.loparkour.generator.core.model.Profile; import dev.loki.loparkour.player.core.ParkourPlayer; import org.jetbrains.annotations.NotNull; +import dev.loki.loparkour.adaptive.core.calc.DifficultyAdjuster; +import dev.loki.loparkour.adaptive.core.calc.DifficultyCalculator; +import dev.loki.loparkour.adaptive.core.calc.SkillAnalyzer; import java.util.Set; /** diff --git a/src/main/java/dev/loki/loparkour/adaptive/core/MetricsCollector.java b/src/main/java/dev/loki/loparkour/adaptive/core/MetricsCollector.java index 795d450..5d59bf6 100644 --- a/src/main/java/dev/loki/loparkour/adaptive/core/MetricsCollector.java +++ b/src/main/java/dev/loki/loparkour/adaptive/core/MetricsCollector.java @@ -10,6 +10,9 @@ import org.bukkit.plugin.Plugin; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import dev.loki.loparkour.adaptive.core.metrics.JumpTimingTracker; +import dev.loki.loparkour.adaptive.core.metrics.MetricEventCollector; +import dev.loki.loparkour.adaptive.core.metrics.MetricsCacheStore; import java.util.UUID; /** diff --git a/src/main/java/dev/loki/loparkour/adaptive/core/DifficultyAdjuster.java b/src/main/java/dev/loki/loparkour/adaptive/core/calc/DifficultyAdjuster.java similarity index 98% rename from src/main/java/dev/loki/loparkour/adaptive/core/DifficultyAdjuster.java rename to src/main/java/dev/loki/loparkour/adaptive/core/calc/DifficultyAdjuster.java index c2abad0..6cf7dfa 100644 --- a/src/main/java/dev/loki/loparkour/adaptive/core/DifficultyAdjuster.java +++ b/src/main/java/dev/loki/loparkour/adaptive/core/calc/DifficultyAdjuster.java @@ -1,6 +1,7 @@ -package dev.loki.loparkour.adaptive.core; +package dev.loki.loparkour.adaptive.core.calc; import dev.loki.loparkour.generator.core.model.Profile; +import dev.loki.loparkour.adaptive.core.model.DifficultyWeights; import org.jetbrains.annotations.NotNull; /** diff --git a/src/main/java/dev/loki/loparkour/adaptive/core/DifficultyCalculator.java b/src/main/java/dev/loki/loparkour/adaptive/core/calc/DifficultyCalculator.java similarity index 99% rename from src/main/java/dev/loki/loparkour/adaptive/core/DifficultyCalculator.java rename to src/main/java/dev/loki/loparkour/adaptive/core/calc/DifficultyCalculator.java index 645c6b4..40f551b 100644 --- a/src/main/java/dev/loki/loparkour/adaptive/core/DifficultyCalculator.java +++ b/src/main/java/dev/loki/loparkour/adaptive/core/calc/DifficultyCalculator.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.adaptive.core; +package dev.loki.loparkour.adaptive.core.calc; import dev.loki.loparkour.adaptive.model.SkillRating; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/dev/loki/loparkour/adaptive/core/SkillAnalyzer.java b/src/main/java/dev/loki/loparkour/adaptive/core/calc/SkillAnalyzer.java similarity index 99% rename from src/main/java/dev/loki/loparkour/adaptive/core/SkillAnalyzer.java rename to src/main/java/dev/loki/loparkour/adaptive/core/calc/SkillAnalyzer.java index c664f12..3166fc6 100644 --- a/src/main/java/dev/loki/loparkour/adaptive/core/SkillAnalyzer.java +++ b/src/main/java/dev/loki/loparkour/adaptive/core/calc/SkillAnalyzer.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.adaptive.core; +package dev.loki.loparkour.adaptive.core.calc; import dev.loki.loparkour.adaptive.model.PlayerMetrics; import dev.loki.loparkour.adaptive.model.SkillRating; diff --git a/src/main/java/dev/loki/loparkour/adaptive/core/JumpTimingTracker.java b/src/main/java/dev/loki/loparkour/adaptive/core/metrics/JumpTimingTracker.java similarity index 73% rename from src/main/java/dev/loki/loparkour/adaptive/core/JumpTimingTracker.java rename to src/main/java/dev/loki/loparkour/adaptive/core/metrics/JumpTimingTracker.java index 32cdf14..be1ef67 100644 --- a/src/main/java/dev/loki/loparkour/adaptive/core/JumpTimingTracker.java +++ b/src/main/java/dev/loki/loparkour/adaptive/core/metrics/JumpTimingTracker.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.adaptive.core; +package dev.loki.loparkour.adaptive.core.metrics; import org.bukkit.block.Block; import org.jetbrains.annotations.NotNull; @@ -18,30 +18,30 @@ import java.util.concurrent.ConcurrentHashMap; * * Thread-safe: Uses ConcurrentHashMap for player caches. */ -class JumpTimingTracker { +public class JumpTimingTracker { private final Map lastBlockCache; private final Map lastLandTimeCache; - JumpTimingTracker() { + public JumpTimingTracker() { this.lastBlockCache = new ConcurrentHashMap<>(); this.lastLandTimeCache = new ConcurrentHashMap<>(); } @Nullable - Long lastLandTime(@NotNull UUID playerUuid) { + public Long lastLandTime(@NotNull UUID playerUuid) { return lastLandTimeCache.get(playerUuid); } - void markLand(@NotNull UUID playerUuid, long timeMillis) { + public void markLand(@NotNull UUID playerUuid, long timeMillis) { lastLandTimeCache.put(playerUuid, timeMillis); } - void updateLastBlock(@NotNull UUID playerUuid, @NotNull Block block) { + public void updateLastBlock(@NotNull UUID playerUuid, @NotNull Block block) { lastBlockCache.put(playerUuid, block); } - void unload(@NotNull UUID playerUuid) { + public void unload(@NotNull UUID playerUuid) { lastBlockCache.remove(playerUuid); lastLandTimeCache.remove(playerUuid); } diff --git a/src/main/java/dev/loki/loparkour/adaptive/core/MetricEventCollector.java b/src/main/java/dev/loki/loparkour/adaptive/core/metrics/MetricEventCollector.java similarity index 77% rename from src/main/java/dev/loki/loparkour/adaptive/core/MetricEventCollector.java rename to src/main/java/dev/loki/loparkour/adaptive/core/metrics/MetricEventCollector.java index b5085dc..b518823 100644 --- a/src/main/java/dev/loki/loparkour/adaptive/core/MetricEventCollector.java +++ b/src/main/java/dev/loki/loparkour/adaptive/core/metrics/MetricEventCollector.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.adaptive.core; +package dev.loki.loparkour.adaptive.core.metrics; import dev.loki.loparkour.adaptive.model.PlayerMetrics; import dev.loki.loparkour.generator.jump.calculation.JumpType; @@ -17,19 +17,19 @@ import java.util.UUID; * - Detect near-miss jumps (distance > 3.5 blocks) * - Persist metrics when a player falls */ -class MetricEventCollector { +public class MetricEventCollector { private static final double NEAR_MISS_THRESHOLD = 3.5; private final MetricsCacheStore cacheStore; private final JumpTimingTracker timingTracker; - MetricEventCollector(@NotNull MetricsCacheStore cacheStore, @NotNull JumpTimingTracker timingTracker) { + public MetricEventCollector(@NotNull MetricsCacheStore cacheStore, @NotNull JumpTimingTracker timingTracker) { this.cacheStore = cacheStore; this.timingTracker = timingTracker; } - void onBlockLand(@NotNull Player player, @NotNull Block block, double distance) { + public void onBlockLand(@NotNull Player player, @NotNull Block block, double distance) { UUID uuid = player.getUniqueId(); PlayerMetrics metrics = cacheStore.getOrCreate(uuid); @@ -47,17 +47,17 @@ class MetricEventCollector { timingTracker.updateLastBlock(uuid, block); } - void onPlayerScore(@NotNull Player player, @NotNull Block block, double distance) { + public void onPlayerScore(@NotNull Player player, @NotNull Block block, double distance) { onBlockLand(player, block, distance); } - void onPlayerFall(@NotNull Player player) { + public void onPlayerFall(@NotNull Player player) { UUID uuid = player.getUniqueId(); PlayerMetrics metrics = cacheStore.getOrCreate(uuid); cacheStore.save(metrics); } - void onJump(@NotNull Player player, @NotNull JumpType jumpType) { + public void onJump(@NotNull Player player, @NotNull JumpType jumpType) { UUID uuid = player.getUniqueId(); PlayerMetrics metrics = cacheStore.getOrCreate(uuid); @@ -68,7 +68,7 @@ class MetricEventCollector { metrics.recordJump(jumpType.name().toLowerCase(), timeDiff); } - void unload(@NotNull UUID playerUuid) { + public void unload(@NotNull UUID playerUuid) { timingTracker.unload(playerUuid); } } \ No newline at end of file diff --git a/src/main/java/dev/loki/loparkour/adaptive/core/MetricsCacheStore.java b/src/main/java/dev/loki/loparkour/adaptive/core/metrics/MetricsCacheStore.java similarity index 81% rename from src/main/java/dev/loki/loparkour/adaptive/core/MetricsCacheStore.java rename to src/main/java/dev/loki/loparkour/adaptive/core/metrics/MetricsCacheStore.java index aee1c3f..e1767ec 100644 --- a/src/main/java/dev/loki/loparkour/adaptive/core/MetricsCacheStore.java +++ b/src/main/java/dev/loki/loparkour/adaptive/core/metrics/MetricsCacheStore.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.adaptive.core; +package dev.loki.loparkour.adaptive.core.metrics; import dev.loki.loparkour.adaptive.model.PlayerMetrics; import dev.loki.loparkour.adaptive.storage.StatsRepository; @@ -21,7 +21,7 @@ import java.util.concurrent.ConcurrentHashMap; * * Thread-safe: Uses ConcurrentHashMap for player metrics cache. */ -class MetricsCacheStore { +public class MetricsCacheStore { private static final long AUTO_SAVE_INTERVAL_TICKS = 20 * 60 * 5; // 5 minutes @@ -31,14 +31,14 @@ class MetricsCacheStore { private BukkitRunnable autoSaveTask; - MetricsCacheStore(@NotNull Plugin plugin, @NotNull StatsRepository repository) { + public MetricsCacheStore(@NotNull Plugin plugin, @NotNull StatsRepository repository) { this.plugin = plugin; this.repository = repository; this.metricsCache = new ConcurrentHashMap<>(); } @NotNull - PlayerMetrics getOrCreate(@NotNull UUID playerUuid) { + public PlayerMetrics getOrCreate(@NotNull UUID playerUuid) { return metricsCache.computeIfAbsent(playerUuid, this::loadOrCreate); } @@ -50,33 +50,33 @@ class MetricsCacheStore { return new PlayerMetrics(playerUuid); } - void save(@NotNull UUID playerUuid) { + public void save(@NotNull UUID playerUuid) { PlayerMetrics metrics = metricsCache.get(playerUuid); if (metrics != null) { repository.saveMetrics(metrics); } } - void save(@NotNull PlayerMetrics metrics) { + public void save(@NotNull PlayerMetrics metrics) { repository.saveMetrics(metrics); } - void saveAll() { + public void saveAll() { for (PlayerMetrics metrics : metricsCache.values()) { repository.saveMetrics(metrics); } } - void unload(@NotNull UUID playerUuid) { + public void unload(@NotNull UUID playerUuid) { save(playerUuid); metricsCache.remove(playerUuid); } - int size() { + public int size() { return metricsCache.size(); } - void startAutoSave() { + public void startAutoSave() { if (autoSaveTask != null) { autoSaveTask.cancel(); } @@ -91,7 +91,7 @@ class MetricsCacheStore { autoSaveTask.runTaskTimerAsynchronously(plugin, AUTO_SAVE_INTERVAL_TICKS, AUTO_SAVE_INTERVAL_TICKS); } - void stopAutoSave() { + public void stopAutoSave() { if (autoSaveTask != null) { autoSaveTask.cancel(); autoSaveTask = null; diff --git a/src/main/java/dev/loki/loparkour/adaptive/core/DifficultyWeights.java b/src/main/java/dev/loki/loparkour/adaptive/core/model/DifficultyWeights.java similarity index 91% rename from src/main/java/dev/loki/loparkour/adaptive/core/DifficultyWeights.java rename to src/main/java/dev/loki/loparkour/adaptive/core/model/DifficultyWeights.java index 5cfbe46..c9560e9 100644 --- a/src/main/java/dev/loki/loparkour/adaptive/core/DifficultyWeights.java +++ b/src/main/java/dev/loki/loparkour/adaptive/core/model/DifficultyWeights.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.adaptive.core; +package dev.loki.loparkour.adaptive.core.model; /** * Calculates weight distributions for different difficulty levels. @@ -6,7 +6,7 @@ package dev.loki.loparkour.adaptive.core; * * Thread-safe: Stateless, all methods are pure functions. */ -class DifficultyWeights { +public class DifficultyWeights { private DifficultyWeights() { } @@ -17,7 +17,7 @@ class DifficultyWeights { * @param difficulty Target difficulty (0.0-1.0) * @return Array of weights [dist1, dist2, dist3, dist4] */ - static double[] calculateDistanceWeights(double difficulty) { + public static double[] calculateDistanceWeights(double difficulty) { double[] weights = new double[4]; if (difficulty < 0.3) { @@ -55,7 +55,7 @@ class DifficultyWeights { * @param difficulty Target difficulty (0.0-1.0) * @return Array of weights [-1, 0, 1, 2] */ - static double[] calculateHeightWeights(double difficulty) { + public static double[] calculateHeightWeights(double difficulty) { double[] weights = new double[4]; if (difficulty < 0.3) { @@ -93,7 +93,7 @@ class DifficultyWeights { * @param difficulty Target difficulty (0.0-1.0) * @return Special block percentage (5.0-30.0) */ - static double calculateSpecialFrequency(double difficulty) { + public static double calculateSpecialFrequency(double difficulty) { double minFrequency = 5.0; double maxFrequency = 30.0; return minFrequency + (maxFrequency - minFrequency) * difficulty; diff --git a/src/main/java/dev/loki/loparkour/api/core/ParkourAPI.java b/src/main/java/dev/loki/loparkour/api/core/ParkourAPI.java index 9827287..46d3a5b 100644 --- a/src/main/java/dev/loki/loparkour/api/core/ParkourAPI.java +++ b/src/main/java/dev/loki/loparkour/api/core/ParkourAPI.java @@ -1,6 +1,6 @@ package dev.loki.loparkour.api.core; -import dev.loki.loparkour.api.event.ParkourBlockGenerateEvent; +import dev.loki.loparkour.api.event.generation.ParkourBlockGenerateEvent; import dev.loki.loparkour.player.core.ParkourPlayer; import dev.loki.loparkour.player.core.ParkourUser; import org.bukkit.entity.Player; diff --git a/src/main/java/dev/loki/loparkour/api/event/ParkourBlockGenerateEvent.java b/src/main/java/dev/loki/loparkour/api/event/generation/ParkourBlockGenerateEvent.java similarity index 95% rename from src/main/java/dev/loki/loparkour/api/event/ParkourBlockGenerateEvent.java rename to src/main/java/dev/loki/loparkour/api/event/generation/ParkourBlockGenerateEvent.java index 482a370..9f2519c 100644 --- a/src/main/java/dev/loki/loparkour/api/event/ParkourBlockGenerateEvent.java +++ b/src/main/java/dev/loki/loparkour/api/event/generation/ParkourBlockGenerateEvent.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.api.event; +package dev.loki.loparkour.api.event.generation; import dev.loki.loparkour.generator.core.coordinator.ParkourGenerator; import dev.loki.loparkour.player.core.ParkourPlayer; diff --git a/src/main/java/dev/loki/loparkour/api/event/ParkourSchematicGenerateEvent.java b/src/main/java/dev/loki/loparkour/api/event/generation/ParkourSchematicGenerateEvent.java similarity index 95% rename from src/main/java/dev/loki/loparkour/api/event/ParkourSchematicGenerateEvent.java rename to src/main/java/dev/loki/loparkour/api/event/generation/ParkourSchematicGenerateEvent.java index 8fcad78..8a95eb0 100644 --- a/src/main/java/dev/loki/loparkour/api/event/ParkourSchematicGenerateEvent.java +++ b/src/main/java/dev/loki/loparkour/api/event/generation/ParkourSchematicGenerateEvent.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.api.event; +package dev.loki.loparkour.api.event.generation; import dev.loki.loparkour.generator.core.coordinator.ParkourGenerator; import dev.loki.loparkour.player.core.ParkourPlayer; diff --git a/src/main/java/dev/loki/loparkour/api/event/ParkourFallEvent.java b/src/main/java/dev/loki/loparkour/api/event/score/ParkourFallEvent.java similarity index 94% rename from src/main/java/dev/loki/loparkour/api/event/ParkourFallEvent.java rename to src/main/java/dev/loki/loparkour/api/event/score/ParkourFallEvent.java index 995dccb..15e99a4 100644 --- a/src/main/java/dev/loki/loparkour/api/event/ParkourFallEvent.java +++ b/src/main/java/dev/loki/loparkour/api/event/score/ParkourFallEvent.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.api.event; +package dev.loki.loparkour.api.event.score; import dev.loki.loparkour.player.core.ParkourPlayer; import org.bukkit.Bukkit; diff --git a/src/main/java/dev/loki/loparkour/api/event/ParkourScoreEvent.java b/src/main/java/dev/loki/loparkour/api/event/score/ParkourScoreEvent.java similarity index 94% rename from src/main/java/dev/loki/loparkour/api/event/ParkourScoreEvent.java rename to src/main/java/dev/loki/loparkour/api/event/score/ParkourScoreEvent.java index aa43517..2571fc2 100644 --- a/src/main/java/dev/loki/loparkour/api/event/ParkourScoreEvent.java +++ b/src/main/java/dev/loki/loparkour/api/event/score/ParkourScoreEvent.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.api.event; +package dev.loki.loparkour.api.event.score; import dev.loki.loparkour.player.core.ParkourPlayer; import org.bukkit.Bukkit; diff --git a/src/main/java/dev/loki/loparkour/api/event/ParkourJoinEvent.java b/src/main/java/dev/loki/loparkour/api/event/session/ParkourJoinEvent.java similarity index 93% rename from src/main/java/dev/loki/loparkour/api/event/ParkourJoinEvent.java rename to src/main/java/dev/loki/loparkour/api/event/session/ParkourJoinEvent.java index 322682c..0c666cc 100644 --- a/src/main/java/dev/loki/loparkour/api/event/ParkourJoinEvent.java +++ b/src/main/java/dev/loki/loparkour/api/event/session/ParkourJoinEvent.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.api.event; +package dev.loki.loparkour.api.event.session; import dev.loki.loparkour.player.core.ParkourUser; import org.bukkit.Bukkit; diff --git a/src/main/java/dev/loki/loparkour/api/event/ParkourLeaveEvent.java b/src/main/java/dev/loki/loparkour/api/event/session/ParkourLeaveEvent.java similarity index 93% rename from src/main/java/dev/loki/loparkour/api/event/ParkourLeaveEvent.java rename to src/main/java/dev/loki/loparkour/api/event/session/ParkourLeaveEvent.java index 708f473..b8462d6 100644 --- a/src/main/java/dev/loki/loparkour/api/event/ParkourLeaveEvent.java +++ b/src/main/java/dev/loki/loparkour/api/event/session/ParkourLeaveEvent.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.api.event; +package dev.loki.loparkour.api.event.session; import dev.loki.loparkour.player.core.ParkourUser; import org.bukkit.Bukkit; diff --git a/src/main/java/dev/loki/loparkour/api/event/ParkourSpectateEvent.java b/src/main/java/dev/loki/loparkour/api/event/session/ParkourSpectateEvent.java similarity index 94% rename from src/main/java/dev/loki/loparkour/api/event/ParkourSpectateEvent.java rename to src/main/java/dev/loki/loparkour/api/event/session/ParkourSpectateEvent.java index 4b06c47..1707a6a 100644 --- a/src/main/java/dev/loki/loparkour/api/event/ParkourSpectateEvent.java +++ b/src/main/java/dev/loki/loparkour/api/event/session/ParkourSpectateEvent.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.api.event; +package dev.loki.loparkour.api.event.session; import dev.loki.loparkour.player.spectator.ParkourSpectator; import org.bukkit.Bukkit; diff --git a/src/main/java/dev/loki/loparkour/command/admin/AdminCommandHandler.java b/src/main/java/dev/loki/loparkour/command/admin/AdminCommandHandler.java index 6165a04..23d29c0 100644 --- a/src/main/java/dev/loki/loparkour/command/admin/AdminCommandHandler.java +++ b/src/main/java/dev/loki/loparkour/command/admin/AdminCommandHandler.java @@ -2,10 +2,14 @@ package dev.loki.loparkour.command.admin; import dev.loki.loparkour.command.player.PlayerCommandHandler; import dev.loki.loparkour.command.schematic.SchematicCommandHandler; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; +import dev.loki.loparkour.command.admin.ops.ForceJoinExecutor; +import dev.loki.loparkour.command.admin.ops.ForceLeaveExecutor; +import dev.loki.loparkour.command.admin.ops.RecoverInventoryExecutor; +import dev.loki.loparkour.command.admin.ops.ResetExecutor; import org.jetbrains.annotations.Nullable; /** diff --git a/src/main/java/dev/loki/loparkour/command/admin/ForceJoinExecutor.java b/src/main/java/dev/loki/loparkour/command/admin/ops/ForceJoinExecutor.java similarity index 83% rename from src/main/java/dev/loki/loparkour/command/admin/ForceJoinExecutor.java rename to src/main/java/dev/loki/loparkour/command/admin/ops/ForceJoinExecutor.java index 15073c8..010e5f3 100644 --- a/src/main/java/dev/loki/loparkour/command/admin/ForceJoinExecutor.java +++ b/src/main/java/dev/loki/loparkour/command/admin/ops/ForceJoinExecutor.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.command.admin; +package dev.loki.loparkour.command.admin.ops; import dev.loki.loparkour.LoParkour; import dev.loki.loparkour.command.player.PlayerCommandHandler; @@ -6,17 +6,19 @@ import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.mode.base.Modes; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; +import dev.loki.loparkour.command.admin.support.AdminResponses; +import dev.loki.loparkour.command.admin.support.AdminTargetResolver; import org.bukkit.entity.Player; -final class ForceJoinExecutor { +public final class ForceJoinExecutor { private final PlayerCommandHandler base; - ForceJoinExecutor(PlayerCommandHandler base) { + public ForceJoinExecutor(PlayerCommandHandler base) { this.base = base; } - void execute(String target, CommandSender sender) { + public void execute(String target, CommandSender sender) { if (!base.cooldown(sender, "forcejoin", 2500, Locales.getString(sender, "admin.cooldown"))) { return; } diff --git a/src/main/java/dev/loki/loparkour/command/admin/ForceLeaveExecutor.java b/src/main/java/dev/loki/loparkour/command/admin/ops/ForceLeaveExecutor.java similarity index 84% rename from src/main/java/dev/loki/loparkour/command/admin/ForceLeaveExecutor.java rename to src/main/java/dev/loki/loparkour/command/admin/ops/ForceLeaveExecutor.java index 55b153d..c2660b2 100644 --- a/src/main/java/dev/loki/loparkour/command/admin/ForceLeaveExecutor.java +++ b/src/main/java/dev/loki/loparkour/command/admin/ops/ForceLeaveExecutor.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.command.admin; +package dev.loki.loparkour.command.admin.ops; import dev.loki.loparkour.LoParkour; import dev.loki.loparkour.command.player.PlayerCommandHandler; @@ -7,17 +7,18 @@ import dev.loki.loparkour.player.core.ParkourPlayer; import dev.loki.loparkour.player.core.ParkourUser; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; +import dev.loki.loparkour.command.admin.support.AdminResponses; import org.bukkit.entity.Player; -final class ForceLeaveExecutor { +public final class ForceLeaveExecutor { private final PlayerCommandHandler base; - ForceLeaveExecutor(PlayerCommandHandler base) { + public ForceLeaveExecutor(PlayerCommandHandler base) { this.base = base; } - void execute(String target, CommandSender sender) { + public void execute(String target, CommandSender sender) { if (!base.cooldown(sender, "forceleave", 2500, Locales.getString(sender, "admin.cooldown"))) { return; } diff --git a/src/main/java/dev/loki/loparkour/command/admin/RecoverInventoryExecutor.java b/src/main/java/dev/loki/loparkour/command/admin/ops/RecoverInventoryExecutor.java similarity index 82% rename from src/main/java/dev/loki/loparkour/command/admin/RecoverInventoryExecutor.java rename to src/main/java/dev/loki/loparkour/command/admin/ops/RecoverInventoryExecutor.java index 895069d..232334a 100644 --- a/src/main/java/dev/loki/loparkour/command/admin/RecoverInventoryExecutor.java +++ b/src/main/java/dev/loki/loparkour/command/admin/ops/RecoverInventoryExecutor.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.command.admin; +package dev.loki.loparkour.command.admin.ops; import dev.loki.loparkour.LoParkour; import dev.loki.loparkour.command.player.PlayerCommandHandler; @@ -6,17 +6,18 @@ import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.player.data.InventoryData; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; +import dev.loki.loparkour.command.admin.support.AdminResponses; import org.bukkit.entity.Player; -final class RecoverInventoryExecutor { +public final class RecoverInventoryExecutor { private final PlayerCommandHandler base; - RecoverInventoryExecutor(PlayerCommandHandler base) { + public RecoverInventoryExecutor(PlayerCommandHandler base) { this.base = base; } - void execute(String target, CommandSender sender) { + public void execute(String target, CommandSender sender) { if (!base.cooldown(sender, "recoverinventory", 2500, Locales.getString(sender, "admin.cooldown"))) { return; } diff --git a/src/main/java/dev/loki/loparkour/command/admin/ResetExecutor.java b/src/main/java/dev/loki/loparkour/command/admin/ops/ResetExecutor.java similarity index 83% rename from src/main/java/dev/loki/loparkour/command/admin/ResetExecutor.java rename to src/main/java/dev/loki/loparkour/command/admin/ops/ResetExecutor.java index 63344b5..edf966b 100644 --- a/src/main/java/dev/loki/loparkour/command/admin/ResetExecutor.java +++ b/src/main/java/dev/loki/loparkour/command/admin/ops/ResetExecutor.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.command.admin; +package dev.loki.loparkour.command.admin.ops; import dev.loki.loparkour.LoParkour; import dev.loki.loparkour.api.core.Registry; @@ -9,17 +9,19 @@ import dev.loki.loparkour.mode.base.Mode; import org.bukkit.command.CommandSender; import java.util.UUID; +import dev.loki.loparkour.command.admin.support.AdminResponses; +import dev.loki.loparkour.command.admin.support.AdminTargetResolver; import java.util.function.Consumer; -final class ResetExecutor { +public final class ResetExecutor { private final PlayerCommandHandler base; - ResetExecutor(PlayerCommandHandler base) { + public ResetExecutor(PlayerCommandHandler base) { this.base = base; } - void execute(String target, CommandSender sender) { + public void execute(String target, CommandSender sender) { if (!base.cooldown(sender, "reset", 2500, Locales.getString(sender, "admin.cooldown"))) { return; } diff --git a/src/main/java/dev/loki/loparkour/command/admin/AdminResponses.java b/src/main/java/dev/loki/loparkour/command/admin/support/AdminResponses.java similarity index 55% rename from src/main/java/dev/loki/loparkour/command/admin/AdminResponses.java rename to src/main/java/dev/loki/loparkour/command/admin/support/AdminResponses.java index eaf64be..2cdeecb 100644 --- a/src/main/java/dev/loki/loparkour/command/admin/AdminResponses.java +++ b/src/main/java/dev/loki/loparkour/command/admin/support/AdminResponses.java @@ -1,14 +1,14 @@ -package dev.loki.loparkour.command.admin; +package dev.loki.loparkour.command.admin.support; import dev.loki.loparkour.util.text.ColorUtil; import org.bukkit.command.CommandSender; -final class AdminResponses { +public final class AdminResponses { private AdminResponses() { } - static void send(CommandSender sender, String msg) { + public static void send(CommandSender sender, String msg) { sender.sendMessage(ColorUtil.color(msg)); } } diff --git a/src/main/java/dev/loki/loparkour/command/admin/AdminTargetResolver.java b/src/main/java/dev/loki/loparkour/command/admin/support/AdminTargetResolver.java similarity index 85% rename from src/main/java/dev/loki/loparkour/command/admin/AdminTargetResolver.java rename to src/main/java/dev/loki/loparkour/command/admin/support/AdminTargetResolver.java index a24a5ae..21f3bf3 100644 --- a/src/main/java/dev/loki/loparkour/command/admin/AdminTargetResolver.java +++ b/src/main/java/dev/loki/loparkour/command/admin/support/AdminTargetResolver.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.command.admin; +package dev.loki.loparkour.command.admin.support; import org.bukkit.command.BlockCommandSender; import org.bukkit.Bukkit; @@ -9,12 +9,12 @@ import org.bukkit.entity.Player; import java.util.UUID; -final class AdminTargetResolver { +public final class AdminTargetResolver { private AdminTargetResolver() { } - static Player findNearest(CommandSender sender) { + public static Player findNearest(CommandSender sender) { Location from = sender instanceof Player p ? p.getLocation() : sender instanceof BlockCommandSender b ? b.getBlock().getLocation() : null; @@ -28,7 +28,7 @@ final class AdminTargetResolver { } @SuppressWarnings("deprecation") - static UUID resolveUUID(String input) { + public static UUID resolveUUID(String input) { Player online = Bukkit.getPlayerExact(input); if (online != null) { return online.getUniqueId(); @@ -50,7 +50,7 @@ final class AdminTargetResolver { } } - static String resolvePlayerName(String input, UUID uuid) { + public static String resolvePlayerName(String input, UUID uuid) { Player online = Bukkit.getPlayerExact(input); if (online != null) { return online.getName(); diff --git a/src/main/java/dev/loki/loparkour/command/core/CommandRouter.java b/src/main/java/dev/loki/loparkour/command/core/CommandRouter.java index aae2ee1..a3f06cd 100644 --- a/src/main/java/dev/loki/loparkour/command/core/CommandRouter.java +++ b/src/main/java/dev/loki/loparkour/command/core/CommandRouter.java @@ -7,7 +7,7 @@ import dev.loki.loparkour.command.player.PlayerCommandHandler; import dev.loki.loparkour.command.schematic.SchematicCommandHandler; import dev.loki.loparkour.command.util.CommandUtil; import dev.loki.loparkour.config.locale.Locales; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.jetbrains.annotations.Nullable; diff --git a/src/main/java/dev/loki/loparkour/command/core/CommandTabCompleter.java b/src/main/java/dev/loki/loparkour/command/core/CommandTabCompleter.java index 7ffdefa..3be48b7 100644 --- a/src/main/java/dev/loki/loparkour/command/core/CommandTabCompleter.java +++ b/src/main/java/dev/loki/loparkour/command/core/CommandTabCompleter.java @@ -2,7 +2,7 @@ package dev.loki.loparkour.command.core; import dev.loki.loparkour.LoParkour; import dev.loki.loparkour.api.core.Registry; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import dev.loki.loparkour.player.core.ParkourPlayer; import dev.loki.loparkour.schematic.core.SchematicManager; import org.bukkit.Bukkit; diff --git a/src/main/java/dev/loki/loparkour/command/player/JoinCommandExecutor.java b/src/main/java/dev/loki/loparkour/command/player/JoinCommandExecutor.java index 182a3eb..75929c9 100644 --- a/src/main/java/dev/loki/loparkour/command/player/JoinCommandExecutor.java +++ b/src/main/java/dev/loki/loparkour/command/player/JoinCommandExecutor.java @@ -4,7 +4,7 @@ import dev.loki.loparkour.LoParkour; import dev.loki.loparkour.api.core.Registry; import dev.loki.loparkour.command.util.CommandUtil; import dev.loki.loparkour.config.locale.Locales; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import dev.loki.loparkour.mode.base.Mode; import dev.loki.loparkour.mode.base.Modes; import dev.loki.loparkour.mode.base.MultiMode; diff --git a/src/main/java/dev/loki/loparkour/command/player/LeaderboardCommandExecutor.java b/src/main/java/dev/loki/loparkour/command/player/LeaderboardCommandExecutor.java index dc33254..f6f5883 100644 --- a/src/main/java/dev/loki/loparkour/command/player/LeaderboardCommandExecutor.java +++ b/src/main/java/dev/loki/loparkour/command/player/LeaderboardCommandExecutor.java @@ -5,7 +5,7 @@ import dev.loki.loparkour.command.util.CommandUtil; import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.leaderboard.core.Leaderboard; import dev.loki.loparkour.menu.core.Menus; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import dev.loki.loparkour.mode.base.Mode; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/main/java/dev/loki/loparkour/command/player/PlayerCommandHandler.java b/src/main/java/dev/loki/loparkour/command/player/PlayerCommandHandler.java index dde958d..70445bb 100644 --- a/src/main/java/dev/loki/loparkour/command/player/PlayerCommandHandler.java +++ b/src/main/java/dev/loki/loparkour/command/player/PlayerCommandHandler.java @@ -5,7 +5,7 @@ import dev.loki.loparkour.command.schematic.SchematicCommandHandler; import dev.loki.loparkour.config.core.Config; import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.menu.core.Menus; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import dev.loki.loparkour.mode.base.Modes; import dev.loki.loparkour.player.core.ParkourUser; import dev.loki.loparkour.util.text.ColorUtil; diff --git a/src/main/java/dev/loki/loparkour/command/schematic/SchematicWand.java b/src/main/java/dev/loki/loparkour/command/schematic/SchematicWand.java index 8c0abea..783b1fa 100644 --- a/src/main/java/dev/loki/loparkour/command/schematic/SchematicWand.java +++ b/src/main/java/dev/loki/loparkour/command/schematic/SchematicWand.java @@ -2,7 +2,7 @@ package dev.loki.loparkour.command.schematic; import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.config.options.Option; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.bukkit.inventory.ItemStack; diff --git a/src/main/java/dev/loki/loparkour/config/core/ConfigLoader.java b/src/main/java/dev/loki/loparkour/config/core/ConfigLoader.java index c7840f9..c8c4f45 100644 --- a/src/main/java/dev/loki/loparkour/config/core/ConfigLoader.java +++ b/src/main/java/dev/loki/loparkour/config/core/ConfigLoader.java @@ -10,6 +10,7 @@ import org.jetbrains.annotations.Nullable; import java.io.File; import java.util.List; +import dev.loki.loparkour.config.core.merge.ConfigUpdater; import java.util.logging.Logger; /** diff --git a/src/main/java/dev/loki/loparkour/config/core/ConfigMergeParser.java b/src/main/java/dev/loki/loparkour/config/core/merge/ConfigMergeParser.java similarity index 78% rename from src/main/java/dev/loki/loparkour/config/core/ConfigMergeParser.java rename to src/main/java/dev/loki/loparkour/config/core/merge/ConfigMergeParser.java index ec1c5e4..a295875 100644 --- a/src/main/java/dev/loki/loparkour/config/core/ConfigMergeParser.java +++ b/src/main/java/dev/loki/loparkour/config/core/merge/ConfigMergeParser.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.config.core; +package dev.loki.loparkour.config.core.merge; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -19,22 +19,22 @@ import java.util.Map; * Reads YAML as raw lines and extracts the full path of each scalar value * (e.g. "sql.enabled") so that user values can be matched against the template. */ -final class ConfigMergeParser { +public final class ConfigMergeParser { @NotNull - List readLines(@NotNull InputStream is) throws IOException { + public List readLines(@NotNull InputStream is) throws IOException { try (var r = new BufferedReader(new InputStreamReader(is))) { return r.lines().toList(); } } @NotNull - List readLines(@NotNull File file) throws IOException { + public List readLines(@NotNull File file) throws IOException { return Files.readAllLines(file.toPath()); } @NotNull - Map extractFullPathValues(@NotNull List lines) { + public Map extractFullPathValues(@NotNull List lines) { Map values = new LinkedHashMap<>(); Deque stack = new ArrayDeque<>(); int prevIndent = -1; @@ -57,7 +57,7 @@ final class ConfigMergeParser { } @Nullable - static LineTokens parseLine(@NotNull String line) { + public static LineTokens parseLine(@NotNull String line) { if (isSkippable(line)) { return null; } @@ -80,7 +80,7 @@ final class ConfigMergeParser { return after.isEmpty() || after.startsWith("#"); } - static int popToLevel(@NotNull Deque stack, int indent, int prevIndent) { + public static int popToLevel(@NotNull Deque stack, int indent, int prevIndent) { while (prevIndent >= 0 && indent <= prevIndent) { if (!stack.isEmpty()) { stack.pop(); @@ -91,11 +91,11 @@ final class ConfigMergeParser { } @NotNull - static String resolvePath(@NotNull Deque stack, @NotNull String leaf) { + public static String resolvePath(@NotNull Deque stack, @NotNull String leaf) { return stack.isEmpty() ? leaf : String.join(".", stack) + "." + leaf; } - static int indentOf(@NotNull String line) { + public static int indentOf(@NotNull String line) { int i = 0; while (i < line.length() && line.charAt(i) == ' ') { i++; @@ -103,6 +103,6 @@ final class ConfigMergeParser { return i; } - record LineTokens(String leaf, String after, int indent, boolean isSection) { + public record LineTokens(String leaf, String after, int indent, boolean isSection) { } } \ No newline at end of file diff --git a/src/main/java/dev/loki/loparkour/config/core/ConfigMergeProcessor.java b/src/main/java/dev/loki/loparkour/config/core/merge/ConfigMergeProcessor.java similarity index 97% rename from src/main/java/dev/loki/loparkour/config/core/ConfigMergeProcessor.java rename to src/main/java/dev/loki/loparkour/config/core/merge/ConfigMergeProcessor.java index b701699..663277e 100644 --- a/src/main/java/dev/loki/loparkour/config/core/ConfigMergeProcessor.java +++ b/src/main/java/dev/loki/loparkour/config/core/merge/ConfigMergeProcessor.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.config.core; +package dev.loki.loparkour.config.core.merge; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -18,7 +18,7 @@ import java.util.Set; * Builds the merged file by walking the template and substituting any scalar * value that the user has already customized, preserving comments and sections. */ -final class ConfigMergeProcessor { +public final class ConfigMergeProcessor { private final ConfigMergeParser parser = new ConfigMergeParser(); diff --git a/src/main/java/dev/loki/loparkour/config/core/ConfigUpdater.java b/src/main/java/dev/loki/loparkour/config/core/merge/ConfigUpdater.java similarity index 98% rename from src/main/java/dev/loki/loparkour/config/core/ConfigUpdater.java rename to src/main/java/dev/loki/loparkour/config/core/merge/ConfigUpdater.java index 1a28fca..91f4d3f 100644 --- a/src/main/java/dev/loki/loparkour/config/core/ConfigUpdater.java +++ b/src/main/java/dev/loki/loparkour/config/core/merge/ConfigUpdater.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.config.core; +package dev.loki.loparkour.config.core.merge; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/src/main/java/dev/loki/loparkour/config/locale/Locales.java b/src/main/java/dev/loki/loparkour/config/locale/Locales.java index 550100d..fcd317d 100644 --- a/src/main/java/dev/loki/loparkour/config/locale/Locales.java +++ b/src/main/java/dev/loki/loparkour/config/locale/Locales.java @@ -2,7 +2,7 @@ package dev.loki.loparkour.config.locale; import dev.loki.loparkour.LoParkour; import dev.loki.loparkour.config.options.Option; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import dev.loki.loparkour.player.core.ParkourUser; import dev.loki.loparkour.util.text.ColorUtil; import dev.loki.loparkour.util.item.Item; diff --git a/src/main/java/dev/loki/loparkour/config/options/Option.java b/src/main/java/dev/loki/loparkour/config/options/Option.java index 2a65fab..ce94ad0 100644 --- a/src/main/java/dev/loki/loparkour/config/options/Option.java +++ b/src/main/java/dev/loki/loparkour/config/options/Option.java @@ -2,7 +2,7 @@ package dev.loki.loparkour.config.options; import dev.loki.loparkour.api.core.Registry; import dev.loki.loparkour.config.core.Config; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import dev.loki.loparkour.style.core.RandomStyle; import dev.loki.loparkour.style.core.Style; import dev.loki.loparkour.util.particle.ParticleData; @@ -16,6 +16,10 @@ import org.bukkit.configuration.file.FileConfiguration; import java.util.List; import java.util.Map; import java.util.Set; +import dev.loki.loparkour.config.options.section.OptionGeneration; +import dev.loki.loparkour.config.options.section.OptionParticles; +import dev.loki.loparkour.config.options.section.OptionSQL; +import dev.loki.loparkour.config.options.section.OptionStyles; import java.util.function.BiFunction; /** diff --git a/src/main/java/dev/loki/loparkour/config/options/OptionGeneral.java b/src/main/java/dev/loki/loparkour/config/options/OptionGeneral.java index fbd8341..466d087 100644 --- a/src/main/java/dev/loki/loparkour/config/options/OptionGeneral.java +++ b/src/main/java/dev/loki/loparkour/config/options/OptionGeneral.java @@ -2,7 +2,7 @@ package dev.loki.loparkour.config.options; import dev.loki.loparkour.LoParkour; import dev.loki.loparkour.config.core.Config; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; diff --git a/src/main/java/dev/loki/loparkour/config/options/OptionGeneration.java b/src/main/java/dev/loki/loparkour/config/options/section/OptionGeneration.java similarity index 99% rename from src/main/java/dev/loki/loparkour/config/options/OptionGeneration.java rename to src/main/java/dev/loki/loparkour/config/options/section/OptionGeneration.java index f07eaf3..807c709 100644 --- a/src/main/java/dev/loki/loparkour/config/options/OptionGeneration.java +++ b/src/main/java/dev/loki/loparkour/config/options/section/OptionGeneration.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.config.options; +package dev.loki.loparkour.config.options.section; import dev.loki.loparkour.LoParkour; import dev.loki.loparkour.config.core.Config; diff --git a/src/main/java/dev/loki/loparkour/config/options/OptionParticles.java b/src/main/java/dev/loki/loparkour/config/options/section/OptionParticles.java similarity index 96% rename from src/main/java/dev/loki/loparkour/config/options/OptionParticles.java rename to src/main/java/dev/loki/loparkour/config/options/section/OptionParticles.java index eb94847..1741f67 100644 --- a/src/main/java/dev/loki/loparkour/config/options/OptionParticles.java +++ b/src/main/java/dev/loki/loparkour/config/options/section/OptionParticles.java @@ -1,7 +1,8 @@ -package dev.loki.loparkour.config.options; +package dev.loki.loparkour.config.options.section; import dev.loki.loparkour.LoParkour; import dev.loki.loparkour.config.core.Config; +import dev.loki.loparkour.config.options.Option; import dev.loki.loparkour.util.particle.ParticleData; import org.bukkit.Particle; import org.bukkit.Sound; diff --git a/src/main/java/dev/loki/loparkour/config/options/OptionSQL.java b/src/main/java/dev/loki/loparkour/config/options/section/OptionSQL.java similarity index 95% rename from src/main/java/dev/loki/loparkour/config/options/OptionSQL.java rename to src/main/java/dev/loki/loparkour/config/options/section/OptionSQL.java index 03873e6..4e55d3f 100644 --- a/src/main/java/dev/loki/loparkour/config/options/OptionSQL.java +++ b/src/main/java/dev/loki/loparkour/config/options/section/OptionSQL.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.config.options; +package dev.loki.loparkour.config.options.section; import dev.loki.loparkour.config.core.Config; diff --git a/src/main/java/dev/loki/loparkour/config/options/OptionStyles.java b/src/main/java/dev/loki/loparkour/config/options/section/OptionStyles.java similarity index 96% rename from src/main/java/dev/loki/loparkour/config/options/OptionStyles.java rename to src/main/java/dev/loki/loparkour/config/options/section/OptionStyles.java index 70eab46..c2c494b 100644 --- a/src/main/java/dev/loki/loparkour/config/options/OptionStyles.java +++ b/src/main/java/dev/loki/loparkour/config/options/section/OptionStyles.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.config.options; +package dev.loki.loparkour.config.options.section; import dev.loki.loparkour.LoParkour; import dev.loki.loparkour.config.core.ConfigAccessor; diff --git a/src/main/java/dev/loki/loparkour/generator/jump/placement/SchematicBlockPlacer.java b/src/main/java/dev/loki/loparkour/generator/jump/placement/SchematicBlockPlacer.java index 6d71f77..d05d896 100644 --- a/src/main/java/dev/loki/loparkour/generator/jump/placement/SchematicBlockPlacer.java +++ b/src/main/java/dev/loki/loparkour/generator/jump/placement/SchematicBlockPlacer.java @@ -1,7 +1,7 @@ package dev.loki.loparkour.generator.jump.placement; import dev.loki.loparkour.LoParkour; -import dev.loki.loparkour.api.event.ParkourSchematicGenerateEvent; +import dev.loki.loparkour.api.event.generation.ParkourSchematicGenerateEvent; import dev.loki.loparkour.generator.core.coordinator.ParkourGenerator; import dev.loki.loparkour.player.core.ParkourPlayer; import dev.loki.loparkour.schematic.core.ParkourSchematic; diff --git a/src/main/java/dev/loki/loparkour/generator/lifecycle/loop/LifecycleEventManager.java b/src/main/java/dev/loki/loparkour/generator/lifecycle/loop/LifecycleEventManager.java index f1ae3db..180b6b4 100644 --- a/src/main/java/dev/loki/loparkour/generator/lifecycle/loop/LifecycleEventManager.java +++ b/src/main/java/dev/loki/loparkour/generator/lifecycle/loop/LifecycleEventManager.java @@ -1,7 +1,7 @@ package dev.loki.loparkour.generator.lifecycle.loop; -import dev.loki.loparkour.api.event.ParkourFallEvent; -import dev.loki.loparkour.api.event.ParkourScoreEvent; +import dev.loki.loparkour.api.event.score.ParkourFallEvent; +import dev.loki.loparkour.api.event.score.ParkourScoreEvent; import dev.loki.loparkour.generator.core.coordinator.ParkourGenerator; import dev.loki.loparkour.mode.base.Mode; import dev.loki.loparkour.player.core.ParkourPlayer; diff --git a/src/main/java/dev/loki/loparkour/listener/gameplay/ParkourRestrictionListener.java b/src/main/java/dev/loki/loparkour/listener/gameplay/ParkourRestrictionListener.java index 6b66b40..08d0918 100644 --- a/src/main/java/dev/loki/loparkour/listener/gameplay/ParkourRestrictionListener.java +++ b/src/main/java/dev/loki/loparkour/listener/gameplay/ParkourRestrictionListener.java @@ -4,7 +4,7 @@ import dev.loki.loparkour.config.core.Config; import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.config.options.Option; import dev.loki.loparkour.menu.core.Menus; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import dev.loki.loparkour.player.core.ParkourPlayer; import dev.loki.loparkour.player.core.ParkourUser; import dev.loki.loparkour.session.core.Session; diff --git a/src/main/java/dev/loki/loparkour/listener/player/PlayerConnectionListener.java b/src/main/java/dev/loki/loparkour/listener/player/PlayerConnectionListener.java index 786d387..6cb6f0d 100644 --- a/src/main/java/dev/loki/loparkour/listener/player/PlayerConnectionListener.java +++ b/src/main/java/dev/loki/loparkour/listener/player/PlayerConnectionListener.java @@ -1,7 +1,7 @@ package dev.loki.loparkour.listener.player; import dev.loki.loparkour.config.core.Config; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import dev.loki.loparkour.mode.base.Modes; import dev.loki.loparkour.player.core.ParkourUser; import dev.loki.loparkour.world.core.World; diff --git a/src/main/java/dev/loki/loparkour/menu/community/CommunityMenu.java b/src/main/java/dev/loki/loparkour/menu/community/CommunityMenu.java index 13b5241..8111d5d 100644 --- a/src/main/java/dev/loki/loparkour/menu/community/CommunityMenu.java +++ b/src/main/java/dev/loki/loparkour/menu/community/CommunityMenu.java @@ -3,7 +3,7 @@ package dev.loki.loparkour.menu.community; import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.menu.core.LPMenu; import dev.loki.loparkour.menu.core.Menus; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/dev/loki/loparkour/menu/community/LeaderboardsMenu.java b/src/main/java/dev/loki/loparkour/menu/community/LeaderboardsMenu.java index 0acb688..9446d67 100644 --- a/src/main/java/dev/loki/loparkour/menu/community/LeaderboardsMenu.java +++ b/src/main/java/dev/loki/loparkour/menu/community/LeaderboardsMenu.java @@ -5,7 +5,7 @@ import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.leaderboard.core.Leaderboard; import dev.loki.loparkour.menu.core.LPMenu; import dev.loki.loparkour.menu.core.Menus; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import dev.loki.loparkour.mode.base.Mode; import dev.lolib.gui.InventoryGUI; import org.bukkit.entity.Player; diff --git a/src/main/java/dev/loki/loparkour/menu/community/SingleLeaderboardMenu.java b/src/main/java/dev/loki/loparkour/menu/community/SingleLeaderboardMenu.java index 4c70424..54f16f7 100644 --- a/src/main/java/dev/loki/loparkour/menu/community/SingleLeaderboardMenu.java +++ b/src/main/java/dev/loki/loparkour/menu/community/SingleLeaderboardMenu.java @@ -4,7 +4,7 @@ import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.leaderboard.core.Leaderboard; import dev.loki.loparkour.leaderboard.model.Score; import dev.loki.loparkour.menu.core.LPMenu; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import dev.loki.loparkour.mode.base.Mode; import dev.loki.loparkour.player.core.ParkourUser; import dev.lolib.gui.InventoryGUI; diff --git a/src/main/java/dev/loki/loparkour/menu/core/LPMenu.java b/src/main/java/dev/loki/loparkour/menu/core/LPMenu.java index af22a40..a6f1e40 100644 --- a/src/main/java/dev/loki/loparkour/menu/core/LPMenu.java +++ b/src/main/java/dev/loki/loparkour/menu/core/LPMenu.java @@ -8,6 +8,7 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import org.jetbrains.annotations.NotNull; /** diff --git a/src/main/java/dev/loki/loparkour/menu/core/Menus.java b/src/main/java/dev/loki/loparkour/menu/core/Menus.java index f261d3d..fc0ca47 100644 --- a/src/main/java/dev/loki/loparkour/menu/core/Menus.java +++ b/src/main/java/dev/loki/loparkour/menu/core/Menus.java @@ -10,6 +10,7 @@ import dev.loki.loparkour.menu.play.SingleMenu; import dev.loki.loparkour.menu.play.SpectatorMenu; import dev.loki.loparkour.menu.settings.LangMenu; import dev.loki.loparkour.menu.settings.ParkourSettingsMenu; +import dev.loki.loparkour.menu.core.screen.MainMenu; import dev.loki.loparkour.menu.settings.SettingsMenu; public final class Menus { diff --git a/src/main/java/dev/loki/loparkour/menu/core/DynamicMenu.java b/src/main/java/dev/loki/loparkour/menu/core/screen/DynamicMenu.java similarity index 95% rename from src/main/java/dev/loki/loparkour/menu/core/DynamicMenu.java rename to src/main/java/dev/loki/loparkour/menu/core/screen/DynamicMenu.java index 86e4370..5e82849 100644 --- a/src/main/java/dev/loki/loparkour/menu/core/DynamicMenu.java +++ b/src/main/java/dev/loki/loparkour/menu/core/screen/DynamicMenu.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.menu.core; +package dev.loki.loparkour.menu.core.screen; import dev.loki.loparkour.player.core.ParkourUser; import org.bukkit.entity.Player; @@ -33,7 +33,7 @@ public abstract class DynamicMenu { /* public void registerMainItem( int row, int id, - BiFunction<@NotNull Player, @Nullable ParkourUser, dev.loki.loparkour.util.gui.MenuItem> item, + BiFunction<@NotNull Player, @Nullable ParkourUser, dev.loki.loparkour.menu.gui.MenuItem> item, Predicate shouldDisplay) { if (id < 0 || row < 0 || row > 4) { return; @@ -82,7 +82,7 @@ public abstract class DynamicMenu { */ protected record ItemContainer( int id, - BiFunction<@NotNull Player, @Nullable ParkourUser, dev.loki.loparkour.util.gui.MenuItem> item, + BiFunction<@NotNull Player, @Nullable ParkourUser, dev.loki.loparkour.menu.gui.MenuItem> item, Predicate predicate ) {} } diff --git a/src/main/java/dev/loki/loparkour/menu/core/MainMenu.java b/src/main/java/dev/loki/loparkour/menu/core/screen/MainMenu.java similarity index 95% rename from src/main/java/dev/loki/loparkour/menu/core/MainMenu.java rename to src/main/java/dev/loki/loparkour/menu/core/screen/MainMenu.java index e5e4d76..3c9caa0 100644 --- a/src/main/java/dev/loki/loparkour/menu/core/MainMenu.java +++ b/src/main/java/dev/loki/loparkour/menu/core/screen/MainMenu.java @@ -1,7 +1,9 @@ -package dev.loki.loparkour.menu.core; +package dev.loki.loparkour.menu.core.screen; import dev.loki.loparkour.config.core.Config; import dev.loki.loparkour.config.locale.Locales; +import dev.loki.loparkour.menu.core.LPMenu; +import dev.loki.loparkour.menu.core.Menus; import dev.loki.loparkour.player.core.ParkourUser; import dev.lolib.gui.InventoryGUI; import org.bukkit.entity.Player; diff --git a/src/main/java/dev/loki/loparkour/menu/core/ParkourOption.java b/src/main/java/dev/loki/loparkour/menu/core/screen/ParkourOption.java similarity index 98% rename from src/main/java/dev/loki/loparkour/menu/core/ParkourOption.java rename to src/main/java/dev/loki/loparkour/menu/core/screen/ParkourOption.java index 6b0999c..e3c685a 100644 --- a/src/main/java/dev/loki/loparkour/menu/core/ParkourOption.java +++ b/src/main/java/dev/loki/loparkour/menu/core/screen/ParkourOption.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.menu.core; +package dev.loki.loparkour.menu.core.screen; import dev.loki.loparkour.config.core.Config; import dev.loki.loparkour.config.options.Option; diff --git a/src/main/java/dev/loki/loparkour/util/gui/Menu.java b/src/main/java/dev/loki/loparkour/menu/gui/Menu.java similarity index 94% rename from src/main/java/dev/loki/loparkour/util/gui/Menu.java rename to src/main/java/dev/loki/loparkour/menu/gui/Menu.java index a442dbd..df26abc 100644 --- a/src/main/java/dev/loki/loparkour/util/gui/Menu.java +++ b/src/main/java/dev/loki/loparkour/menu/gui/Menu.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.util.gui; +package dev.loki.loparkour.menu.gui; import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.util.item.Item; diff --git a/src/main/java/dev/loki/loparkour/util/gui/MenuItem.java b/src/main/java/dev/loki/loparkour/menu/gui/MenuItem.java similarity index 90% rename from src/main/java/dev/loki/loparkour/util/gui/MenuItem.java rename to src/main/java/dev/loki/loparkour/menu/gui/MenuItem.java index 4b9ff5a..42137d1 100644 --- a/src/main/java/dev/loki/loparkour/util/gui/MenuItem.java +++ b/src/main/java/dev/loki/loparkour/menu/gui/MenuItem.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.util.gui; +package dev.loki.loparkour.menu.gui; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/dev/loki/loparkour/util/gui/PagedMenu.java b/src/main/java/dev/loki/loparkour/menu/gui/PagedMenu.java similarity index 96% rename from src/main/java/dev/loki/loparkour/util/gui/PagedMenu.java rename to src/main/java/dev/loki/loparkour/menu/gui/PagedMenu.java index 726c641..326b3b5 100644 --- a/src/main/java/dev/loki/loparkour/util/gui/PagedMenu.java +++ b/src/main/java/dev/loki/loparkour/menu/gui/PagedMenu.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.util.gui; +package dev.loki.loparkour.menu.gui; import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.util.item.Item; diff --git a/src/main/java/dev/loki/loparkour/util/gui/SliderItem.java b/src/main/java/dev/loki/loparkour/menu/gui/SliderItem.java similarity index 91% rename from src/main/java/dev/loki/loparkour/util/gui/SliderItem.java rename to src/main/java/dev/loki/loparkour/menu/gui/SliderItem.java index 6555837..0e409f3 100644 --- a/src/main/java/dev/loki/loparkour/util/gui/SliderItem.java +++ b/src/main/java/dev/loki/loparkour/menu/gui/SliderItem.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.util.gui; +package dev.loki.loparkour.menu.gui; import dev.loki.loparkour.util.item.Item; import org.bukkit.event.inventory.InventoryClickEvent; diff --git a/src/main/java/dev/loki/loparkour/menu/lobby/LobbyMenu.java b/src/main/java/dev/loki/loparkour/menu/lobby/LobbyMenu.java index 8c3d472..41179b6 100644 --- a/src/main/java/dev/loki/loparkour/menu/lobby/LobbyMenu.java +++ b/src/main/java/dev/loki/loparkour/menu/lobby/LobbyMenu.java @@ -3,7 +3,7 @@ package dev.loki.loparkour.menu.lobby; import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.menu.core.LPMenu; import dev.loki.loparkour.menu.core.Menus; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import dev.loki.loparkour.player.core.ParkourUser; import dev.loki.loparkour.session.core.Session; import dev.loki.loparkour.util.text.ColorUtil; diff --git a/src/main/java/dev/loki/loparkour/menu/play/PlayMenu.java b/src/main/java/dev/loki/loparkour/menu/play/PlayMenu.java index c596626..139b46e 100644 --- a/src/main/java/dev/loki/loparkour/menu/play/PlayMenu.java +++ b/src/main/java/dev/loki/loparkour/menu/play/PlayMenu.java @@ -3,7 +3,7 @@ package dev.loki.loparkour.menu.play; import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.menu.core.LPMenu; import dev.loki.loparkour.menu.core.Menus; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/dev/loki/loparkour/menu/settings/ParkourSettingsMenu.java b/src/main/java/dev/loki/loparkour/menu/settings/ParkourSettingsMenu.java index bfcb9ab..911632d 100644 --- a/src/main/java/dev/loki/loparkour/menu/settings/ParkourSettingsMenu.java +++ b/src/main/java/dev/loki/loparkour/menu/settings/ParkourSettingsMenu.java @@ -5,7 +5,7 @@ import dev.loki.loparkour.config.core.Config; import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.menu.core.LPMenu; import dev.loki.loparkour.menu.core.Menus; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import dev.loki.loparkour.player.core.ParkourPlayer; import dev.loki.loparkour.style.core.Style; import dev.loki.loparkour.util.text.ColorUtil; diff --git a/src/main/java/dev/loki/loparkour/menu/settings/SettingsMenu.java b/src/main/java/dev/loki/loparkour/menu/settings/SettingsMenu.java index 1a1a8fa..aebdd36 100644 --- a/src/main/java/dev/loki/loparkour/menu/settings/SettingsMenu.java +++ b/src/main/java/dev/loki/loparkour/menu/settings/SettingsMenu.java @@ -3,7 +3,7 @@ package dev.loki.loparkour.menu.settings; import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.menu.core.LPMenu; import dev.loki.loparkour.menu.core.Menus; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import dev.loki.loparkour.player.core.ParkourPlayer; import dev.loki.loparkour.player.core.ParkourUser; import dev.lolib.gui.InventoryGUI; diff --git a/src/main/java/dev/loki/loparkour/mode/impl/multi/SpectatorMode.java b/src/main/java/dev/loki/loparkour/mode/impl/multi/SpectatorMode.java index ed2b78f..b93b7cd 100644 --- a/src/main/java/dev/loki/loparkour/mode/impl/multi/SpectatorMode.java +++ b/src/main/java/dev/loki/loparkour/mode/impl/multi/SpectatorMode.java @@ -5,7 +5,7 @@ import dev.loki.loparkour.mode.base.Mode; import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.leaderboard.core.Leaderboard; import dev.loki.loparkour.menu.core.Menus; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import dev.loki.loparkour.player.spectator.ParkourSpectator; import dev.loki.loparkour.player.core.ParkourUser; import dev.loki.loparkour.session.core.Session; diff --git a/src/main/java/dev/loki/loparkour/player/core/ParkourPlayer.java b/src/main/java/dev/loki/loparkour/player/core/ParkourPlayer.java index 30083a9..eed720b 100644 --- a/src/main/java/dev/loki/loparkour/player/core/ParkourPlayer.java +++ b/src/main/java/dev/loki/loparkour/player/core/ParkourPlayer.java @@ -4,7 +4,7 @@ import com.google.gson.annotations.Expose; import dev.loki.loparkour.LoParkour; import dev.loki.loparkour.generator.core.coordinator.ParkourGenerator; import dev.loki.loparkour.generator.core.model.Profile; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import dev.loki.loparkour.mode.base.MultiMode; import dev.loki.loparkour.player.data.PreviousData; import dev.loki.loparkour.player.service.PlayerSettingsManager; diff --git a/src/main/java/dev/loki/loparkour/player/core/ParkourUser.java b/src/main/java/dev/loki/loparkour/player/core/ParkourUser.java index 0576733..7d93205 100644 --- a/src/main/java/dev/loki/loparkour/player/core/ParkourUser.java +++ b/src/main/java/dev/loki/loparkour/player/core/ParkourUser.java @@ -1,12 +1,12 @@ package dev.loki.loparkour.player.core; import dev.loki.loparkour.player.service.UserRegistry; -import dev.loki.loparkour.player.service.ScoreboardManager; +import dev.loki.loparkour.player.service.ui.ScoreboardManager; import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.config.options.Option; import dev.loki.loparkour.generator.core.coordinator.ParkourGenerator; import dev.loki.loparkour.hook.floodgate.FloodgateHook; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import dev.loki.loparkour.player.data.PreviousData; import dev.loki.loparkour.session.core.Session; import dev.loki.loparkour.util.text.ColorUtil; diff --git a/src/main/java/dev/loki/loparkour/player/core/PlayerSpawnSetup.java b/src/main/java/dev/loki/loparkour/player/core/PlayerSpawnSetup.java index 4fdbf65..b0e72fb 100644 --- a/src/main/java/dev/loki/loparkour/player/core/PlayerSpawnSetup.java +++ b/src/main/java/dev/loki/loparkour/player/core/PlayerSpawnSetup.java @@ -2,7 +2,7 @@ package dev.loki.loparkour.player.core; import dev.loki.loparkour.LoParkour; import dev.loki.loparkour.config.core.Config; -import dev.loki.loparkour.player.service.ParkourHotbar; +import dev.loki.loparkour.player.service.ui.ParkourHotbar; import dev.lolib.scheduler.Scheduler; import org.bukkit.GameMode; import org.bukkit.Location; diff --git a/src/main/java/dev/loki/loparkour/player/service/PlayerSettingsManager.java b/src/main/java/dev/loki/loparkour/player/service/PlayerSettingsManager.java index 058b16e..f126ad8 100644 --- a/src/main/java/dev/loki/loparkour/player/service/PlayerSettingsManager.java +++ b/src/main/java/dev/loki/loparkour/player/service/PlayerSettingsManager.java @@ -2,7 +2,7 @@ package dev.loki.loparkour.player.service; import dev.loki.loparkour.player.core.ParkourPlayer; import dev.loki.loparkour.config.options.Option; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/dev/loki/loparkour/player/service/UserRegistry.java b/src/main/java/dev/loki/loparkour/player/service/UserRegistry.java index 7524735..3a49e2e 100644 --- a/src/main/java/dev/loki/loparkour/player/service/UserRegistry.java +++ b/src/main/java/dev/loki/loparkour/player/service/UserRegistry.java @@ -2,8 +2,8 @@ package dev.loki.loparkour.player.service; import dev.loki.loparkour.player.core.ParkourUser; import dev.loki.loparkour.player.core.ParkourPlayer; -import dev.loki.loparkour.api.event.ParkourJoinEvent; -import dev.loki.loparkour.api.event.ParkourLeaveEvent; +import dev.loki.loparkour.api.event.session.ParkourJoinEvent; +import dev.loki.loparkour.api.event.session.ParkourLeaveEvent; import dev.loki.loparkour.config.core.Config; import dev.loki.loparkour.mode.base.Mode; import dev.loki.loparkour.mode.base.Modes; diff --git a/src/main/java/dev/loki/loparkour/player/service/ParkourHotbar.java b/src/main/java/dev/loki/loparkour/player/service/ui/ParkourHotbar.java similarity index 92% rename from src/main/java/dev/loki/loparkour/player/service/ParkourHotbar.java rename to src/main/java/dev/loki/loparkour/player/service/ui/ParkourHotbar.java index bf1715a..c6090b6 100644 --- a/src/main/java/dev/loki/loparkour/player/service/ParkourHotbar.java +++ b/src/main/java/dev/loki/loparkour/player/service/ui/ParkourHotbar.java @@ -1,9 +1,9 @@ -package dev.loki.loparkour.player.service; +package dev.loki.loparkour.player.service.ui; import dev.loki.loparkour.player.core.ParkourPlayer; import dev.loki.loparkour.config.core.Config; import dev.loki.loparkour.config.locale.Locales; -import dev.loki.loparkour.menu.core.ParkourOption; +import dev.loki.loparkour.menu.core.screen.ParkourOption; import org.jetbrains.annotations.NotNull; /** diff --git a/src/main/java/dev/loki/loparkour/player/service/ScoreboardManager.java b/src/main/java/dev/loki/loparkour/player/service/ui/ScoreboardManager.java similarity index 99% rename from src/main/java/dev/loki/loparkour/player/service/ScoreboardManager.java rename to src/main/java/dev/loki/loparkour/player/service/ui/ScoreboardManager.java index 5fb4cf1..ffb9c65 100644 --- a/src/main/java/dev/loki/loparkour/player/service/ScoreboardManager.java +++ b/src/main/java/dev/loki/loparkour/player/service/ui/ScoreboardManager.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.player.service; +package dev.loki.loparkour.player.service.ui; import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.generator.core.coordinator.ParkourGenerator; diff --git a/src/main/java/dev/loki/loparkour/player/spectator/ParkourSpectator.java b/src/main/java/dev/loki/loparkour/player/spectator/ParkourSpectator.java index a203355..b9d01ab 100644 --- a/src/main/java/dev/loki/loparkour/player/spectator/ParkourSpectator.java +++ b/src/main/java/dev/loki/loparkour/player/spectator/ParkourSpectator.java @@ -3,7 +3,7 @@ import dev.loki.loparkour.player.core.ParkourUser; import dev.loki.loparkour.player.core.ParkourPlayer; import dev.loki.loparkour.LoParkour; -import dev.loki.loparkour.api.event.ParkourSpectateEvent; +import dev.loki.loparkour.api.event.session.ParkourSpectateEvent; import dev.loki.loparkour.config.locale.Locales; import dev.loki.loparkour.player.data.PreviousData; import dev.loki.loparkour.session.core.Session; diff --git a/src/main/java/dev/loki/loparkour/schematic/convert/LpschemConverter.java b/src/main/java/dev/loki/loparkour/schematic/convert/LpschemConverter.java index e38d75a..e8c72ef 100644 --- a/src/main/java/dev/loki/loparkour/schematic/convert/LpschemConverter.java +++ b/src/main/java/dev/loki/loparkour/schematic/convert/LpschemConverter.java @@ -4,7 +4,7 @@ import com.sk89q.worldedit.extent.clipboard.Clipboard; import dev.loki.loparkour.LoParkour; import dev.loki.loparkour.schematic.config.SchematicDifficultyConfig; import dev.loki.loparkour.schematic.legacy.lpschem.LPSchematicLegacy; -import dev.loki.loparkour.schematic.legacy.lpschem.SchematicMetadata; +import dev.loki.loparkour.schematic.legacy.lpschem.pojo.SchematicMetadata; import dev.loki.loparkour.schematic.schem.SchematicClipboardBuilder; import dev.loki.loparkour.schematic.schem.SchemWriter; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/LPSchematicLegacy.java b/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/LPSchematicLegacy.java index 7c121f5..bb2a896 100644 --- a/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/LPSchematicLegacy.java +++ b/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/LPSchematicLegacy.java @@ -10,6 +10,11 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.List; +import dev.loki.loparkour.schematic.legacy.lpschem.pojo.SchematicDimensions; +import dev.loki.loparkour.schematic.legacy.lpschem.pojo.SchematicLogic; +import dev.loki.loparkour.schematic.legacy.lpschem.pojo.SchematicMarkers; +import dev.loki.loparkour.schematic.legacy.lpschem.pojo.SchematicMetadata; +import dev.loki.loparkour.schematic.legacy.lpschem.pojo.SchematicVisuals; import java.util.zip.GZIPInputStream; /** diff --git a/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/SchematicDimensions.java b/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/pojo/SchematicDimensions.java similarity index 72% rename from src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/SchematicDimensions.java rename to src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/pojo/SchematicDimensions.java index b44a65f..c6fd758 100644 --- a/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/SchematicDimensions.java +++ b/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/pojo/SchematicDimensions.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.schematic.legacy.lpschem; +package dev.loki.loparkour.schematic.legacy.lpschem.pojo; /** Gson POJO for legacy {@code .lpschem}. */ public class SchematicDimensions { diff --git a/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/SchematicLogic.java b/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/pojo/SchematicLogic.java similarity index 62% rename from src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/SchematicLogic.java rename to src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/pojo/SchematicLogic.java index 4ab590f..4aed682 100644 --- a/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/SchematicLogic.java +++ b/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/pojo/SchematicLogic.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.schematic.legacy.lpschem; +package dev.loki.loparkour.schematic.legacy.lpschem.pojo; /** Gson POJO for legacy {@code .lpschem} (optional section). */ public class SchematicLogic { diff --git a/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/SchematicMarkers.java b/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/pojo/SchematicMarkers.java similarity index 84% rename from src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/SchematicMarkers.java rename to src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/pojo/SchematicMarkers.java index e4fceac..677789e 100644 --- a/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/SchematicMarkers.java +++ b/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/pojo/SchematicMarkers.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.schematic.legacy.lpschem; +package dev.loki.loparkour.schematic.legacy.lpschem.pojo; import java.util.List; diff --git a/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/SchematicMetadata.java b/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/pojo/SchematicMetadata.java similarity index 85% rename from src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/SchematicMetadata.java rename to src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/pojo/SchematicMetadata.java index 0d7c64e..676bfe6 100644 --- a/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/SchematicMetadata.java +++ b/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/pojo/SchematicMetadata.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.schematic.legacy.lpschem; +package dev.loki.loparkour.schematic.legacy.lpschem.pojo; /** Gson POJO for legacy {@code .lpschem}. */ public class SchematicMetadata { diff --git a/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/SchematicVisuals.java b/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/pojo/SchematicVisuals.java similarity index 63% rename from src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/SchematicVisuals.java rename to src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/pojo/SchematicVisuals.java index d1f9edb..edf1b19 100644 --- a/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/SchematicVisuals.java +++ b/src/main/java/dev/loki/loparkour/schematic/legacy/lpschem/pojo/SchematicVisuals.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.schematic.legacy.lpschem; +package dev.loki.loparkour.schematic.legacy.lpschem.pojo; /** Gson POJO for legacy {@code .lpschem} (optional section). */ public class SchematicVisuals { diff --git a/src/main/java/dev/loki/loparkour/schematic/schem/SchematicClipboardBuilder.java b/src/main/java/dev/loki/loparkour/schematic/schem/SchematicClipboardBuilder.java index f8c3546..1628ceb 100644 --- a/src/main/java/dev/loki/loparkour/schematic/schem/SchematicClipboardBuilder.java +++ b/src/main/java/dev/loki/loparkour/schematic/schem/SchematicClipboardBuilder.java @@ -7,7 +7,7 @@ import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.regions.CuboidRegion; import com.sk89q.worldedit.world.block.BlockState; import dev.loki.loparkour.schematic.legacy.lpschem.LPSchematicLegacy; -import dev.loki.loparkour.schematic.legacy.lpschem.SchematicDimensions; +import dev.loki.loparkour.schematic.legacy.lpschem.pojo.SchematicDimensions; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.block.Block; diff --git a/src/main/java/dev/loki/loparkour/storage/sql/StorageSQL.java b/src/main/java/dev/loki/loparkour/storage/sql/StorageSQL.java index 2d03736..4df71f0 100644 --- a/src/main/java/dev/loki/loparkour/storage/sql/StorageSQL.java +++ b/src/main/java/dev/loki/loparkour/storage/sql/StorageSQL.java @@ -7,6 +7,9 @@ import org.jetbrains.annotations.NotNull; import java.sql.SQLException; import java.util.Map; import java.util.UUID; +import dev.loki.loparkour.storage.sql.repo.SQLPlayerRepository; +import dev.loki.loparkour.storage.sql.repo.SQLScoreRepository; +import dev.loki.loparkour.storage.sql.schema.SQLSchemaManager; import java.util.logging.Logger; /** diff --git a/src/main/java/dev/loki/loparkour/storage/sql/SQLQueryBuilder.java b/src/main/java/dev/loki/loparkour/storage/sql/query/SQLQueryBuilder.java similarity index 98% rename from src/main/java/dev/loki/loparkour/storage/sql/SQLQueryBuilder.java rename to src/main/java/dev/loki/loparkour/storage/sql/query/SQLQueryBuilder.java index ff79628..d6f9a7d 100644 --- a/src/main/java/dev/loki/loparkour/storage/sql/SQLQueryBuilder.java +++ b/src/main/java/dev/loki/loparkour/storage/sql/query/SQLQueryBuilder.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.storage.sql; +package dev.loki.loparkour.storage.sql.query; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/dev/loki/loparkour/storage/sql/SQLQueryExecutor.java b/src/main/java/dev/loki/loparkour/storage/sql/query/SQLQueryExecutor.java similarity index 94% rename from src/main/java/dev/loki/loparkour/storage/sql/SQLQueryExecutor.java rename to src/main/java/dev/loki/loparkour/storage/sql/query/SQLQueryExecutor.java index 36a26e4..6459c88 100644 --- a/src/main/java/dev/loki/loparkour/storage/sql/SQLQueryExecutor.java +++ b/src/main/java/dev/loki/loparkour/storage/sql/query/SQLQueryExecutor.java @@ -1,9 +1,10 @@ -package dev.loki.loparkour.storage.sql; +package dev.loki.loparkour.storage.sql.query; import dev.loki.loparkour.LoParkour; import java.sql.Connection; import java.sql.PreparedStatement; +import dev.loki.loparkour.storage.sql.SQLConnectionManager; import java.sql.SQLException; /** @@ -14,11 +15,11 @@ import java.sql.SQLException; * * @since 5.0.0 */ -class SQLQueryExecutor { +public class SQLQueryExecutor { private final SQLConnectionManager connectionManager; - SQLQueryExecutor(SQLConnectionManager connectionManager) { + public SQLQueryExecutor(SQLConnectionManager connectionManager) { this.connectionManager = connectionManager; } diff --git a/src/main/java/dev/loki/loparkour/storage/sql/SQLPlayerRepository.java b/src/main/java/dev/loki/loparkour/storage/sql/repo/SQLPlayerRepository.java similarity index 77% rename from src/main/java/dev/loki/loparkour/storage/sql/SQLPlayerRepository.java rename to src/main/java/dev/loki/loparkour/storage/sql/repo/SQLPlayerRepository.java index 26f92b2..8fe654c 100644 --- a/src/main/java/dev/loki/loparkour/storage/sql/SQLPlayerRepository.java +++ b/src/main/java/dev/loki/loparkour/storage/sql/repo/SQLPlayerRepository.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.storage.sql; +package dev.loki.loparkour.storage.sql.repo; import dev.loki.loparkour.player.core.ParkourPlayer; import org.jetbrains.annotations.NotNull; @@ -7,19 +7,22 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import dev.loki.loparkour.storage.sql.SQLConnectionManager; +import dev.loki.loparkour.storage.sql.SQLDataMapper; +import dev.loki.loparkour.storage.sql.query.SQLQueryBuilder; import java.util.logging.Logger; /** * CRUD for player data. */ -class SQLPlayerRepository { +public class SQLPlayerRepository { private static final Logger LOGGER = Logger.getLogger(SQLPlayerRepository.class.getName()); private SQLPlayerRepository() { } - static void readPlayer(@NotNull SQLConnectionManager manager, @NotNull ParkourPlayer player) { + public static void readPlayer(@NotNull SQLConnectionManager manager, @NotNull ParkourPlayer player) { if (!manager.isConnected()) { return; } @@ -43,7 +46,7 @@ class SQLPlayerRepository { } } - static void writePlayer(@NotNull SQLConnectionManager manager, @NotNull ParkourPlayer player) { + public static void writePlayer(@NotNull SQLConnectionManager manager, @NotNull ParkourPlayer player) { if (!manager.isConnected()) { return; } diff --git a/src/main/java/dev/loki/loparkour/storage/sql/SQLScoreRepository.java b/src/main/java/dev/loki/loparkour/storage/sql/repo/SQLScoreRepository.java similarity index 81% rename from src/main/java/dev/loki/loparkour/storage/sql/SQLScoreRepository.java rename to src/main/java/dev/loki/loparkour/storage/sql/repo/SQLScoreRepository.java index f70a866..fe5738f 100644 --- a/src/main/java/dev/loki/loparkour/storage/sql/SQLScoreRepository.java +++ b/src/main/java/dev/loki/loparkour/storage/sql/repo/SQLScoreRepository.java @@ -1,4 +1,4 @@ -package dev.loki.loparkour.storage.sql; +package dev.loki.loparkour.storage.sql.repo; import dev.loki.loparkour.leaderboard.model.Score; import org.jetbrains.annotations.NotNull; @@ -9,12 +9,15 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.Map; import java.util.UUID; +import dev.loki.loparkour.storage.sql.SQLConnectionManager; +import dev.loki.loparkour.storage.sql.SQLDataMapper; +import dev.loki.loparkour.storage.sql.query.SQLQueryBuilder; import java.util.logging.Logger; /** * CRUD for leaderboard scores. */ -class SQLScoreRepository { +public class SQLScoreRepository { private static final Logger LOGGER = Logger.getLogger(SQLScoreRepository.class.getName()); @@ -22,7 +25,7 @@ class SQLScoreRepository { } @NotNull - static Map readScores(@NotNull SQLConnectionManager manager, @NotNull String mode) { + public static Map readScores(@NotNull SQLConnectionManager manager, @NotNull String mode) { if (!manager.isConnected()) { return Map.of(); } @@ -41,7 +44,7 @@ class SQLScoreRepository { } } - static void writeScores(@NotNull SQLConnectionManager manager, + public static void writeScores(@NotNull SQLConnectionManager manager, @NotNull String mode, @NotNull Map scores) { if (!manager.isConnected() || scores.isEmpty()) { diff --git a/src/main/java/dev/loki/loparkour/storage/sql/SQLMigrationManager.java b/src/main/java/dev/loki/loparkour/storage/sql/schema/SQLMigrationManager.java similarity index 93% rename from src/main/java/dev/loki/loparkour/storage/sql/SQLMigrationManager.java rename to src/main/java/dev/loki/loparkour/storage/sql/schema/SQLMigrationManager.java index e1bf252..b902618 100644 --- a/src/main/java/dev/loki/loparkour/storage/sql/SQLMigrationManager.java +++ b/src/main/java/dev/loki/loparkour/storage/sql/schema/SQLMigrationManager.java @@ -1,5 +1,6 @@ -package dev.loki.loparkour.storage.sql; +package dev.loki.loparkour.storage.sql.schema; +import dev.loki.loparkour.storage.sql.query.SQLQueryExecutor; import dev.loki.loparkour.config.options.Option; /** @@ -7,11 +8,11 @@ import dev.loki.loparkour.config.options.Option; * * @since 5.0.0 */ -class SQLMigrationManager { +public class SQLMigrationManager { private final SQLQueryExecutor queryExecutor; - SQLMigrationManager(SQLQueryExecutor queryExecutor) { + public SQLMigrationManager(SQLQueryExecutor queryExecutor) { this.queryExecutor = queryExecutor; } diff --git a/src/main/java/dev/loki/loparkour/storage/sql/SQLSchemaManager.java b/src/main/java/dev/loki/loparkour/storage/sql/schema/SQLSchemaManager.java similarity index 85% rename from src/main/java/dev/loki/loparkour/storage/sql/SQLSchemaManager.java rename to src/main/java/dev/loki/loparkour/storage/sql/schema/SQLSchemaManager.java index b64c9c8..e79cb78 100644 --- a/src/main/java/dev/loki/loparkour/storage/sql/SQLSchemaManager.java +++ b/src/main/java/dev/loki/loparkour/storage/sql/schema/SQLSchemaManager.java @@ -1,15 +1,17 @@ -package dev.loki.loparkour.storage.sql; +package dev.loki.loparkour.storage.sql.schema; import org.jetbrains.annotations.NotNull; import java.sql.Connection; import java.sql.PreparedStatement; +import dev.loki.loparkour.storage.sql.SQLConnectionManager; +import dev.loki.loparkour.storage.sql.query.SQLQueryBuilder; import java.sql.SQLException; /** * Creates the database schema (DDL) for parkour storage. */ -class SQLSchemaManager { +public class SQLSchemaManager { private static final String ADAPTIVE_STATS_TABLE = """ CREATE TABLE IF NOT EXISTS loparkour_player_stats ( @@ -28,7 +30,7 @@ class SQLSchemaManager { private SQLSchemaManager() { } - static void createTables(@NotNull SQLConnectionManager manager, @NotNull String mode) throws SQLException { + public static void createTables(@NotNull SQLConnectionManager manager, @NotNull String mode) throws SQLException { String tableName = SQLQueryBuilder.getTableName(mode); try (Connection conn = manager.getConnection()) { createScoresTable(conn, tableName);