Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions patches/api/0385-Damage-with-any-cause.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: TetraTheta <tetratheta@gmail.com>
Date: Tue, 14 Jun 2022 20:39:33 +0900
Subject: [PATCH] Damage with any cause


diff --git a/src/main/java/org/bukkit/entity/Damageable.java b/src/main/java/org/bukkit/entity/Damageable.java
index fc4d3bcd9b16097086fef7975274d825b65adb10..52a4273aaab94f188ff186584eabd5a7861d33b2 100644
--- a/src/main/java/org/bukkit/entity/Damageable.java
+++ b/src/main/java/org/bukkit/entity/Damageable.java
@@ -1,6 +1,8 @@
package org.bukkit.entity;

import org.bukkit.attribute.Attribute;
+import org.bukkit.event.entity.EntityDamageEvent;
+import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

/**
@@ -23,6 +25,33 @@ public interface Damageable extends Entity {
*/
void damage(double amount, @Nullable Entity source);

+ // Paper start
+ /**
+ * Deals the given amount of damage to this entity with specific {@link EntityDamageEvent.DamageCause DamageCause}.
+ *
+ * Damage types {@link EntityDamageEvent.DamageCause#ENTITY_ATTACK ENTITY_ATTACK}, {@link EntityDamageEvent.DamageCause#ENTITY_SWEEP_ATTACK ENTITY_SWEEP_ATTACK}, {@link EntityDamageEvent.DamageCause#PROJECTILE PROJECTILE}, {@link EntityDamageEvent.DamageCause#THORNS THORNS} require to specify an entity, which triggered the damage.
+ *
+ * For such cases, use {@link Damageable#damage(double, EntityDamageEvent.DamageCause, Entity)}, otherwise they will fall back to Generic damage type.
+ *
+ * @param amount Amount of damage to deal
+ * @param damageCause Type of damage
+ */
+ default void damage(double amount, @NotNull EntityDamageEvent.DamageCause damageCause) {
+ damage(amount, damageCause, null);
+ }
+
+ /**
+ * Deals the given amount of damage to this entity with specific {@link EntityDamageEvent.DamageCause DamageCause} from specific entity.
+ *
+ * {@link EntityDamageEvent.DamageCause#PROJECTILE PROJECTILE} requires any {@link Projectile Projectile} instance to be passed as the source.
+ *
+ * @param amount Amount of damage to deal
+ * @param damageCause Type of damage
+ * @param source The entity which caused this damage
+ */
+ void damage(double amount, @NotNull EntityDamageEvent.DamageCause damageCause, @Nullable Entity source);
+ // Paper end
+
/**
* Gets the entity's health from 0 to {@link #getMaxHealth()}, where 0 is dead.
*
Loading