From 3db404320a1efbb4afc733a6a830f913322b704f Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Sun, 19 Mar 2023 11:58:34 -0700 Subject: [PATCH] Fix entity damage event triggers (#8995) --- ...nge-Interaction-attack-damage-source.patch | 19 -------- ...vancement-triggers-for-entity-damage.patch | 46 +++++++++++++++++++ 2 files changed, 46 insertions(+), 19 deletions(-) delete mode 100644 patches/server/Dont-change-Interaction-attack-damage-source.patch create mode 100644 patches/server/Fix-advancement-triggers-for-entity-damage.patch diff --git a/patches/server/Dont-change-Interaction-attack-damage-source.patch b/patches/server/Dont-change-Interaction-attack-damage-source.patch deleted file mode 100644 index ac18bd5170..0000000000 --- a/patches/server/Dont-change-Interaction-attack-damage-source.patch +++ /dev/null @@ -1,19 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Nassim Jahnke -Date: Thu, 16 Mar 2023 10:04:17 +0100 -Subject: [PATCH] Dont change Interaction attack damage source - - -diff --git a/src/main/java/net/minecraft/world/entity/Interaction.java b/src/main/java/net/minecraft/world/entity/Interaction.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/world/entity/Interaction.java -+++ b/src/main/java/net/minecraft/world/entity/Interaction.java -@@ -0,0 +0,0 @@ public class Interaction extends Entity implements Attackable, Targeting { - if (entityhuman instanceof ServerPlayer) { - ServerPlayer entityplayer = (ServerPlayer) entityhuman; - -- CriteriaTriggers.PLAYER_HURT_ENTITY.trigger(entityplayer, this, source, (float) event.getFinalDamage(), 1.0F, false); // CraftBukkit -+ CriteriaTriggers.PLAYER_HURT_ENTITY.trigger(entityplayer, this, entityhuman.damageSources().generic(), (float) event.getFinalDamage(), 1.0F, false); // CraftBukkit // Paper - } - - return !this.getResponse(); diff --git a/patches/server/Fix-advancement-triggers-for-entity-damage.patch b/patches/server/Fix-advancement-triggers-for-entity-damage.patch new file mode 100644 index 0000000000..53a8bba9e9 --- /dev/null +++ b/patches/server/Fix-advancement-triggers-for-entity-damage.patch @@ -0,0 +1,46 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jake Potrebic +Date: Thu, 16 Mar 2023 10:04:17 +0100 +Subject: [PATCH] Fix advancement triggers for entity damage + +Changes the Interaction entity's trigger to use the vanilla +generic damage source + +Fixes a couple places where the original damage and modified damage +were passed in the reverse order to the advancement triggers + +diff --git a/src/main/java/net/minecraft/world/entity/Interaction.java b/src/main/java/net/minecraft/world/entity/Interaction.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/world/entity/Interaction.java ++++ b/src/main/java/net/minecraft/world/entity/Interaction.java +@@ -0,0 +0,0 @@ public class Interaction extends Entity implements Attackable, Targeting { + if (entityhuman instanceof ServerPlayer) { + ServerPlayer entityplayer = (ServerPlayer) entityhuman; + +- CriteriaTriggers.PLAYER_HURT_ENTITY.trigger(entityplayer, this, source, (float) event.getFinalDamage(), 1.0F, false); // CraftBukkit ++ CriteriaTriggers.PLAYER_HURT_ENTITY.trigger(entityplayer, this, entityhuman.damageSources().generic(), 1.0F, (float) event.getFinalDamage(), false); // CraftBukkit // Paper - use correct source and fix taken/dealt param order + } + + return !this.getResponse(); +diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java ++++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +@@ -0,0 +0,0 @@ public abstract class LivingEntity extends Entity implements Attackable { + // Duplicate triggers if blocking + if (event.getDamage(DamageModifier.BLOCKING) < 0) { + if (this instanceof ServerPlayer) { +- CriteriaTriggers.ENTITY_HURT_PLAYER.trigger((ServerPlayer) this, damagesource, f, originalDamage, true); ++ CriteriaTriggers.ENTITY_HURT_PLAYER.trigger((ServerPlayer) this, damagesource, originalDamage, f, true); // Paper - fix taken/dealt param order + f2 = (float) -event.getDamage(DamageModifier.BLOCKING); + if (f2 > 0.0F && f2 < 3.4028235E37F) { + ((ServerPlayer) this).awardStat(Stats.DAMAGE_BLOCKED_BY_SHIELD, Math.round(originalDamage * 10.0F)); +@@ -0,0 +0,0 @@ public abstract class LivingEntity extends Entity implements Attackable { + } + + if (damagesource.getEntity() instanceof ServerPlayer) { +- CriteriaTriggers.PLAYER_HURT_ENTITY.trigger((ServerPlayer) damagesource.getEntity(), this, damagesource, f, originalDamage, true); ++ CriteriaTriggers.PLAYER_HURT_ENTITY.trigger((ServerPlayer) damagesource.getEntity(), this, damagesource, originalDamage, f, true); // Paper - fix taken/dealt param order + } + + return false;