From 251d5327835fdede67ecee55e56f02395deabe36 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 | 5 +++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java index 8d57c5f1b5..0a0ecaf197 100644 --- a/src/main/java/net/minecraft/server/EntityPigZombie.java +++ b/src/main/java/net/minecraft/server/EntityPigZombie.java @@ -139,6 +139,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.pigmenDontTargetUnlessHit) this.setLastDamager((EntityHuman) entity); // Purpur - fix MC-56653 this.i((EntityLiving) entity); } @@ -157,7 +158,7 @@ public class EntityPigZombie extends EntityZombie { this.angerLevel = event.getNewAnger(); // CraftBukkit end this.soundDelay = this.random.nextInt(40); - this.setLastDamager(entityliving); + if (!world.purpurConfig.pigmenDontTargetUnlessHit) this.setLastDamager(entityliving); // Purpur - fix MC-56653 return true; } @@ -204,6 +205,12 @@ public class EntityPigZombie extends EntityZombie { return this.eA(); } + // Purpur start - fix MC-56653 + protected boolean isDropExperience() { + return super.isDropExperience() && (!world.purpurConfig.pigmenDontTargetUnlessHit || 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 64128359c1..f8755060f1 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -116,6 +116,11 @@ public class PurpurWorldConfig { enderDragonAlwaysDropsEggBlock = getBoolean("mobs.ender-dragon.always-drop-egg-block", enderDragonAlwaysDropsEggBlock); } + public boolean pigmenDontTargetUnlessHit = false; + private void pigmenSettings() { + pigmenDontTargetUnlessHit = getBoolean("mobs.pigmen.dont-target-unless-hit", pigmenDontTargetUnlessHit); + } + public float zombieHorseSpawnChance = 0F; private void zombieHorseSettings() { zombieHorseSpawnChance = (float) getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); -- 2.24.0