[Feat] Roguelike wave-run prototype with CTF infrastructure#308
Merged
Conversation
- RoguelikeRun gamemode: 3-wave PvE (pillagers → wither skeletons → mixed), configurable spawn center and radius, TextDisplay reward chest on completion - Config.Roguelike section: spawn world/X/Y/Z, radius, per-wave enemy counts - QueueManager: register roguelike queue, start solo run immediately on enqueue - MainMenu: Wither Skeleton Skull queue button paired with CTF button - TODO #285: distribute MiscItems once consumable item system is built
- Reduce RoguelikeRun safety cap from 15 min to 5 min (300 s) - Add DamageEntry record to Hostile tracking attacker UUID, name, weapon (SwordItemType), shard damage, and toughness damage - Override hit() in Hostile to append entries only when the hit actually lands (guarded by invulnerability-window check)
# Conflicts: # src/main/java/btm/sword/gamemode/QueueManager.java
Add SwordTeam enum (RED/BLUE/GREEN/YELLOW) backed by Bukkit scoreboard tags. SwordEntity.hit() skips damage when attacker and defender share a team tag. Assignments: Hostile → RED, SwordPlayer → BLUE, Passive → GREEN. joinTeam() / getTeam() exposed on SwordEntity.
…, scoring, banner-on-head (#280) - Config.Ctf: spawn coords, flag return timer, respawn delay, capture threshold, carrier slow config - CtfTeam enum: RED/BLUE with banner factory (patterned banners), spawn locations from config - FlagEntity: IDLE/CARRIED/DROPPED state machine, ArmorStand visual at base, banner-on-head carrier effect, auto-return timer - CaptureTheFlag1v1 rewrite: proper lifecycle, 5s respawn with team-spawn return, first-to-N or timer win, score messaging - QueueManager: CTF 2-player queue wired, activeMatches map for death routing, startCtfDebug() bypass - PlayerListener: routes death events to active CTF match for flag drop + respawn scheduling - CommonConstraints: NOT_CARRYING_FLAG stub (pending global context constraint refactor) - Prefab.PotionEffects: FLAG_CARRIER_SLOW (config-backed Slowness II applied to flag carriers) - DevMenu: "Start CTF (Solo Debug)" button — bypasses queue, instant launch for one player
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR implements a complete roguelike wave-run gamemode with capture-the-flag (CTF) infrastructure. The branch brings together 14 commits featuring:
/devfolder with stop-run button in MainMenuRelated Issues
Testing
Manual testing via
/gradlew runServer— verify: