@@ -72,14 +72,16 @@ default void tick() {
7272 while (effectIterator .hasNext ()) {
7373 SpellEffect effect = effectIterator .next ();
7474 if (effect .shouldRemove ()) {
75+ SpellEffectRemoveEvent event = new SpellEffectRemoveEvent (effect .caster , effect , effect .data , RemovalReason .EXPIRED );
76+ event .callEvent ();
77+ if (event .isCancelled ()) {
78+ return ;
79+ }
7580 effect .onRemove ();
7681 effectIterator .remove ();
7782 for (SpellEffect eventEffect : getEffects ()) {
7883 eventEffect .onRemoveEffect (effect );
79- }
80- SpellEffectRemoveEvent event = new SpellEffectRemoveEvent (effect .caster , effect , effect .data , RemovalReason .EXPIRED );
81- Bukkit .getPluginManager ().callEvent (event );
82- } else {
84+ }} else {
8385 effect .tick ();
8486 }
8587 }
@@ -155,37 +157,45 @@ default void addEffect(LivingEntity caster, EffectData data, int duration, int s
155157 if (hasEffect (data )) {
156158 SpellEffect oldEffect = getEffects ().stream ().filter (e -> e .data .equals (data )).findFirst ().get ();
157159 if (oldEffect .canAdd (duration , stacks )) {
160+ SpellEffectAddEvent event = new SpellEffectAddEvent (this , oldEffect , data , true );
161+ event .callEvent ();
162+ if (event .isCancelled ()) {
163+ return ;
164+ }
158165 if (!onEffectAdd (oldEffect , false )) {
159166 return ;
160167 }
161168 oldEffect .add (duration , stacks );
162- SpellEffectAddEvent event = new SpellEffectAddEvent (this , oldEffect , data , true );
163- Bukkit .getPluginManager ().callEvent (event );
164169 }
165170 } else {
166171 SpellEffect effect = data .getActiveEffect (caster , (LivingEntity ) this , duration , stacks );
172+ SpellEffectAddEvent event = new SpellEffectAddEvent (this , effect , data , false );
173+ event .callEvent ();
174+ if (event .isCancelled ()) {
175+ return ;
176+ }
167177 if (!onEffectAdd (effect , true )) {
168178 return ;
169179 }
170180 getEffects ().add (effect );
171- effect .onApply ();
172- SpellEffectAddEvent event = new SpellEffectAddEvent (this , effect , data , false );
173- Bukkit .getPluginManager ().callEvent (event );
174- }
181+ effect .onApply ();}
175182 }
176183
177184 default void removeEffect (EffectData effect ) {
178185 Iterator <SpellEffect > iterator = getEffects ().iterator ();
179186 while (iterator .hasNext ()) {
180187 SpellEffect itr = iterator .next ();
181188 if (itr .data == effect ) {
189+ SpellEffectRemoveEvent event = new SpellEffectRemoveEvent (this , itr , effect , RemovalReason .CLEANSED );
190+ event .callEvent ();
191+ if (event .isCancelled ()) {
192+ continue ;
193+ }
182194 if (!onEffectRemove (itr )) {
183195 continue ;
184196 }
185197 iterator .remove ();
186198 onEffectRemove (itr );
187- SpellEffectRemoveEvent event = new SpellEffectRemoveEvent (this , itr , effect , RemovalReason .CLEANSED );
188- Bukkit .getPluginManager ().callEvent (event );
189199 }
190200 }
191201 }
0 commit comments