- Wave mob lifecycle API (1.1): Added WaveMob snapshots, entity lookup methods on InfinityRiftsApi, and WaveMobState / remove / complete reason enums.
- Mob death event: Added GatewayWaveMobDeathEvent (once per tracked mob) with killer, damage cause, remaining count, and wave-complete flag.
- Mob remove event: Added GatewayWaveMobRemoveEvent for non-death disappearances (cleanup, unload, session stop).
- Wave completion event: Added GatewayWaveCompletedEvent with spawn/kill/remove statistics, duration, completion reason, and optional next wave. No wave-completion event existed before this release.
- Single-source tracking: Added WaveMobRegistry as the authoritative mob lifecycle tracker with exactly-once event publication and Folia-safe integration with existing schedulers.
- Reliability: Added wave-completion re-entry guard; plugin cleanup is never reported as a natural kill.
- Tests: Added JUnit 5 unit tests for registry lifecycle and API delegation.
- Documentation: Updated developer-api.md and docs/events.md with usage examples and threading notes.
- Public developer API: Added the stable io.nightbeam.infinityrifts.api contract for reading loaded gateway definitions and immutable active-session snapshots.
- API service access: Added Bukkit ServicesManager registration through InfinityRiftsProvider, with optional and required lookup helpers.
- Gateway control: Added trusted API operations for starting player-owned gateways and ending active sessions with structured result and end-reason enums.
- Lifecycle events: Added public synchronous events for gateway start, wave start, restoration, and completed cleanup.
- API artifact: Added the unobfuscated InfinityRifts-1.10.1-api.jar classifier while preserving the public API package in the production artifact.
- Documentation: Consolidated the public documentation into a consumer guide and a complete Developer API reference.
- Authoritative gateway timers: Replaced separate countdown decrements with millis-based end times so the wave timer, gateway timer, timeout checks, and boss bar display all read the same computed remaining time.
- Wave timer starts after spawn: Per-wave countdown now arms only after all spawn tasks finish, so timeout cannot trigger while mobs are still spawning.
- Wave time on boss bar: Wave boss bar shows <wave-time> (and "Spawning..." during spawn phase) so players see the same timer the backend uses for wave timeout.
- Session-safe UI: Boss bars are bound to the active gateway session ID; stale bars from ended or replaced gateways are removed automatically.
- Unified session tick: One session tick handles mob reconciliation, UI updates, wave completion, wave timeout, and gateway timeout.
- Session task registry: Timer, particle, and delayed wave tasks are tracked and cancelled on fail, leave, or cleanup.
- Mob tracking hardening: Added gateway_owner and gateway_mob_kind PDC tags; reconciliation validates world and gateway ID; debug logs when mobs are untracked.
- Cleanup sweep: Failed/completed gateways remove tracked mobs plus any nearby PDC-tagged entities; MythicMobs bosses are despawned via ActiveMob API before Bukkit removal.
- Persistence: Session restore saves gatewayEndTimeMillis, waveEndTimeMillis, and waveDurationSeconds with legacy int fallback.
- Spawn validation retained: Keeps 1.9.8 spawn location validation, retries, and fail-rift-if-wave-spawn-fails behavior integrated with the new timer system.
- Wave spawn validation fix: Fixed rift waves progressing even when no mobs actually spawned. Waves no longer auto-complete while spawns are still pending or when every spawn attempt fails.
- Real mob tracking: Mob counters are only updated after a validated entity exists in the world (non-null, correct world, valid, and not dead immediately after spawn).
- Spawn location validation: Added checks for world/chunk loading, world border, spawn protection radius, solid ground, and passable spawn space before attempting a spawn.
- Fallback spawn positions: If the selected location is invalid, the plugin searches alternate positions around the rift center with a capped attempt limit.
- Per-mob spawn retries: Failed spawns retry up to a configurable limit before giving up on that mob slot.
- Safer wave progression: Waves only complete after the spawn batch finishes, at least one mob was successfully spawned, and all tracked mobs are defeated.
- Failed spawn logging: Console warnings now include gateway id, wave number, mob type, world, coordinates, attempt number, and failure reason.
- Debug logging: Extra spawn detail is available behind general.debug: true in config.yml.
- New config options(under mechanics):
- max-spawn-attempts-per-mob: 10 retry limit per mob slot
- fail-rift-if-wave-spawn-fails: true fail the gateway if a wave produces zero successful spawns
- max-spawn-location-attempts: 16 cap on fallback location searches
Fixed
- Fixed an issue where a gateway wave could time out even after all tracked mobs were defeated.
- Improved wave completion checks before timeout failure.
- Improved debug logs for gateway mob tracking and wave status.
Improved
- Added clearer logs for failed mob spawns, removed mobs, and wave completion state.
- Boss lifecycle overhaul: Final-wave bosses no longer disappear when the gateway collapses from time expiry.
Gateways now stay active while a boss is alive collapse only triggers after the boss is defeated.- New mob flag boss: true: Mark any mob in a wave as a boss. Boss mobs must be killed before the wave or rift
can complete, and they prevent gateway collapse from total-time expiry. (boss: false by default.)- New config option boss-prevents-collapse: Set to false in failure section to restore old behavior
where the gateway collapses on time expiry regardless of bosses. Defaults to true.- Bossbar cleanup hardened: Fixed a stuck bossbar bug where bars could remain on screen after the gateway
failed or the player disconnected. Bossbars are now force-cleaned during plugin disable and every exit path.- MythicMobs PDC fallback: Added fallback mob-to-gateway matching when MythicMobs clears PDC tags,
preventing boss kills from going untracked.- Debug logging: Added structured logs around wave start/end, boss spawn/death, gateway collapse,
state transitions, and bossbar lifecycle for easier troubleshooting.
- Fixed custom mobs not spawning in rifts, including documented
type: mythic:MobNameentries.- Fixed Folia/Canvas entity thread violation during rift end cleanup.
- Fixed stuck failed bossbars by hardening all rift cleanup paths.
- Improved rift cleanup safety and readable contextual logging.
- Improved validation warnings for invalid custom mob config entries.
- Fixed an issue where the gateway boss bar would not properly disappear after completion in folia/canvas servers.
