aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0318-Add-critical-damage-API.patch
blob: e0621399a2f182cd1d2a8f6fb701422d9b6c5664 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: dodison <kacpik@mapik.eu>
Date: Mon, 26 Jul 2021 17:35:20 +0200
Subject: [PATCH] Add critical damage API


diff --git a/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java b/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java
index 0a43b1ffdb03bb8b67e880dfd9a6a1ce5d02eb32..f79eb4a0f634354ac68995144821bc4e966d2dd8 100644
--- a/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java
+++ b/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java
@@ -4,6 +4,7 @@ import com.google.common.base.Function;
 import java.util.Map;
 import org.bukkit.damage.DamageSource;
 import org.bukkit.entity.Entity;
+import org.jetbrains.annotations.ApiStatus;
 import org.jetbrains.annotations.NotNull;
 
 /**
@@ -11,17 +12,43 @@ import org.jetbrains.annotations.NotNull;
  */
 public class EntityDamageByEntityEvent extends EntityDamageEvent {
     private final Entity damager;
+    private final boolean critical; // Paper
 
+    @Deprecated
     public EntityDamageByEntityEvent(@NotNull final Entity damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final DamageSource damageSource, final double damage) {
         super(damagee, cause, damageSource, damage);
         this.damager = damager;
+        this.critical = false; // Paper - add critical damage API
     }
 
+    @Deprecated
     public EntityDamageByEntityEvent(@NotNull final Entity damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final DamageSource damageSource, @NotNull final Map<DamageModifier, Double> modifiers, @NotNull final Map<DamageModifier, ? extends Function<? super Double, Double>> modifierFunctions) {
         super(damagee, cause, damageSource, modifiers, modifierFunctions);
         this.damager = damager;
+        // Paper start
+        this.critical = false;
     }
 
+    @ApiStatus.Internal
+    public EntityDamageByEntityEvent(@NotNull final Entity damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final DamageSource damageSource, @NotNull final Map<DamageModifier, Double> modifiers, @NotNull final Map<DamageModifier, ? extends Function<? super Double, Double>> modifierFunctions, boolean critical) {
+        super(damagee, cause, damageSource, modifiers, modifierFunctions);
+        this.damager = damager;
+        this.critical = critical;
+    }
+
+    /**
+     * Shows this damage instance was critical.
+     * The damage instance can be critical if the attacking player met the respective conditions.
+     * Furthermore, arrows may also cause a critical damage event if the arrow {@link org.bukkit.entity.AbstractArrow#isCritical()}.
+     *
+     * @return if the hit was critical.
+     * @see <a href="https://minecraft.wiki/wiki/Damage#Critical_hit">https://minecraft.wiki/wiki/Damage#Critical_hit</a>
+     */
+    public boolean isCritical() {
+        return this.critical;
+    }
+    // Paper end
+
     /**
      * Returns the entity that damaged the defender.
      *