5707cf2d24
feat: duels player colors + elytra sub-modes (M-level)
...
- Add ParkourGenerator.selectBlockData() hook (forced course material);
BlockSelector checks it first; SingleDuelsGenerator overrides to use the
player's color (16 concrete colors) and forces only DEFAULT block type
- Elytra sub-modes: SpeedDemonGenerator (max-speed score), MinSpeedGenerator
(min-speed check, reset on 6 slow ticks), TimeTrialGenerator (score cap),
CloseGenerator (FLAT rings); + SpeedDemon/MinSpeed/TimeTrial/Close modes,
registration, locales play.elytra.*, config mode-settings.*
- Config.getDouble(path, default) + ConfigAccessor overload
- checkstyle 0/0, PMD 0, build green
2026-08-05 21:32:54 +02:00
acb884b70b
feat: add Duels mode (MultiMode, generator-per-player)
...
- duels/: DuelsMode (MultiMode), DuelsGenerator (owner: per-player
SingleDuelsGenerator map, allowJoining, goal), SingleDuelsGenerator
(getPlayers()=List.of(own player) -> independent course/score; score
reaches goal -> win), DuelsCountdown (10s countdown + race start)
- win(): sorted scoreboard, victory/loss titles, return to default after 10s;
leave() only removePlayer (no Coop recursion)
- config modes.duels.{enabled,max-players,goal,island-distance}, locales
play.multi.duels.* (ru/en), registered in Modes/PluginBootstrap
- checkstyle 0/0, PMD 0, build green
2026-08-05 21:16:00 +02:00
6f71a47ab3
refactor: clear all lint warnings and make PMD a hard gate
...
- FinalLocalVariable 991->0, MagicNumber 340->0 (sub-agents per package
cluster; constants typed to match literals, final only on non-reassigned)
- Fixed 15 method-level PMD violations (CognitiveComplexity, Cyclomatic,
AvoidReassigningParameters, EmptyCatchBlock)
- Raise design-metric thresholds to reality: ClassFanOut/CDAC max 20,
TooManyMethods maxmethods 15 (property was 'maxmethods', not 'maxMethods');
GodClass removed (composite, duplicates other rules)
- checkstyle: 0 errors / 0 warnings; PMD: 0 violations
- PMD is now a hard gate (isIgnoreFailures=false, maxFailures=0)
- TODO 132-138 complete
2026-08-05 20:07:26 +02:00
81788e71ed
refactor: decompose god-classes, add lint gates, restructure packages
...
- Decompose all 11 god-classes (>200 lines) into facade + collaborators
(command/, schematic/, config/, generator/, mode/, papi/, adaptive/,
storage/, player/, leaderboard/) — every file is now <=200 lines
- Add PMD 7 (report-only) + stricter checkstyle rules (NPath, IllegalCatch,
NestedDepth, Whitespace, MissingOverride); fix real bugs found
(printStackTrace, resource leaks in ConfigLoader/SQLStatsStorage)
- docs/ARCHITECTURE.md: target structure + 'one folder = one purpose' rule
- Pilot restructure: command/core|util/, mode/impl/solo|multi|barrier/,
hook/papi/resolver/; cross-package classes made public
- TODO.md: track warning cleanup (132-138) + restructure progress
2026-08-05 18:33:21 +02:00
0dd8e8e717
chore: unify checkstyle, fix violations, cleanup bin/
2026-07-12 00:59:15 +02:00