geforkt von Mirrors/Paper
dc684c60d1
The new behavior of disconnect to block the current thread until the disconnect succeeded is better than throwing it off to happen at some point
47 Zeilen
3.3 KiB
Diff
47 Zeilen
3.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
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 2ebbf7954dc5e0d6c9d53327d05b725eec310086..c5bd2e90ad74ba08910f65a2e07b6f76435df10f 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/Interaction.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/Interaction.java
|
|
@@ -156,7 +156,7 @@ public class Interaction extends Entity implements Attackable, Targeting {
|
|
// CraftBukkit end
|
|
this.attack = new Interaction.PlayerAction(entityhuman.getUUID(), this.level().getGameTime());
|
|
if (entityhuman instanceof ServerPlayer entityplayer) {
|
|
- 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 8ec08a30875816d2b8258b56ee37a4938aed50fb..c8c52514777a97b35bd4fb2ac84565f07c8921d7 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
@@ -2359,7 +2359,7 @@ 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));
|
|
@@ -2367,7 +2367,7 @@ 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 true;
|