From 246383aa7755256528fae5d747761c8ad584582d Mon Sep 17 00:00:00 2001 From: Encode42 Date: Mon, 19 Jul 2021 19:51:54 -0400 Subject: [PATCH] Config to disable Enderman teleport on projectile hit --- ...e-Enderman-teleport-on-projectile-hi.patch | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 patches/server/0235-Config-to-disable-Enderman-teleport-on-projectile-hi.patch diff --git a/patches/server/0235-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0235-Config-to-disable-Enderman-teleport-on-projectile-hi.patch new file mode 100644 index 000000000..78b2aeb67 --- /dev/null +++ b/patches/server/0235-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -0,0 +1,39 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Encode42 +Date: Mon, 19 Jul 2021 19:28:17 -0400 +Subject: [PATCH] Config to disable Enderman teleport on projectile hit + + +diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +index ba61f78874d8578b862f317fe00a3162c45253e0..00eb217aac728a6dde32837bb02f34e4ff0d85c0 100644 +--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java ++++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +@@ -394,7 +394,7 @@ public class EnderMan extends Monster implements NeutralMob { + return false; + } else if (getRider() != null) { return super.hurt(source, amount); // Purpur - no teleporting on damage + } else if (net.pl3x.purpur.PurpurConfig.endermanShortHeight && source == DamageSource.IN_WALL) { return false; // Purpur - no suffocation damage if short height +- } else if (source instanceof IndirectEntityDamageSource) { ++ } else if (source instanceof IndirectEntityDamageSource && !(this.level.purpurConfig.endermanIgnoreProjectiles && source.getDirectEntity() instanceof net.minecraft.world.entity.projectile.Projectile)) { + if (this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.INDIRECT)) { // Paper start + for (int i = 0; i < 64; ++i) { + if (this.teleport()) { +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index c097f5525e36084805c1aa1b4eb33aab9fe1405b..96f9f478b03ba358019239d0b759ede0760008a0 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -1258,6 +1258,7 @@ public class PurpurWorldConfig { + public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; + public boolean endermanIgnorePlayerDragonHead = false; + public boolean endermanDisableStareAggro = false; ++ public boolean endermanIgnoreProjectiles = false; + private void endermanSettings() { + endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); + endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); +@@ -1279,6 +1280,7 @@ public class PurpurWorldConfig { + endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); + endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); + endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); ++ endermanIgnoreProjectiles = getBoolean("mobs.enderman.ignore-projectiles", endermanIgnoreProjectiles); + } + + public boolean endermiteRidable = false;