mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-22 19:07:44 +01:00
Upstream has released updates that appear to apply and compile correctly Paper Changes:415f7ca165Updated Upstream (Bukkit/CraftBukkit)37df95b189refactor: do not import List; use FQN5c65546f5crebasefdef125b19Expose EntityType#getTranslationKey4d9b14efa4Use AsyncAppender instead of AsyncLoggerContextSelector to keep loggging IO off main thread (#6381)8c2adf8e9eAdd warning to getOfflinePlayers (#6365)370b60de14Optimize indirect passenger iteration (#6366)80836709e7Fix block drops position losing precision millions of blocks out (#6387)e942509e73Updated Upstream (Bukkit/CraftBukkit/Spigot) (#6379)ce43ce8265Make EntityUnleashEvent cancellable (#4993)591cac3685Configurable item frame map cursor interval (#6385)e9aa9ce66bAdd config migration for named entity death logging option (#6390)c2f47a76aeImplement Translatable in appropriate places (#6248)f12a7f57e1Clear bucket NBT after dispense (#6391)4dd33cb8b6[ci skip] Drop "Fix CME on adding a passenger in CreatureSpawnEvent" (#6384)565cd3306c[ci skip] Add some helper methods to the ObfHelper util class (#6374) Tuinity Changes:6fd7e2b376Update paper
40 lines
3.0 KiB
Diff
40 lines
3.0 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Encode42 <me@encode42.dev>
|
|
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..42370072dac9144be5c07f88d24d8ba4705d68dd 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)) { // Purpur
|
|
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 84b41052b3d3f1d99c1edc17e752ff0306eff9fa..d481c7235af2bc9144b9b03fed83e283fe35725f 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;
|