Repository navigation
v2.2.0 — Cinematic Effects Framework
Adds a reusable visual + audio effects framework so perk abilities feel more present and distinguishable. 8 flagship perks migrated as a proof of concept; remaining perks can be migrated incrementally.
✨ What's new
EffectKit — visual effects framework
Built on EffectLib 11.0 (264 KB shaded). High-level wrappers around shape primitives so any perk can call them with one line:
| Method | Visual |
|---|---|
shockwave(loc, color, radius, ticks) |
Expanding sphere ring outward — for AoE blasts |
runeCircle(loc, color, radius, ticks) |
Persistent flat ring on the ground — for zones |
vortex(loc, color, ticks) |
Vertical column of swirling particles — for teleports / portals |
beam(from, to, color) |
Line of particles between two points — for laser/missile |
atomAround(player, color, ticks) |
Three intersecting electron rings around a player — for buffs |
helix(loc, color, ticks) |
Spinning spiral strand — for time/magic |
bloodSpray(loc) |
Quick dark-red dust burst — for kill/conversion feedback |
lightningFlash(loc) |
Visual-only lightning strike — for dramatic triggers |
magicMissile(from, to, color) |
Beam + magic-burst at source — for projectile spells |
SoundKit — vanilla layered sound presets
No resource pack required. Layers existing vanilla Sound entries with carefully timed pitches for richer cues:
| Method | Used for |
|---|---|
playSpellCast(loc) |
Crisp magical cast — enderman + beacon + chime |
playExplosion(loc) |
Heavy boom — explode + anvil + thunder tail |
playBuff(player) |
Personal heal/buff — level-up + bell |
playDebuff(player) |
Personal de-buff — wither + glass break |
playDeathRattle(loc) |
Conversion — wither break + ravager roar + cave ambient |
playPortal(loc) |
Teleport — enderman + portal + chorus fruit |
playPickup(player) |
Item / gold pickup — XP orb + UI click |
Static accessor — clean perk code
import com.vampirez.fx.VFX;
VFX.fx().shockwave(player.getLocation(), Color.RED, 5.0, 25);
VFX.sound().playExplosion(player.getLocation());No plugin reference needed — VFX lazily resolves and caches the kits on first use.
🎮 Perks migrated this release
All 8 keep their existing inline particles AND get an animated cinematic layer on top:
| Perk | New effect |
|---|---|
| Earthquake | Expanding brown shockwave + layered explosion |
| Smoke Bomb | Lingering grey rune circle on the ground + portal cue |
| Blood Moon | Persistent red atom orbit around the caster (8s) + spell-cast cue |
| Wraith Walk | Purple vortex during ghost form + AoE shockwave + death-rattle on expire |
| Holy Shield | Golden shockwave + layered explosion when shield breaks |
| Shadow Strike | Dark-purple vortex at both teleport endpoints + portal cue |
| Time Warp | Cyan helix on rewind + spell-cast cue |
| Vampire Leap | Blood spray + portal cue on takeoff |
Other ability perks keep their current effects until you call them out for a refresh.
🏗️ Under the hood
- No new tests added (effect classes are pure Bukkit API + EffectLib delegation, hard to assert without MockBukkit)
- 97/97 existing tests still pass
- Jar size: 18 MB → 34.6 MB (EffectLib + JDA from v2.1.0 both shaded)
- All effects auto-dispose via EffectLib's iteration counter — no leak risk
Requires Paper 1.21.4+ on Java 21. Same arena-template + spawn-point setup as previous releases.