Fix #364 - isCritical always false

This commit is contained in:
BillyGalbreath
2021-05-31 09:11:51 -05:00
parent 6ab7831168
commit 2b35782c51

View File

@@ -33,9 +33,27 @@ index a70c557de56c5ba04cb520108cdb037eb9cad8a9..78442fe87ceaf65b302536c893610aa0
if (flag5) {
if (i > 0) {
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index c4218281721cf4a5b8f2cad5e12089e3aee89737..cfeb80b889b84f9de65c4d5ba50bd76019c16ef0 100644
index c4218281721cf4a5b8f2cad5e12089e3aee89737..c07ff0cc7cae358c3fd772d24c2944cc92e1acff 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -962,7 +962,7 @@ public class CraftEventFactory {
} else {
damageCause = DamageCause.ENTITY_EXPLOSION;
}
- event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), entity.getBukkitEntity(), damageCause, modifiers, modifierFunctions);
+ event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), entity.getBukkitEntity(), damageCause, modifiers, modifierFunctions, damager instanceof HumanEntity && ((EntityHuman)damager).isCritical); // Purpur
damager.processClick(EnumHand.MAIN_HAND); // Purpur
}
event.setCancelled(cancelled);
@@ -1042,7 +1042,7 @@ public class CraftEventFactory {
} else {
throw new IllegalStateException(String.format("Unhandled damage of %s by %s from %s", entity, damager.getHandle(), source.translationIndex));
}
- EntityDamageEvent event = new EntityDamageByEntityEvent(damager, entity.getBukkitEntity(), cause, modifiers, modifierFunctions);
+ EntityDamageEvent event = new EntityDamageByEntityEvent(damager, entity.getBukkitEntity(), cause, modifiers, modifierFunctions, entityDamage instanceof HumanEntity && ((EntityHuman)entityDamage).isCritical); // Purpur
event.setCancelled(cancelled);
callEvent(event);
if (!event.isCancelled()) {
@@ -1097,7 +1097,7 @@ public class CraftEventFactory {
private static EntityDamageEvent callEntityDamageEvent(Entity damager, Entity damagee, DamageCause cause, Map<DamageModifier, Double> modifiers, Map<DamageModifier, Function<? super Double, Double>> modifierFunctions, boolean cancelled) {
EntityDamageEvent event;