From 88f641f1609d6a628ae49a40cbdc250ff5c4c500 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Tue, 9 Jul 2019 20:56:47 -0500 Subject: [PATCH] Fix pig zombies (MC-56653) --- src/main/java/net/minecraft/server/EntityPigZombie.java | 9 ++++++++- src/main/java/net/pl3x/purpur/PurpurWorldConfig.java | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java index fb9ef88ea..227fff3f1 100644 --- a/src/main/java/net/minecraft/server/EntityPigZombie.java +++ b/src/main/java/net/minecraft/server/EntityPigZombie.java @@ -155,6 +155,7 @@ public class EntityPigZombie extends EntityZombie { boolean result = super.damageEntity(damagesource, f); if (result && entity instanceof EntityHuman && !((EntityHuman) entity).isCreative() && this.hasLineOfSight(entity)) { + if (world.purpurConfig.zombiePigmanDontTargetUnlessHit) this.setLastDamager((EntityHuman) entity); // Purpur - fix MC-56653 this.i((EntityLiving) entity); } @@ -173,7 +174,7 @@ public class EntityPigZombie extends EntityZombie { this.angerLevel = event.getNewAnger(); // CraftBukkit end this.soundDelay = this.random.nextInt(40); - this.setLastDamager(entityliving); + if (!world.purpurConfig.zombiePigmanDontTargetUnlessHit) this.setLastDamager(entityliving); // Purpur - fix MC-56653 return true; } @@ -215,6 +216,12 @@ public class EntityPigZombie extends EntityZombie { return this.eA(); } + // Purpur start - fix MC-56653 + protected boolean isDropExperience() { + return super.isDropExperience() && (!world.purpurConfig.zombiePigmanDontTargetUnlessHit || getLastDamager() instanceof EntityHuman); + } + // Purpur end + static class PathfinderGoalAnger extends PathfinderGoalNearestAttackableTarget { public PathfinderGoalAnger(EntityPigZombie entitypigzombie) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java index 5e57646ce..2bbbf30c0 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -771,10 +771,12 @@ public class PurpurWorldConfig { public boolean zombiePigmanRidable = false; public boolean zombiePigmanRidableInWater = false; public boolean zombiePigmanRequireShiftToMount = true; + public boolean zombiePigmanDontTargetUnlessHit = false; private void zombiePigmanSettings() { zombiePigmanRidable = getBoolean("mobs.zombie_pigman.ridable", zombiePigmanRidable); zombiePigmanRidableInWater = getBoolean("mobs.zombie_pigman.ridable-in-water", zombiePigmanRidableInWater); zombiePigmanRequireShiftToMount = getBoolean("mobs.zombie_pigman.require-shift-to-mount", zombiePigmanRequireShiftToMount); + zombiePigmanDontTargetUnlessHit = getBoolean("mobs.zombie_pigman.dont-target-unless-hit", zombiePigmanDontTargetUnlessHit); } public boolean zombieVillagerRidable = false; -- 2.24.0