99import fr .jamailun .ultimatespellsystem .plugin .utils .holders .PotionEffectHolder ;
1010import fr .jamailun .ultimatespellsystem .plugin .utils .holders .SoundHolder ;
1111import org .bukkit .block .Block ;
12+ import org .bukkit .damage .DamageSource ;
13+ import org .bukkit .damage .DamageType ;
14+ import org .bukkit .entity .Entity ;
1215import org .bukkit .entity .LivingEntity ;
1316import org .bukkit .potion .PotionEffect ;
1417import org .bukkit .potion .PotionEffectType ;
@@ -115,6 +118,7 @@ private void handleEntities() {
115118 }
116119 }
117120
121+ @ SuppressWarnings ("UnstableApiUsage" )
118122 private void applyEffects (@ NotNull Collection <LivingEntity > nearby ) {
119123 for (LivingEntity other : nearby ) {
120124 // Ignore owner ?
@@ -130,10 +134,15 @@ private void applyEffects(@NotNull Collection<LivingEntity> nearby) {
130134 if (fireTicks > 0 )
131135 nearby .forEach (e -> e .setFireTicks (e .getFireTicks () + fireTicks ));
132136 if (damages > 0 ) {
133- getAttributes ().getSummoner ().getBukkitEntity ().ifPresentOrElse (
134- summoner -> nearby .forEach (e -> e .damage (damages , summoner )),
135- () -> nearby .forEach (e -> e .damage (damages ))
136- );
137+ var damageBuilder = DamageSource .builder (DamageType .MAGIC );
138+ Entity summoner = getAttributes ().getSummoner ().getBukkitEntity ().orElse (null );
139+ if (summoner != null ) {
140+ Entity direct = getBukkitEntity ().orElse (summoner );
141+ damageBuilder .withCausingEntity (summoner ).withDirectEntity (direct );
142+ } else {
143+ getBukkitEntity ().ifPresent (direct -> damageBuilder .withCausingEntity (direct ).withDirectEntity (direct ));
144+ }
145+ nearby .forEach (e -> e .damage (damages , damageBuilder .build ()));
137146 }
138147
139148 // Hit effect
0 commit comments