refactor(player): encapsulate game state behind PlayerSettings, clear VisibilityModifier and HiddenField

- ParkourUser/ParkourPlayer/GeneratorState public mutable fields -> private + short accessors
- per-player settings extracted to player/data/PlayerSettings (ParkourPlayer 188 -> 96 lines,
  PMD-counted methods 20 -> 9); this is what fixed the TooManyMethods violation that the
  encapsulation itself introduced — by decomposition, not by lowering the threshold
- disk storage reads and writes the same canonical 12-key map as the SQL JSON column;
  legacy key names normalized on read, @Expose dropped from domain classes
- 39 settings call sites rewritten across 7 files
- HiddenField backlog cleared (Config, ObstacleGenerator, GhostService, Leaderboard,
  PagedMenu, Reward, ParticleData, World)
- checkstyle ratchet: VisibilityModifier, HiddenField, EmptyLineSeparator and
  MissingDeprecated flipped to error once their counters hit zero; suppressions.xml empty
- javac -Xmaxwarns raised so NullAway/Error Prone counts are honest
  (baseline 165/289, now 164/265)

checkstyle 0 errors / 135 warnings, PMD 0 violations, tests 94/0 fail, ./gradlew check green.
TODO.md: items 30 and 107 updated, new items 167-170, ПРОГРЕСС-6/7 recorded.
This commit is contained in:
loki5512344 2026-10-06 18:57:39 +02:00
parent c120309663
commit 02e2947f47
Signed by: boba
GPG key ID: 253067914055423B
90 changed files with 1103 additions and 660 deletions

View file

@ -113,12 +113,12 @@
<module name="HiddenField">
<property name="ignoreConstructorParameter" value="true"/>
<property name="ignoreSetter" value="true"/>
<property name="severity" value="warning"/>
<property name="severity" value="error"/>
</module>
<module name="VisibilityModifier">
<property name="allowPublicFinalFields" value="true"/>
<property name="severity" value="warning"/>
<property name="severity" value="error"/>
</module>
<module name="EmptyBlock">
@ -182,15 +182,12 @@
<!-- ============ Style and maintainability ============ -->
<module name="EmptyLineSeparator">
<property name="allowNoEmptyLineBetweenFields" value="true"/>
<property name="severity" value="warning"/>
</module>
<module name="WhitespaceAround"/>
<module name="WhitespaceAfter"/>
<module name="NoWhitespaceBefore"/>
<module name="MissingOverride"/>
<module name="MissingDeprecated">
<property name="severity" value="warning"/>
</module>
<module name="MissingDeprecated"/>
<module name="FinalLocalVariable">
<property name="validateEnhancedForLoopVariable" value="true"/>
</module>