Skip to content

refactor: remove shared/phase module and migrate to Xerus#171

Merged
TheMeinerLP merged 1 commit intomainfrom
refactor/remove-phase-module
Apr 25, 2026
Merged

refactor: remove shared/phase module and migrate to Xerus#171
TheMeinerLP merged 1 commit intomainfrom
refactor/remove-phase-module

Conversation

@TheMeinerLP
Copy link
Copy Markdown
Contributor

Summary

  • Removes the internal shared/phase module (net.elytrarace.api.phase.*) entirely
  • server module now uses Xerus 100% for the phase system; dead platform wrappers (MinestomPhaseScheduler, MinestomPhaseTask, MinestomEventRegistrar, MinestomEventListener) deleted — Xerus phases handle scheduling internally
  • plugins/setup: BukkitPhaseScheduler / BukkitEventRegistrar deleted (setup does not need a phase system)
  • plugins/game (legacy): all old-style phase classes removed; SimplePhaseComponent / SimplePhaseSystem retained (self-contained, no external phase dependency)
  • ArchUnit shared_phase_must_not_use_minestom rule removed
  • CLAUDE.md and settings.gradle.kts updated

Closes #166

Notes

Xerus requires Java 25 and does not support Paper. For that reason plugins/game and plugins/setup do not take a Xerus dependency — the setup plugin needs no phase system at all, and plugins/game is a legacy module being replaced by the server module.

Test plan

  • ./gradlew build passes
  • No file imports net.elytrarace.api.phase.*
  • ArchUnit tests pass (rule for deleted module removed)
  • Manual smoke-test of plugins/setup in-game (no phase regression expected)

🤖 Generated with Claude Code

Closes #166

- Delete shared/phase module (net.elytrarace.api.phase.*) entirely
- server: platform layer (MinestomPhaseScheduler, MinestomPhaseTask,
  MinestomEventRegistrar, MinestomEventListener) removed — Xerus phases
  handle scheduling internally without a separate PhaseScheduler
- server: remove project(":shared:phase") dependency
- plugins/game: delete old-style phase files (EndPhase, GamePhase,
  LobbyPhase, PreparationPhase, PhaseComponent, PhaseSystem,
  BukkitPhaseScheduler, BukkitEventRegistrar); strip phase references
  from ElytraRace, GameService, GameServiceImpl, DefaultListener
- plugins/setup: delete BukkitPhaseScheduler and BukkitEventRegistrar
  (setup does not need a phase system); remove xerus dependency
- settings.gradle.kts: remove include("shared:phase")
- ArchUnit: drop shared_phase_must_not_use_minestom rule
- CLAUDE.md: update module docs and Phase System section to reference Xerus
@TheMeinerLP TheMeinerLP merged commit d111d6b into main Apr 25, 2026
7 checks passed
@TheMeinerLP TheMeinerLP deleted the refactor/remove-phase-module branch April 25, 2026 11:18
@voyager-release-bot
Copy link
Copy Markdown

🎉 This PR is included in version 1.6.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor: remove shared/phase module and migrate to Xerus

1 participant