# v1.9.0
## Fixed
## Changed
- Fixed Guardian Blade and Zephyr's Wrath so they can no longer be reactivated while already active
- Fixed delayed cooldown enforcement on those abilities so their cooldown now begins only after the active effect finishes
- Fixed
/as <sword-name> selfadmin test command: abilities now properly target the caster instead of the looked-at location, and the caster is included in ability effects (damage, knockback, potions, etc.)- Fixed self-test mode bypassing cooldowns for rapid re-testing while preserving active-state guards
- Fixed compiler warnings: replaced deprecated WorldBorder.setSize() with changeSize() and removed unused variable
## Improved
- Reworked Zephyr's Wrath into Tempest Cage, a look-targeted storm zone that pulls, lifts, and bursts enemies caught inside
- Removed Zephyr's old right-click self-launch behavior in favor of the new Tempest Cage ability flow
- Void Blade: smooth blended pull physics replace hard velocity overwrite, preventing erratic orbiting and jitter
- Void Blade: cinematic 5-second silent phase with 7-beat accelerating heartbeat buildup and shrinking vortex particles
- Void Blade: isolated audio — heartbeat is the only sound during the silent/crush phase for clean suspense
- Zephyr's Wrath: three-phase Tempest Cage (Summon → Hold → Compress) with escalating intensity
- Zephyr's Wrath: icy wind visual theme (SNOWFLAKE and cyan DUST particles) replacing plain cloud effects
- Zephyr's Wrath: compress phase shrinks the cage from 6→3 blocks with rapid wind burst audio
- Zephyr's Wrath: enhanced final burst with vertical wind column, WITHER II, and higher launch
- Updated Zephyr's default ability attributes and config template to support the new Tempest Cage behavior
# v1.8.20
## Fixed
- Fixed an issue where manual
config.ymledits could be overwritten on server restart or/reload- Fixed a protection gap that allowed Astral Swords to be placed into the new Shelf blocks when container storage was disabled
## Changed
- Improved reload safety so server owners can safely edit configs directly without losing changes on the next startup cycle
## Improved
- Expanded storage protection coverage to include Shelf blocks alongside existing container, bundle, hopper, and item frame restrictions
- Cleaned up internal logging in the Premium build for clearer error reporting and easier maintenance
# v1.8.19
## Fixed
## Changed
- Fixed a bug where passive sword effects (Speed, Fire Resistance, Resistance, Jump Boost, Water Breathing, Dolphin's Grace) became permanently applied if a player dropped the sword from the inventory screen
- Fixed two potential null pointer exceptions when retrieving
ConfigManagerviaServicesManager.getRegistration()inapplyPulseSpeedand theCRITLOCK_BLADEhit handler- Fixed a potential null pointer exception when iterating inventory contents in
hasEclipseBlade
- Replaced the infinite-duration passive effect system with a 1-second pulse model
- Effects are now applied with a 30-tick (1.5s) duration and refreshed every 20 ticks (1s) via a per-playerBukkitTask
- Pulse tasks are started onPlayerItemHeldEventandEntityPickupItemEvent, and stopped on item switch, drop, or player disconnect
- Effects now self-expire within 1.5 seconds if all removal events are missed, eliminating any persistence risk
- Removed the global 5-secondBukkitRunnablepolling task (swordEffectsTask) — no longer needed
## Improved
- Converted
pulsePassiveEffectsswitch from traditionalcase:/breakto arrow syntax (->) for consistency with the rest of the file- Removed unnecessary
.doubleValue()unboxing call onCRITLOCK_BLADEcrit multiplier- Removed redundant
try/catchblocks that were masking null-safety issues as generic exception fallbacks
