mirror of
https://github.com/PaperMC/Paper.git
synced 2025-08-09 08:32:07 -07:00
Fixs and Improvements for EndermanEscapeEvent (#12570)
This commit is contained in:
@@ -27,7 +27,9 @@ public class EndermanEscapeEvent extends EntityEvent implements Cancellable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return The reason the enderman is trying to escape
|
* Gets the reason the enderman is trying to escape.
|
||||||
|
*
|
||||||
|
* @return The reason
|
||||||
*/
|
*/
|
||||||
public Reason getReason() {
|
public Reason getReason() {
|
||||||
return this.reason;
|
return this.reason;
|
||||||
@@ -42,7 +44,8 @@ public class EndermanEscapeEvent extends EntityEvent implements Cancellable {
|
|||||||
* Cancels the escape.
|
* Cancels the escape.
|
||||||
* <p>
|
* <p>
|
||||||
* If this escape normally had resulted in damage avoidance such as indirect,
|
* If this escape normally had resulted in damage avoidance such as indirect,
|
||||||
* the enderman will now take damage.
|
* the enderman will now take damage. However, this does not change the Enderman's
|
||||||
|
* innate immunities or damage behavior like arrows where the damage never happens.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void setCancelled(final boolean cancel) {
|
public void setCancelled(final boolean cancel) {
|
||||||
@@ -76,7 +79,7 @@ public class EndermanEscapeEvent extends EntityEvent implements Cancellable {
|
|||||||
*/
|
*/
|
||||||
STARE,
|
STARE,
|
||||||
/**
|
/**
|
||||||
* Specific case for {@link #CRITICAL_HIT} where the enderman is taking rain damage
|
* Specific case for {@link #CRITICAL_HIT} where the enderman is taking damage by drowning (ex: rain)
|
||||||
*/
|
*/
|
||||||
DROWN
|
DROWN
|
||||||
}
|
}
|
||||||
|
@@ -56,7 +56,20 @@
|
|||||||
this.setTarget(null);
|
this.setTarget(null);
|
||||||
this.teleport();
|
this.teleport();
|
||||||
}
|
}
|
||||||
@@ -369,11 +_,13 @@
|
@@ -359,21 +_,25 @@
|
||||||
|
AbstractThrownPotion abstractThrownPotion1 = damageSource.getDirectEntity() instanceof AbstractThrownPotion abstractThrownPotion
|
||||||
|
? abstractThrownPotion
|
||||||
|
: null;
|
||||||
|
- if (!damageSource.is(DamageTypeTags.IS_PROJECTILE) && abstractThrownPotion1 == null) {
|
||||||
|
+ if (!damageSource.is(DamageTypeTags.IS_PROJECTILE) && abstractThrownPotion1 == null) { // Paper - EndermanEscapeEvent - diff on change - below logic relies on this path covering non-projectile damage.
|
||||||
|
boolean flag = super.hurtServer(level, damageSource, amount);
|
||||||
|
if (!(damageSource.getEntity() instanceof LivingEntity) && this.random.nextInt(10) != 0) {
|
||||||
|
+ if (this.tryEscape(damageSource.is(net.minecraft.tags.DamageTypeTags.IS_DROWNING) ? com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.DROWN : com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.CRITICAL_HIT)) { // Paper - EndermanEscapeEvent
|
||||||
|
this.teleport();
|
||||||
|
+ } // Paper - EndermanEscapeEvent
|
||||||
|
}
|
||||||
|
|
||||||
|
return flag;
|
||||||
} else {
|
} else {
|
||||||
boolean flag = abstractThrownPotion1 != null && this.hurtWithCleanWater(level, damageSource, abstractThrownPotion1, amount);
|
boolean flag = abstractThrownPotion1 != null && this.hurtWithCleanWater(level, damageSource, abstractThrownPotion1, amount);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user