From cb9b5bfa82d73072bb1d1d24f24cd5c13c56aa86 Mon Sep 17 00:00:00 2001 From: Aikar <aikar@aikar.co> Date: Thu, 31 May 2018 18:16:26 -0400 Subject: [PATCH] add Escape Reason Drown for EndermanEscapeEvent to detect rain specifically from every other armor ignoring hit --- Spigot-API-Patches/EndermanEscapeEvent.patch | 8 ++++++-- Spigot-Server-Patches/EndermanEscapeEvent.patch | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Spigot-API-Patches/EndermanEscapeEvent.patch b/Spigot-API-Patches/EndermanEscapeEvent.patch index 72abe21d14..fa1db68299 100644 --- a/Spigot-API-Patches/EndermanEscapeEvent.patch +++ b/Spigot-API-Patches/EndermanEscapeEvent.patch @@ -9,7 +9,7 @@ You may cancel this, enabling ranged attacks to damage the enderman for example. diff --git a/src/main/java/com/destroystokyo/paper/event/entity/EndermanEscapeEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/EndermanEscapeEvent.java new file mode 100644 -index 00000000..b8de1037 +index 00000000..0d15a8ab --- /dev/null +++ b/src/main/java/com/destroystokyo/paper/event/entity/EndermanEscapeEvent.java @@ -0,0 +0,0 @@ @@ -88,7 +88,11 @@ index 00000000..b8de1037 + /** + * The enderman has teleported away due to the player staring at it during combat + */ -+ STARE ++ STARE, ++ /** ++ * Specific case for CRITICAL_HIT where the enderman is taking rain damage ++ */ ++ DROWN + } +} -- \ No newline at end of file diff --git a/Spigot-Server-Patches/EndermanEscapeEvent.patch b/Spigot-Server-Patches/EndermanEscapeEvent.patch index 89f71cec53..387b686fdb 100644 --- a/Spigot-Server-Patches/EndermanEscapeEvent.patch +++ b/Spigot-Server-Patches/EndermanEscapeEvent.patch @@ -8,7 +8,7 @@ Fires an event anytime an enderman intends to teleport away from the player You may cancel this, enabling ranged attacks to damage the enderman for example. diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java -index 2f59e7071..bf32e386c 100644 +index 2f59e7071..e8ea231dc 100644 --- a/src/main/java/net/minecraft/server/EntityEnderman.java +++ b/src/main/java/net/minecraft/server/EntityEnderman.java @@ -0,0 +0,0 @@ @@ -54,7 +54,7 @@ index 2f59e7071..bf32e386c 100644 boolean flag = super.damageEntity(damagesource, f); - if (damagesource.ignoresArmor() && this.random.nextInt(10) != 0) { -+ if (damagesource.ignoresArmor() && this.random.nextInt(10) != 0 && tryEscape(EndermanEscapeEvent.Reason.CRITICAL_HIT)) { // Paper ++ if (damagesource.ignoresArmor() && this.random.nextInt(10) != 0 && tryEscape(damagesource == DamageSource.DROWN ? EndermanEscapeEvent.Reason.DROWN : EndermanEscapeEvent.Reason.CRITICAL_HIT)) { // Paper this.dm(); }