|
1 | 1 | package com.laytonsmith.abstraction.bukkit.entities; |
2 | 2 |
|
| 3 | +import com.laytonsmith.PureUtilities.Common.ReflectionUtils; |
3 | 4 | import com.laytonsmith.abstraction.MCAttributeModifier; |
4 | 5 | import com.laytonsmith.abstraction.MCEntity; |
5 | 6 | import com.laytonsmith.abstraction.MCEntityEquipment; |
|
26 | 27 | import org.bukkit.attribute.AttributeInstance; |
27 | 28 | import org.bukkit.attribute.AttributeModifier; |
28 | 29 | import org.bukkit.block.Block; |
| 30 | +import org.bukkit.damage.DamageSource; |
| 31 | +import org.bukkit.damage.DamageType; |
29 | 32 | import org.bukkit.entity.Entity; |
30 | 33 | import org.bukkit.entity.LivingEntity; |
31 | 34 | import org.bukkit.entity.Mob; |
32 | 35 | import org.bukkit.entity.Player; |
33 | 36 | import org.bukkit.event.entity.EntityDamageEvent; |
| 37 | +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; |
34 | 38 | import org.bukkit.potion.PotionEffect; |
35 | 39 | import org.bukkit.potion.PotionEffectType; |
36 | 40 | import org.bukkit.util.BlockIterator; |
@@ -346,8 +350,16 @@ public void setTarget(MCLivingEntity target, Target t) { |
346 | 350 |
|
347 | 351 | @Override |
348 | 352 | public void kill() { |
349 | | - le.setLastDamageCause(new EntityDamageEvent(le, EntityDamageEvent.DamageCause.CUSTOM, le.getHealth())); |
350 | | - le.setHealth(0D); |
| 353 | + try { |
| 354 | + le.damage(le.getHealth(), DamageSource.builder(DamageType.GENERIC_KILL).build()); |
| 355 | + } catch (NoClassDefFoundError | NoSuchMethodError ex) { |
| 356 | + // probably before 1.20.4 |
| 357 | + EntityDamageEvent event = ReflectionUtils.newInstance(EntityDamageEvent.class, |
| 358 | + new Class[]{Entity.class, DamageCause.class, double.class}, |
| 359 | + new Object[]{le, EntityDamageEvent.DamageCause.CUSTOM, le.getHealth()}); |
| 360 | + le.setLastDamageCause(event); |
| 361 | + le.setHealth(0); |
| 362 | + } |
351 | 363 | } |
352 | 364 |
|
353 | 365 | @Override |
|
0 commit comments