From 48fcbd27cb3e1c00b556eb3176c834c0c8044218 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Tue, 9 Jul 2019 20:56:47 -0500 Subject: [PATCH] MC-56653 Fix - pig zombies aggro --- 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 90bf12c73..c78876fc4 100644 --- a/src/main/java/net/minecraft/server/EntityPigZombie.java +++ b/src/main/java/net/minecraft/server/EntityPigZombie.java @@ -170,6 +170,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); } @@ -188,7 +189,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; } @@ -230,6 +231,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 7c81d1149..9d56de22b 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -1001,6 +1001,7 @@ public class PurpurWorldConfig { public boolean zombiePigmanJockeyOnlyBaby = true; public double zombiePigmanJockeyChance = 0.05D; public boolean zombiePigmanJockeyTryExistingChickens = true; + public boolean zombiePigmanDontTargetUnlessHit = false; private void zombiePigmanSettings() { zombiePigmanRidable = getBoolean("mobs.zombie_pigman.ridable", zombiePigmanRidable); zombiePigmanRidableInWater = getBoolean("mobs.zombie_pigman.ridable-in-water", zombiePigmanRidableInWater); @@ -1008,6 +1009,7 @@ public class PurpurWorldConfig { zombiePigmanJockeyOnlyBaby = getBoolean("mobs.zombie_pigman.jockey.only-babies", zombiePigmanJockeyOnlyBaby); zombiePigmanJockeyChance = getDouble("mobs.zombie_pigman.jockey.chance", zombiePigmanJockeyChance); zombiePigmanJockeyTryExistingChickens = getBoolean("mobs.zombie_pigman.jockey.try-existing-chickens", zombiePigmanJockeyTryExistingChickens); + zombiePigmanDontTargetUnlessHit = getBoolean("mobs.zombie_pigman.dont-target-unless-hit", zombiePigmanDontTargetUnlessHit); } public boolean zombieVillagerRidable = false; -- 2.24.0