@@ -162,6 +162,8 @@ public abstract class Spell implements Comparable<Spell>, Listener {
162162 protected ModifierSet targetModifiers ;
163163 protected ModifierSet locationModifiers ;
164164
165+ private final SpellFilter interruptFilter ;
166+
165167 protected Subspell spellOnFail ;
166168 protected Subspell spellOnInterrupt ;
167169
@@ -277,6 +279,7 @@ public Spell(MagicConfig config, String spellName) {
277279
278280 // Cast time
279281 castTime = getConfigDataInt ("cast-time" , 0 );
282+ interruptFilter = getConfigSpellFilter ("interrupt-filter" );
280283 interruptOnMove = getConfigDataBoolean ("interrupt-on-move" , true );
281284 interruptOnCast = getConfigDataBoolean ("interrupt-on-cast" , true );
282285 interruptOnDamage = getConfigDataBoolean ("interrupt-on-damage" , false );
@@ -2645,6 +2648,7 @@ public void onSpellCast(SpellCastEvent event) {
26452648 if (!interruptOnCast ) return ;
26462649 if (event .getSpell () instanceof PassiveSpell ) return ;
26472650 if (!event .getCaster ().equals (caster )) return ;
2651+ if (!interruptFilter .isEmpty () && interruptFilter .check (event .getSpell ())) return ;
26482652
26492653 interrupt ();
26502654 }
@@ -2757,6 +2761,7 @@ public void onSpellCast(SpellCastEvent event) {
27572761 if (!interruptOnCast ) return ;
27582762 if (event .getSpell () instanceof PassiveSpell ) return ;
27592763 if (!caster .equals (event .getCaster ())) return ;
2764+ if (!interruptFilter .isEmpty () && interruptFilter .check (event .getSpell ())) return ;
27602765
27612766 interrupt ();
27622767 }
0 commit comments