diff --git a/patches/server/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index 689e0fe08..9f375c8a2 100644 --- a/patches/server/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -1,4 +1,4 @@ -From 2e8872045aafef81931f68bbd35d4e1821a118fa Mon Sep 17 00:00:00 2001 +From 2dedb27e03409f30cbd7b2f6891c9601f60f4851 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 9 May 2019 18:26:06 -0500 Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms @@ -7,9 +7,9 @@ Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms .../net/minecraft/server/DamageSource.java | 1 + .../java/net/minecraft/server/Entity.java | 8 +- .../minecraft/server/EntityEnderCrystal.java | 49 +++++ - .../net/minecraft/server/EntityPhantom.java | 170 +++++++++++++++++- + .../net/minecraft/server/EntityPhantom.java | 180 +++++++++++++++++- .../net/minecraft/server/IEntityAccess.java | 1 + - 5 files changed, 219 insertions(+), 10 deletions(-) + 5 files changed, 225 insertions(+), 14 deletions(-) diff --git a/src/main/java/net/minecraft/server/DamageSource.java b/src/main/java/net/minecraft/server/DamageSource.java index 730a15f332..31454349a2 100644 @@ -122,7 +122,7 @@ index 801552fc61..ad88cc9822 100644 @Override protected void b(NBTTagCompound nbttagcompound) { diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java -index e5d032d02b..9b62d2ce38 100644 +index e5d032d02b..2d62248fcc 100644 --- a/src/main/java/net/minecraft/server/EntityPhantom.java +++ b/src/main/java/net/minecraft/server/EntityPhantom.java @@ -8,9 +8,10 @@ import javax.annotation.Nullable; @@ -139,18 +139,26 @@ index e5d032d02b..9b62d2ce38 100644 public EntityPhantom(EntityTypes entitytypes, World world) { super(entitytypes, world); -@@ -29,8 +30,10 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -29,10 +30,14 @@ public class EntityPhantom extends EntityFlying implements IMonster { @Override protected void initPathfinder() { -+ this.goalSelector.a(0, new FindCrystalGoal(this)); // Purpur - this.goalSelector.a(1, new EntityPhantom.c()); - this.goalSelector.a(2, new EntityPhantom.i()); -+ this.goalSelector.a(3, new OrbitCrystalGoal(this)); // Purpur - this.goalSelector.a(3, new EntityPhantom.e()); - this.targetSelector.a(1, new EntityPhantom.b()); +- this.goalSelector.a(1, new EntityPhantom.c()); +- this.goalSelector.a(2, new EntityPhantom.i()); +- this.goalSelector.a(3, new EntityPhantom.e()); +- this.targetSelector.a(1, new EntityPhantom.b()); ++ // Purpur start ++ this.goalSelector.a(1, new FindCrystalGoal(this)); ++ this.goalSelector.a(2, new OrbitCrystalGoal(this)); ++ this.goalSelector.a(3, new EntityPhantom.c()); // PickAttackGoal ++ this.goalSelector.a(4, new EntityPhantom.i()); // SweepAttackGoal ++ this.goalSelector.a(5, new EntityPhantom.e()); // OrbitPointGoal ++ this.targetSelector.a(1, new EntityPhantom.b()); // AttackPlayerGoal ++ // Purpur end } -@@ -114,6 +117,26 @@ public class EntityPhantom extends EntityFlying implements IMonster { + + @Override +@@ -114,6 +119,26 @@ public class EntityPhantom extends EntityFlying implements IMonster { super.mobTick(); } @@ -177,7 +185,7 @@ index e5d032d02b..9b62d2ce38 100644 @Override public GroupDataEntity prepare(GeneratorAccess generatoraccess, DifficultyDamageScaler difficultydamagescaler, EnumMobSpawn enummobspawn, @Nullable GroupDataEntity groupdataentity, @Nullable NBTTagCompound nbttagcompound) { this.d = (new BlockPosition(this)).up(5); -@@ -202,6 +225,136 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -202,6 +227,136 @@ public class EntityPhantom extends EntityFlying implements IMonster { } // Paper end @@ -314,7 +322,7 @@ index e5d032d02b..9b62d2ce38 100644 class b extends PathfinderGoal { private final PathfinderTargetCondition b; -@@ -259,7 +412,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -259,7 +414,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { public boolean a() { EntityLiving entityliving = EntityPhantom.this.getGoalTarget(); @@ -323,7 +331,7 @@ index e5d032d02b..9b62d2ce38 100644 } @Override -@@ -305,11 +458,16 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -305,11 +460,16 @@ public class EntityPhantom extends EntityFlying implements IMonster { @Override public boolean a() { @@ -341,7 +349,7 @@ index e5d032d02b..9b62d2ce38 100644 EntityLiving entityliving = EntityPhantom.this.getGoalTarget(); if (entityliving == null) { -@@ -379,7 +537,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -379,7 +539,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { @Override public boolean a() { diff --git a/patches/server/0011-Integrate-ridables.patch b/patches/server/0011-Integrate-ridables.patch index 9e4d11910..bf607dca3 100644 --- a/patches/server/0011-Integrate-ridables.patch +++ b/patches/server/0011-Integrate-ridables.patch @@ -1,4 +1,4 @@ -From 115557aa56b3698af08b409976944ccb2ff2d86c Mon Sep 17 00:00:00 2001 +From 3b60ca7b0300927d2a742634006f4ebbd88f8fd2 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Tue, 30 Apr 2019 19:17:21 -0500 Subject: [PATCH] Integrate ridables @@ -7,141 +7,88 @@ Subject: [PATCH] Integrate ridables .../server/ControllerLookDolphin.java | 4 +- .../java/net/minecraft/server/Entity.java | 35 +++++- .../net/minecraft/server/EntityAgeable.java | 2 +- - .../java/net/minecraft/server/EntityBat.java | 22 ++++ + .../java/net/minecraft/server/EntityBat.java | 21 ++++ .../net/minecraft/server/EntityBlaze.java | 15 ++- - .../java/net/minecraft/server/EntityCat.java | 36 ++++-- + .../java/net/minecraft/server/EntityCat.java | 22 +++- .../minecraft/server/EntityCaveSpider.java | 1 + - .../net/minecraft/server/EntityChicken.java | 3 +- + .../net/minecraft/server/EntityChicken.java | 4 +- .../java/net/minecraft/server/EntityCod.java | 1 + - .../java/net/minecraft/server/EntityCow.java | 1 + - .../net/minecraft/server/EntityCreeper.java | 56 +++++++++ - .../net/minecraft/server/EntityDolphin.java | 23 +++- - .../net/minecraft/server/EntityDrowned.java | 16 ++- + .../java/net/minecraft/server/EntityCow.java | 2 + + .../net/minecraft/server/EntityCreeper.java | 57 +++++++++ + .../net/minecraft/server/EntityDolphin.java | 19 ++- + .../net/minecraft/server/EntityDrowned.java | 7 +- .../minecraft/server/EntityEnderDragon.java | 1 + - .../net/minecraft/server/EntityEnderman.java | 6 + - .../net/minecraft/server/EntityEndermite.java | 3 +- - .../net/minecraft/server/EntityEvoker.java | 6 +- - .../java/net/minecraft/server/EntityFish.java | 21 ++-- - .../java/net/minecraft/server/EntityFox.java | 85 +++++++++++-- - .../net/minecraft/server/EntityGhast.java | 8 +- + .../net/minecraft/server/EntityEnderman.java | 2 + + .../net/minecraft/server/EntityEndermite.java | 4 +- + .../net/minecraft/server/EntityEvoker.java | 4 +- + .../java/net/minecraft/server/EntityFish.java | 25 ++-- + .../java/net/minecraft/server/EntityFox.java | 46 +++++-- + .../net/minecraft/server/EntityGhast.java | 6 +- .../minecraft/server/EntityGiantZombie.java | 2 + - .../net/minecraft/server/EntityGuardian.java | 29 ++++- + .../net/minecraft/server/EntityGuardian.java | 28 ++++- .../minecraft/server/EntityGuardianElder.java | 1 + - .../minecraft/server/EntityHorseAbstract.java | 4 + + .../minecraft/server/EntityHorseAbstract.java | 5 + .../minecraft/server/EntityHorseSkeleton.java | 6 + .../minecraft/server/EntityHorseZombie.java | 6 + .../net/minecraft/server/EntityHuman.java | 14 ++- - .../server/EntityIllagerIllusioner.java | 3 + - .../minecraft/server/EntityIllagerWizard.java | 3 + + .../server/EntityIllagerIllusioner.java | 2 + .../minecraft/server/EntityInsentient.java | 51 +++++++- - .../net/minecraft/server/EntityIronGolem.java | 1 + + .../net/minecraft/server/EntityIronGolem.java | 2 + .../net/minecraft/server/EntityLiving.java | 24 +++- + .../net/minecraft/server/EntityLlama.java | 1 + .../net/minecraft/server/EntityMagmaCube.java | 3 +- .../minecraft/server/EntityMushroomCow.java | 1 + - .../net/minecraft/server/EntityOcelot.java | 3 + - .../net/minecraft/server/EntityPanda.java | 41 +++++- - .../net/minecraft/server/EntityParrot.java | 5 +- - .../net/minecraft/server/EntityPhantom.java | 41 +++++- - .../java/net/minecraft/server/EntityPig.java | 34 +++-- - .../net/minecraft/server/EntityPigZombie.java | 4 +- - .../net/minecraft/server/EntityPillager.java | 1 + - .../net/minecraft/server/EntityPolarBear.java | 28 +++++ - .../minecraft/server/EntityPufferFish.java | 3 + - .../net/minecraft/server/EntityRabbit.java | 3 +- - .../net/minecraft/server/EntityRaider.java | 5 + - .../net/minecraft/server/EntityRavager.java | 1 + + .../net/minecraft/server/EntityOcelot.java | 2 + + .../net/minecraft/server/EntityPanda.java | 29 ++++- + .../net/minecraft/server/EntityParrot.java | 8 +- + .../net/minecraft/server/EntityPhantom.java | 33 ++++- + .../java/net/minecraft/server/EntityPig.java | 35 +++--- + .../net/minecraft/server/EntityPigZombie.java | 3 +- + .../net/minecraft/server/EntityPillager.java | 2 + + .../net/minecraft/server/EntityPolarBear.java | 27 ++++ + .../minecraft/server/EntityPufferFish.java | 3 +- + .../net/minecraft/server/EntityRabbit.java | 6 +- + .../net/minecraft/server/EntityRavager.java | 2 + .../net/minecraft/server/EntitySalmon.java | 1 + - .../net/minecraft/server/EntitySheep.java | 7 +- - .../net/minecraft/server/EntityShulker.java | 6 + - .../minecraft/server/EntitySilverfish.java | 4 + + .../net/minecraft/server/EntitySheep.java | 8 +- + .../net/minecraft/server/EntityShulker.java | 2 + + .../minecraft/server/EntitySilverfish.java | 2 + .../net/minecraft/server/EntitySkeleton.java | 1 + + .../server/EntitySkeletonAbstract.java | 1 + .../minecraft/server/EntitySkeletonStray.java | 1 + .../server/EntitySkeletonWither.java | 1 + - .../net/minecraft/server/EntitySlime.java | 3 +- - .../net/minecraft/server/EntitySnowman.java | 2 + - .../net/minecraft/server/EntitySpider.java | 4 + - .../net/minecraft/server/EntitySquid.java | 48 +++++++ + .../net/minecraft/server/EntitySlime.java | 4 +- + .../net/minecraft/server/EntitySnowman.java | 3 + + .../net/minecraft/server/EntitySpider.java | 2 + + .../net/minecraft/server/EntitySquid.java | 52 +++++++- .../server/EntityTameableAnimal.java | 6 + .../minecraft/server/EntityTropicalFish.java | 1 + - .../net/minecraft/server/EntityTurtle.java | 13 ++ + .../net/minecraft/server/EntityTurtle.java | 14 ++- .../net/minecraft/server/EntityTypes.java | 4 + - .../java/net/minecraft/server/EntityVex.java | 17 ++- - .../minecraft/server/EntityVindicator.java | 4 + - .../net/minecraft/server/EntityWitch.java | 1 + - .../net/minecraft/server/EntityWither.java | 2 + + .../java/net/minecraft/server/EntityVex.java | 14 ++- + .../minecraft/server/EntityVindicator.java | 2 + + .../net/minecraft/server/EntityWitch.java | 4 +- + .../net/minecraft/server/EntityWither.java | 4 +- .../java/net/minecraft/server/EntityWolf.java | 2 + - .../net/minecraft/server/EntityZombie.java | 1 + + .../net/minecraft/server/EntityZombie.java | 2 + .../minecraft/server/EntityZombieHusk.java | 1 + .../server/EntityZombieVillager.java | 1 + - .../server/PathfinderGoalArrowAttack.java | 2 + - .../server/PathfinderGoalAvoidTarget.java | 9 +- - .../minecraft/server/PathfinderGoalBeg.java | 2 + - .../server/PathfinderGoalBowShoot.java | 2 + - .../server/PathfinderGoalBreakDoor.java | 2 + - .../minecraft/server/PathfinderGoalBreed.java | 4 +- - .../server/PathfinderGoalCatSitOnBed.java | 1 + - .../server/PathfinderGoalCrossbowAttack.java | 2 + - .../server/PathfinderGoalDefendVillage.java | 1 + - .../server/PathfinderGoalDoorInteract.java | 2 + - .../server/PathfinderGoalDoorOpen.java | 1 + - .../server/PathfinderGoalEatTile.java | 2 + - .../server/PathfinderGoalFishSchool.java | 2 + - .../server/PathfinderGoalFleeSun.java | 2 + - .../server/PathfinderGoalFollowBoat.java | 2 + - .../server/PathfinderGoalFollowEntity.java | 2 + - .../server/PathfinderGoalFollowOwner.java | 2 + - .../server/PathfinderGoalFollowParent.java | 2 + - .../server/PathfinderGoalGotoTarget.java | 2 + - .../server/PathfinderGoalHorseTrap.java | 1 + - .../server/PathfinderGoalHurtByTarget.java | 1 + - .../server/PathfinderGoalJumpOnBlock.java | 1 + - .../server/PathfinderGoalLeapAtTarget.java | 2 + - .../server/PathfinderGoalLlamaFollow.java | 2 + - .../server/PathfinderGoalLookAtPlayer.java | 2 + - .../PathfinderGoalLookAtTradingPlayer.java | 1 + - .../server/PathfinderGoalMeleeAttack.java | 2 + - .../PathfinderGoalMoveThroughVillage.java | 2 + - .../PathfinderGoalMoveTowardsRestriction.java | 2 + - .../PathfinderGoalMoveTowardsTarget.java | 2 + - ...PathfinderGoalNearestAttackableTarget.java | 1 + - ...inderGoalNearestAttackableTargetWitch.java | 1 + - .../PathfinderGoalNearestHealableRaider.java | 1 + - .../server/PathfinderGoalNearestVillage.java | 2 + - .../server/PathfinderGoalOcelotAttack.java | 2 + - .../server/PathfinderGoalOfferFlower.java | 2 + - .../PathfinderGoalOwnerHurtByTarget.java | 1 + - .../server/PathfinderGoalOwnerHurtTarget.java | 1 + - .../minecraft/server/PathfinderGoalPanic.java | 2 + - .../minecraft/server/PathfinderGoalPerch.java | 1 + - .../minecraft/server/PathfinderGoalRaid.java | 2 + - .../PathfinderGoalRandomLookaround.java | 2 + - .../server/PathfinderGoalRandomStroll.java | 2 + - .../PathfinderGoalRandomTargetNonTamed.java | 2 + - .../server/PathfinderGoalRemoveBlock.java | 1 + - .../server/PathfinderGoalRestrictSun.java | 1 + - .../minecraft/server/PathfinderGoalSit.java | 2 + - .../server/PathfinderGoalStrollVillage.java | 1 + - .../minecraft/server/PathfinderGoalTame.java | 2 + - .../server/PathfinderGoalTarget.java | 1 + - .../minecraft/server/PathfinderGoalTempt.java | 2 + - .../server/PathfinderGoalTradeWithPlayer.java | 1 + - .../server/PathfinderGoalUseItem.java | 2 + - .../minecraft/server/PathfinderGoalWater.java | 1 + - .../server/PathfinderGoalWaterJump.java | 2 + .../java/net/pl3x/purpur/PurpurConfig.java | 118 ++++++++++++++++++ .../purpur/controller/ControllerLookWASD.java | 74 +++++++++++ .../purpur/controller/ControllerMoveWASD.java | 77 ++++++++++++ .../controller/ControllerMoveWASDFlying.java | 62 +++++++++ .../ControllerMoveWASDFlyingWithSpacebar.java | 65 ++++++++++ .../controller/ControllerMoveWASDWater.java | 42 +++++++ + .../pathfinder/PathfinderGoalHasRider.java | 17 +++ .../craftbukkit/entity/CraftLivingEntity.java | 10 ++ .../bukkit/craftbukkit/entity/CraftMob.java | 12 ++ - 132 files changed, 1247 insertions(+), 106 deletions(-) + 78 files changed, 1075 insertions(+), 109 deletions(-) create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlyingWithSpacebar.java create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java + create mode 100644 src/main/java/net/pl3x/purpur/pathfinder/PathfinderGoalHasRider.java diff --git a/src/main/java/net/minecraft/server/ControllerLookDolphin.java b/src/main/java/net/minecraft/server/ControllerLookDolphin.java index 454627f65e..df3d6cf281 100644 @@ -258,18 +205,10 @@ index e87754ef33..553245ebe9 100644 } diff --git a/src/main/java/net/minecraft/server/EntityBat.java b/src/main/java/net/minecraft/server/EntityBat.java -index 72474211bc..7bf51ebfd7 100644 +index 72474211bc..8a8acf14ae 100644 --- a/src/main/java/net/minecraft/server/EntityBat.java +++ b/src/main/java/net/minecraft/server/EntityBat.java -@@ -4,6 +4,7 @@ import java.time.LocalDate; - import java.time.temporal.ChronoField; - import java.util.Random; - import javax.annotation.Nullable; -+ - import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit - - public class EntityBat extends EntityAmbient { -@@ -14,6 +15,10 @@ public class EntityBat extends EntityAmbient { +@@ -14,6 +14,10 @@ public class EntityBat extends EntityAmbient { public EntityBat(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -280,7 +219,7 @@ index 72474211bc..7bf51ebfd7 100644 this.setAsleep(true); } -@@ -95,6 +100,13 @@ public class EntityBat extends EntityAmbient { +@@ -95,6 +99,13 @@ public class EntityBat extends EntityAmbient { @Override protected void mobTick() { @@ -294,7 +233,7 @@ index 72474211bc..7bf51ebfd7 100644 super.mobTick(); BlockPosition blockposition = new BlockPosition(this); BlockPosition blockposition1 = blockposition.up(); -@@ -227,4 +239,14 @@ public class EntityBat extends EntityAmbient { +@@ -227,4 +238,14 @@ public class EntityBat extends EntityAmbient { protected float b(EntityPose entitypose, EntitySize entitysize) { return entitysize.height / 2.0F; } @@ -310,7 +249,7 @@ index 72474211bc..7bf51ebfd7 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityBlaze.java b/src/main/java/net/minecraft/server/EntityBlaze.java -index 89f1bfa41d..6dba5eecc8 100644 +index 89f1bfa41d..8b8423c6b3 100644 --- a/src/main/java/net/minecraft/server/EntityBlaze.java +++ b/src/main/java/net/minecraft/server/EntityBlaze.java @@ -10,6 +10,10 @@ public class EntityBlaze extends EntityMonster { @@ -324,7 +263,13 @@ index 89f1bfa41d..6dba5eecc8 100644 this.a(PathType.WATER, -1.0F); this.a(PathType.LAVA, 8.0F); this.a(PathType.DANGER_FIRE, 0.0F); -@@ -24,7 +28,7 @@ public class EntityBlaze extends EntityMonster { +@@ -19,12 +23,13 @@ public class EntityBlaze extends EntityMonster { + + @Override + protected void initPathfinder() { ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(4, new EntityBlaze.PathfinderGoalBlazeFireball(this)); + this.goalSelector.a(5, new PathfinderGoalMoveTowardsRestriction(this, 1.0D)); this.goalSelector.a(7, new PathfinderGoalRandomStrollLand(this, 1.0D, 0.0F)); this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this)); @@ -333,7 +278,7 @@ index 89f1bfa41d..6dba5eecc8 100644 this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); } -@@ -87,6 +91,14 @@ public class EntityBlaze extends EntityMonster { +@@ -87,6 +92,14 @@ public class EntityBlaze extends EntityMonster { this.damageEntity(DamageSource.DROWN, 1.0F); } @@ -348,16 +293,8 @@ index 89f1bfa41d..6dba5eecc8 100644 --this.c; if (this.c <= 0) { this.c = 100; -@@ -143,6 +155,7 @@ public class EntityBlaze extends EntityMonster { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - EntityLiving entityliving = this.a.getGoalTarget(); - - return entityliving != null && entityliving.isAlive() && this.a.c(entityliving); diff --git a/src/main/java/net/minecraft/server/EntityCat.java b/src/main/java/net/minecraft/server/EntityCat.java -index f4660233e8..fb515b3c60 100644 +index f4660233e8..772c6ce791 100644 --- a/src/main/java/net/minecraft/server/EntityCat.java +++ b/src/main/java/net/minecraft/server/EntityCat.java @@ -16,7 +16,7 @@ public class EntityCat extends EntityTameableAnimal { @@ -377,7 +314,17 @@ index f4660233e8..fb515b3c60 100644 } public MinecraftKey ee() { -@@ -196,7 +197,7 @@ public class EntityCat extends EntityTameableAnimal { +@@ -50,7 +51,8 @@ public class EntityCat extends EntityTameableAnimal { + protected void initPathfinder() { + this.goalSit = new PathfinderGoalSit(this); + this.bJ = new EntityCat.PathfinderGoalTemptChance(this, 0.6D, EntityCat.bD, true); +- this.goalSelector.a(1, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new PathfinderGoalFloat(this)); // Purpur ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new EntityCat.b(this)); + this.goalSelector.a(2, this.goalSit); + this.goalSelector.a(3, this.bJ); +@@ -196,7 +198,7 @@ public class EntityCat extends EntityTameableAnimal { @Override public boolean C(Entity entity) { @@ -386,7 +333,7 @@ index f4660233e8..fb515b3c60 100644 } @Override -@@ -268,7 +269,7 @@ public class EntityCat extends EntityTameableAnimal { +@@ -268,7 +270,7 @@ public class EntityCat extends EntityTameableAnimal { @Override public boolean mate(EntityAnimal entityanimal) { @@ -395,7 +342,7 @@ index f4660233e8..fb515b3c60 100644 return false; } else if (!(entityanimal instanceof EntityCat)) { return false; -@@ -299,6 +300,7 @@ public class EntityCat extends EntityTameableAnimal { +@@ -299,6 +301,7 @@ public class EntityCat extends EntityTameableAnimal { @Override public boolean a(EntityHuman entityhuman, EnumHand enumhand) { @@ -403,7 +350,7 @@ index f4660233e8..fb515b3c60 100644 ItemStack itemstack = entityhuman.b(enumhand); Item item = itemstack.getItem(); -@@ -322,7 +324,7 @@ public class EntityCat extends EntityTameableAnimal { +@@ -322,7 +325,7 @@ public class EntityCat extends EntityTameableAnimal { this.heal((float) item.getFoodInfo().getNutrition()); return true; } @@ -412,7 +359,7 @@ index f4660233e8..fb515b3c60 100644 this.goalSit.setSitting(!this.isSitting()); } } -@@ -381,6 +383,15 @@ public class EntityCat extends EntityTameableAnimal { +@@ -381,6 +384,15 @@ public class EntityCat extends EntityTameableAnimal { } @@ -428,56 +375,6 @@ index f4660233e8..fb515b3c60 100644 static class b extends PathfinderGoal { private final EntityCat a; -@@ -394,7 +405,7 @@ public class EntityCat extends EntityTameableAnimal { - - @Override - public boolean a() { -- if (!this.a.isTamed()) { -+ if (this.a.getRider() != null || !this.a.isTamed()) { // Purpur - return false; - } else if (this.a.isSitting()) { - return false; -@@ -447,7 +458,7 @@ public class EntityCat extends EntityTameableAnimal { - - @Override - public boolean b() { -- return this.a.isTamed() && !this.a.isSitting() && this.b != null && this.b.isSleeping() && this.c != null && !this.g(); -+ return this.a.getRider() == null && this.a.isTamed() && !this.a.isSitting() && this.b != null && this.b.isSleeping() && this.c != null && !this.g(); // Purpur - } - - @Override -@@ -544,8 +555,15 @@ public class EntityCat extends EntityTameableAnimal { - - @Override - public boolean a() { -- return super.a() && !this.d.isTamed(); -+ return this.d.getRider() == null && super.a() && !this.d.isTamed(); // Purpur -+ } -+ -+ // Purpur start -+ @Override -+ public boolean b() { -+ return this.d.getRider() == null && super.b(); - } -+ // Purpur end - } - - static class a extends PathfinderGoalAvoidTarget { -@@ -561,12 +579,12 @@ public class EntityCat extends EntityTameableAnimal { - - @Override - public boolean a() { -- return !this.i.isTamed() && super.a(); -+ return this.i.getRider() == null && !this.i.isTamed() && super.a(); // Purpur - } - - @Override - public boolean b() { -- return !this.i.isTamed() && super.b(); -+ return this.i.getRider() == null && !this.i.isTamed() && super.b(); // Purpur - } - } - } diff --git a/src/main/java/net/minecraft/server/EntityCaveSpider.java b/src/main/java/net/minecraft/server/EntityCaveSpider.java index 89c9306df5..e9ec283625 100644 --- a/src/main/java/net/minecraft/server/EntityCaveSpider.java @@ -491,7 +388,7 @@ index 89c9306df5..e9ec283625 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityChicken.java b/src/main/java/net/minecraft/server/EntityChicken.java -index f1dfdd4ff8..6342c4cd23 100644 +index f1dfdd4ff8..92aa9f2295 100644 --- a/src/main/java/net/minecraft/server/EntityChicken.java +++ b/src/main/java/net/minecraft/server/EntityChicken.java @@ -13,6 +13,7 @@ public class EntityChicken extends EntityAnimal { @@ -502,7 +399,15 @@ index f1dfdd4ff8..6342c4cd23 100644 this.eggLayTime = this.random.nextInt(6000) + 6000; this.a(PathType.WATER, 0.0F); } -@@ -65,7 +66,7 @@ public class EntityChicken extends EntityAnimal { +@@ -20,6 +21,7 @@ public class EntityChicken extends EntityAnimal { + @Override + protected void initPathfinder() { + this.goalSelector.a(0, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new PathfinderGoalPanic(this, 1.4D)); + this.goalSelector.a(2, new PathfinderGoalBreed(this, 1.0D)); + this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.0D, false, EntityChicken.bG)); +@@ -65,7 +67,7 @@ public class EntityChicken extends EntityAnimal { } this.bz += this.bD * 2.0F; @@ -524,10 +429,10 @@ index 1e3782122a..c0b066d188 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityCow.java b/src/main/java/net/minecraft/server/EntityCow.java -index c3aef0b2a1..087ce87390 100644 +index c3aef0b2a1..a79ce9296a 100644 --- a/src/main/java/net/minecraft/server/EntityCow.java +++ b/src/main/java/net/minecraft/server/EntityCow.java -@@ -9,6 +9,7 @@ public class EntityCow extends EntityAnimal { +@@ -9,11 +9,13 @@ public class EntityCow extends EntityAnimal { public EntityCow(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -535,11 +440,17 @@ index c3aef0b2a1..087ce87390 100644 } @Override + protected void initPathfinder() { + this.goalSelector.a(0, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new PathfinderGoalPanic(this, 2.0D)); + this.goalSelector.a(2, new PathfinderGoalBreed(this, 1.0D)); + this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.25D, RecipeItemStack.a(Items.WHEAT, Blocks.RED_MUSHROOM.getItem(), Blocks.BROWN_MUSHROOM.getItem()), false)); diff --git a/src/main/java/net/minecraft/server/EntityCreeper.java b/src/main/java/net/minecraft/server/EntityCreeper.java -index bcb7276308..2b7e1b038a 100644 +index bcb7276308..038ff1d93c 100644 --- a/src/main/java/net/minecraft/server/EntityCreeper.java +++ b/src/main/java/net/minecraft/server/EntityCreeper.java -@@ -21,6 +21,7 @@ public class EntityCreeper extends EntityMonster { +@@ -21,11 +21,13 @@ public class EntityCreeper extends EntityMonster { public EntityCreeper(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -547,7 +458,13 @@ index bcb7276308..2b7e1b038a 100644 } @Override -@@ -275,4 +276,59 @@ public class EntityCreeper extends EntityMonster { + protected void initPathfinder() { + this.goalSelector.a(1, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(1, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(2, new PathfinderGoalSwell(this)); + this.goalSelector.a(3, new PathfinderGoalAvoidTarget<>(this, EntityOcelot.class, 6.0F, 1.0D, 1.2D)); + this.goalSelector.a(3, new PathfinderGoalAvoidTarget<>(this, EntityCat.class, 6.0F, 1.0D, 1.2D)); +@@ -275,4 +277,59 @@ public class EntityCreeper extends EntityMonster { public void setCausedHeadDrop() { ++this.bD; } @@ -608,7 +525,7 @@ index bcb7276308..2b7e1b038a 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityDolphin.java b/src/main/java/net/minecraft/server/EntityDolphin.java -index 063fb70534..2ed670f176 100644 +index 063fb70534..a3972b8e69 100644 --- a/src/main/java/net/minecraft/server/EntityDolphin.java +++ b/src/main/java/net/minecraft/server/EntityDolphin.java @@ -18,6 +18,7 @@ public class EntityDolphin extends EntityWaterAnimal { @@ -619,44 +536,15 @@ index 063fb70534..2ed670f176 100644 this.moveController = new EntityDolphin.a(this); this.lookController = new ControllerLookDolphin(this, 10); this.setCanPickupLoot(true); -@@ -322,11 +323,13 @@ public class EntityDolphin extends EntityWaterAnimal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a.dV() && this.a.getAirTicks() >= 100; - } - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - BlockPosition blockposition = this.a.l(); - - return !(new BlockPosition((double) blockposition.getX(), this.a.locY, (double) blockposition.getZ())).a((IPosition) this.a.getPositionVector(), 4.0D) && !this.b && this.a.getAirTicks() >= 100; -@@ -416,12 +419,14 @@ public class EntityDolphin extends EntityWaterAnimal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - this.c = this.a.world.a(EntityDolphin.bA, (EntityLiving) this.a); - return this.c == null ? false : this.c.isSwimming(); - } - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.c != null && this.c.isSwimming() && this.a.h((Entity) this.c) < 256.0D; - } - -@@ -460,6 +465,7 @@ public class EntityDolphin extends EntityWaterAnimal { - - @Override - public boolean a() { -+ if (EntityDolphin.this.getRider() != null) return false; // Purpur - if (this.b > EntityDolphin.this.ticksLived) { - return false; - } else { -@@ -524,7 +530,7 @@ public class EntityDolphin extends EntityWaterAnimal { +@@ -97,6 +98,7 @@ public class EntityDolphin extends EntityWaterAnimal { + protected void initPathfinder() { + this.goalSelector.a(0, new PathfinderGoalBreath(this)); + this.goalSelector.a(0, new PathfinderGoalWater(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new EntityDolphin.b(this)); + this.goalSelector.a(2, new EntityDolphin.c(this, 4.0D)); + this.goalSelector.a(4, new PathfinderGoalRandomSwim(this, 1.0D, 10)); +@@ -524,7 +526,7 @@ public class EntityDolphin extends EntityWaterAnimal { } } @@ -665,7 +553,7 @@ index 063fb70534..2ed670f176 100644 private final EntityDolphin i; -@@ -533,8 +539,21 @@ public class EntityDolphin extends EntityWaterAnimal { +@@ -533,8 +535,21 @@ public class EntityDolphin extends EntityWaterAnimal { this.i = entitydolphin; } @@ -689,7 +577,7 @@ index 063fb70534..2ed670f176 100644 this.i.setMot(this.i.getMot().add(0.0D, 0.005D, 0.0D)); } diff --git a/src/main/java/net/minecraft/server/EntityDrowned.java b/src/main/java/net/minecraft/server/EntityDrowned.java -index 6f0094e6dc..81cb64b53b 100644 +index 6f0094e6dc..b0ba05aaf7 100644 --- a/src/main/java/net/minecraft/server/EntityDrowned.java +++ b/src/main/java/net/minecraft/server/EntityDrowned.java @@ -12,6 +12,7 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { @@ -727,72 +615,6 @@ index 6f0094e6dc..81cb64b53b 100644 } } -@@ -260,11 +261,13 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { - - @Override - public boolean a() { -+ if (this.d.getRider() != null) return false; // Purpur - return super.a() && this.d.h(this.d.getGoalTarget()); - } - - @Override - public boolean b() { -+ if (this.d.getRider() != null) return false; // Purpur - return super.b() && this.d.h(this.d.getGoalTarget()); - } - } -@@ -287,6 +290,7 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (!this.f.J()) { - return false; - } else if (this.a.isInWater()) { -@@ -307,6 +311,7 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return !this.a.getNavigation().n(); - } - -@@ -343,11 +348,13 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { - - @Override - public boolean a() { -+ if (this.g.getRider() != null) return false; // Purpur - return super.a() && !this.g.world.J() && this.g.isInWater() && this.g.locY >= (double) (this.g.world.getSeaLevel() - 3); - } - - @Override - public boolean b() { -+ if (this.g.getRider() != null) return false; // Purpur - return super.b(); - } - -@@ -386,11 +393,13 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return !this.a.world.J() && this.a.isInWater() && this.a.locY < (double) (this.c - 2); - } - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a() && !this.d; - } - -@@ -432,6 +441,7 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return super.a() && this.a.getItemInMainHand().getItem() == Items.TRIDENT; - } - diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java index c8c74f2b3e..6a6367a2e1 100644 --- a/src/main/java/net/minecraft/server/EntityEnderDragon.java @@ -806,7 +628,7 @@ index c8c74f2b3e..6a6367a2e1 100644 this.setHealth(this.getMaxHealth()); this.noclip = true; diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java -index a94ed1ae08..0939bbd5fb 100644 +index a94ed1ae08..a438d30414 100644 --- a/src/main/java/net/minecraft/server/EntityEnderman.java +++ b/src/main/java/net/minecraft/server/EntityEnderman.java @@ -22,6 +22,7 @@ public class EntityEnderman extends EntityMonster { @@ -817,51 +639,19 @@ index a94ed1ae08..0939bbd5fb 100644 this.K = 1.0F; this.a(PathType.WATER, -1.0F); } -@@ -314,6 +315,7 @@ public class EntityEnderman extends EntityMonster { - - @Override - public boolean a() { -+ if (this.enderman.getRider() != null) return false; // Purpur - return this.enderman.getCarried() != null ? false : (!this.enderman.world.getGameRules().getBoolean(GameRules.MOB_GRIEFING) ? false : this.enderman.getRandom().nextInt(20) == 0); - } - -@@ -357,6 +359,7 @@ public class EntityEnderman extends EntityMonster { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a.getCarried() == null ? false : (!this.a.world.getGameRules().getBoolean(GameRules.MOB_GRIEFING) ? false : this.a.getRandom().nextInt(2000) == 0); - } - -@@ -401,6 +404,7 @@ public class EntityEnderman extends EntityMonster { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - EntityLiving entityliving = this.a.getGoalTarget(); - - if (!(entityliving instanceof EntityHuman)) { -@@ -437,6 +441,7 @@ public class EntityEnderman extends EntityMonster { - - @Override - public boolean a() { -+ if (this.i.getRider() != null) return false; // Purpur - this.j = this.i.world.a(this.m, (EntityLiving) this.i); - return this.j != null; - } -@@ -455,6 +460,7 @@ public class EntityEnderman extends EntityMonster { - - @Override - public boolean b() { -+ if (this.i.getRider() != null) return false; // Purpur - if (this.j != null) { - if (!this.i.f(this.j)) { - return false; +@@ -29,6 +30,7 @@ public class EntityEnderman extends EntityMonster { + @Override + protected void initPathfinder() { + this.goalSelector.a(0, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new EntityEnderman.a(this)); + this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, 1.0D, false)); + this.goalSelector.a(7, new PathfinderGoalRandomStrollLand(this, 1.0D, 0.0F)); diff --git a/src/main/java/net/minecraft/server/EntityEndermite.java b/src/main/java/net/minecraft/server/EntityEndermite.java -index c2be69fc5c..c9c58740a9 100644 +index c2be69fc5c..b39c1e95a7 100644 --- a/src/main/java/net/minecraft/server/EntityEndermite.java +++ b/src/main/java/net/minecraft/server/EntityEndermite.java -@@ -9,6 +9,7 @@ public class EntityEndermite extends EntityMonster { +@@ -9,17 +9,19 @@ public class EntityEndermite extends EntityMonster { public EntityEndermite(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -869,17 +659,21 @@ index c2be69fc5c..c9c58740a9 100644 this.f = 3; } -@@ -19,7 +20,7 @@ public class EntityEndermite extends EntityMonster { + @Override + protected void initPathfinder() { + this.goalSelector.a(1, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(1, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, 1.0D, false)); this.goalSelector.a(3, new PathfinderGoalRandomStrollLand(this, 1.0D)); this.goalSelector.a(7, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this)); - this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[0])).a()); -+ this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[0])).a(new Class[0])); // Purpur - decompile error? ++ this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this)).a(new Class[0])); // Purpur - decompile error this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); } diff --git a/src/main/java/net/minecraft/server/EntityEvoker.java b/src/main/java/net/minecraft/server/EntityEvoker.java -index 77139f2517..20e15efbf1 100644 +index 77139f2517..8d923a34c3 100644 --- a/src/main/java/net/minecraft/server/EntityEvoker.java +++ b/src/main/java/net/minecraft/server/EntityEvoker.java @@ -9,6 +9,7 @@ public class EntityEvoker extends EntityIllagerWizard { @@ -890,57 +684,46 @@ index 77139f2517..20e15efbf1 100644 this.f = 10; } -@@ -24,7 +25,7 @@ public class EntityEvoker extends EntityIllagerWizard { +@@ -16,6 +17,7 @@ public class EntityEvoker extends EntityIllagerWizard { + protected void initPathfinder() { + super.initPathfinder(); + this.goalSelector.a(0, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new EntityEvoker.b()); + this.goalSelector.a(2, new PathfinderGoalAvoidTarget<>(this, EntityHuman.class, 8.0F, 0.6D, 1.0D)); + this.goalSelector.a(4, new EntityEvoker.c()); +@@ -24,7 +26,7 @@ public class EntityEvoker extends EntityIllagerWizard { this.goalSelector.a(8, new PathfinderGoalRandomStroll(this, 0.6D)); this.goalSelector.a(9, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 3.0F, 1.0F)); this.goalSelector.a(10, new PathfinderGoalLookAtPlayer(this, EntityInsentient.class, 8.0F)); - this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[]{EntityRaider.class})).a()); -+ this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[]{EntityRaider.class})).a(new Class[0])); // Purpur - decompile error ++ this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, EntityRaider.class)).a(new Class[0])); // Purpur - decompile error this.targetSelector.a(2, (new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)).a(300)); this.targetSelector.a(3, (new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, false)).a(300)); this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityIronGolem.class, false)); -@@ -117,6 +118,7 @@ public class EntityEvoker extends EntityIllagerWizard { - - @Override - public boolean a() { -+ if (EntityEvoker.this.getRider() != null) return false; // Purpur - if (EntityEvoker.this.getGoalTarget() != null) { - return false; - } else if (EntityEvoker.this.ef()) { -@@ -139,6 +141,7 @@ public class EntityEvoker extends EntityIllagerWizard { - - @Override - public boolean b() { -+ if (EntityEvoker.this.getRider() != null) return false; // Purpur - return EntityEvoker.this.ep() != null && this.b > 0; - } - -@@ -195,6 +198,7 @@ public class EntityEvoker extends EntityIllagerWizard { - - @Override - public boolean a() { -+ if (EntityEvoker.this.getRider() != null) return false; // Purpur - if (!super.a()) { - return false; - } else { diff --git a/src/main/java/net/minecraft/server/EntityFish.java b/src/main/java/net/minecraft/server/EntityFish.java -index 90479feb49..6d8d81c359 100644 +index 90479feb49..884d14e1c0 100644 --- a/src/main/java/net/minecraft/server/EntityFish.java +++ b/src/main/java/net/minecraft/server/EntityFish.java -@@ -73,11 +73,7 @@ public abstract class EntityFish extends EntityWaterAnimal { +@@ -72,13 +72,10 @@ public abstract class EntityFish extends EntityWaterAnimal { + @Override protected void initPathfinder() { super.initPathfinder(); - this.goalSelector.a(0, new PathfinderGoalPanic(this, 1.25D)); +- this.goalSelector.a(0, new PathfinderGoalPanic(this, 1.25D)); - PathfinderGoalSelector pathfindergoalselector = this.goalSelector; - Predicate predicate = IEntitySelector.f; - - predicate.getClass(); - pathfindergoalselector.a(2, new PathfinderGoalAvoidTarget<>(this, EntityHuman.class, 8.0F, 1.6D, 1.4D, predicate::test)); -+ this.goalSelector.a(2, new PathfinderGoalAvoidTarget<>(this, EntityHuman.class, 8.0F, 1.6D, 1.4D, IEntitySelector.f::test)); // Purpur - decompile error? - this.goalSelector.a(4, new EntityFish.b(this)); +- this.goalSelector.a(4, new EntityFish.b(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur ++ this.goalSelector.a(1, new PathfinderGoalPanic(this, 1.25D)); // Purpur ++ this.goalSelector.a(3, new PathfinderGoalAvoidTarget<>(this, EntityHuman.class, 8.0F, 1.6D, 1.4D, IEntitySelector.f::test)); // Purpur - decompile fix ++ this.goalSelector.a(5, new EntityFish.b(this)); // Purpur } -@@ -89,7 +85,7 @@ public abstract class EntityFish extends EntityWaterAnimal { + @Override +@@ -89,7 +86,7 @@ public abstract class EntityFish extends EntityWaterAnimal { @Override public void e(Vec3D vec3d) { if (this.df() && this.isInWater()) { @@ -949,7 +732,7 @@ index 90479feb49..6d8d81c359 100644 this.move(EnumMoveType.SELF, this.getMot()); this.setMot(this.getMot().a(0.9D)); if (this.getGoalTarget() == null) { -@@ -160,7 +156,7 @@ public abstract class EntityFish extends EntityWaterAnimal { +@@ -160,7 +157,7 @@ public abstract class EntityFish extends EntityWaterAnimal { return SoundEffects.ENTITY_FISH_SWIM; } @@ -958,7 +741,7 @@ index 90479feb49..6d8d81c359 100644 private final EntityFish i; -@@ -169,8 +165,16 @@ public abstract class EntityFish extends EntityWaterAnimal { +@@ -169,8 +166,16 @@ public abstract class EntityFish extends EntityWaterAnimal { this.i = entityfish; } @@ -976,16 +759,8 @@ index 90479feb49..6d8d81c359 100644 if (this.i.a(TagsFluid.WATER)) { this.i.setMot(this.i.getMot().add(0.0D, 0.005D, 0.0D)); } -@@ -207,6 +211,7 @@ public abstract class EntityFish extends EntityWaterAnimal { - - @Override - public boolean a() { -+ if (this.h.getRider() != null) return false; // Purpur - return this.h.dV() && super.a(); - } - } diff --git a/src/main/java/net/minecraft/server/EntityFox.java b/src/main/java/net/minecraft/server/EntityFox.java -index 1da2f013fc..a6fd50c492 100644 +index 1da2f013fc..27b29f6336 100644 --- a/src/main/java/net/minecraft/server/EntityFox.java +++ b/src/main/java/net/minecraft/server/EntityFox.java @@ -48,6 +48,7 @@ public class EntityFox extends EntityAnimal { @@ -996,7 +771,15 @@ index 1da2f013fc..a6fd50c492 100644 this.lookController = new EntityFox.k(); this.moveController = new EntityFox.m(); this.a(PathType.DANGER_OTHER, 0.0F); -@@ -155,7 +156,7 @@ public class EntityFox extends EntityAnimal { +@@ -74,6 +75,7 @@ public class EntityFox extends EntityAnimal { + return entityliving instanceof EntityFishSchool; + }); + this.goalSelector.a(0, new EntityFox.g()); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new EntityFox.b()); + this.goalSelector.a(2, new EntityFox.n(2.2D)); + this.goalSelector.a(3, new PathfinderGoalAvoidTarget<>(this, EntityHuman.class, 16.0F, 1.6D, 1.4D, (entityliving) -> { +@@ -155,7 +157,7 @@ public class EntityFox extends EntityAnimal { } private boolean j(ItemStack itemstack) { @@ -1005,7 +788,7 @@ index 1da2f013fc..a6fd50c492 100644 } @Override -@@ -367,6 +368,7 @@ public class EntityFox extends EntityAnimal { +@@ -367,6 +369,7 @@ public class EntityFox extends EntityAnimal { @Override public boolean e(ItemStack itemstack) { @@ -1013,7 +796,7 @@ index 1da2f013fc..a6fd50c492 100644 EnumItemSlot enumitemslot = EntityInsentient.h(itemstack); return !this.getEquipment(enumitemslot).isEmpty() ? false : enumitemslot == EnumItemSlot.MAINHAND && super.e(itemstack); -@@ -374,12 +376,14 @@ public class EntityFox extends EntityAnimal { +@@ -374,12 +377,14 @@ public class EntityFox extends EntityAnimal { @Override protected boolean g(ItemStack itemstack) { @@ -1028,7 +811,7 @@ index 1da2f013fc..a6fd50c492 100644 private void k(ItemStack itemstack) { if (!itemstack.isEmpty() && !this.world.isClientSide) { EntityItem entityitem = new EntityItem(this.world, this.locX + this.getLookDirection().x, this.locY + 1.0D, this.locZ + this.getLookDirection().z, itemstack); -@@ -473,6 +477,7 @@ public class EntityFox extends EntityAnimal { +@@ -473,6 +478,7 @@ public class EntityFox extends EntityAnimal { return this.s(16); } @@ -1036,7 +819,7 @@ index 1da2f013fc..a6fd50c492 100644 public void s(boolean flag) { this.d(16, flag); } -@@ -537,6 +542,7 @@ public class EntityFox extends EntityAnimal { +@@ -537,6 +543,7 @@ public class EntityFox extends EntityAnimal { this.setSleeping(false); } @@ -1044,7 +827,7 @@ index 1da2f013fc..a6fd50c492 100644 private void en() { this.u(false); this.setCrouching(false); -@@ -547,7 +553,7 @@ public class EntityFox extends EntityAnimal { +@@ -547,7 +554,7 @@ public class EntityFox extends EntityAnimal { } private boolean eo() { @@ -1053,7 +836,7 @@ index 1da2f013fc..a6fd50c492 100644 } @Override -@@ -618,7 +624,30 @@ public class EntityFox extends EntityAnimal { +@@ -618,7 +625,30 @@ public class EntityFox extends EntityAnimal { return deathEvent; // Paper } @@ -1084,35 +867,7 @@ index 1da2f013fc..a6fd50c492 100644 double d0 = entityliving.locZ - entityfox.locZ; double d1 = entityliving.locX - entityfox.locX; double d2 = d0 / d1; -@@ -646,11 +675,13 @@ public class EntityFox extends EntityAnimal { - - @Override - public boolean a() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - return super.a() && !EntityFox.this.dX() && !EntityFox.this.eg(); - } - - @Override - public boolean b() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - return super.b() && !EntityFox.this.dX() && !EntityFox.this.eg(); - } - } -@@ -666,11 +697,13 @@ public class EntityFox extends EntityAnimal { - - @Override - public boolean a() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - return !this.b.el() && super.a(); - } - - @Override - public boolean b() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - return !this.b.el() && super.b(); - } - -@@ -681,16 +714,16 @@ public class EntityFox extends EntityAnimal { +@@ -681,16 +711,16 @@ public class EntityFox extends EntityAnimal { } } @@ -1132,150 +887,7 @@ index 1da2f013fc..a6fd50c492 100644 } } -@@ -707,6 +740,7 @@ public class EntityFox extends EntityAnimal { - - @Override - public boolean a() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - if (!EntityFox.this.ee()) { - return false; - } else { -@@ -734,6 +768,7 @@ public class EntityFox extends EntityAnimal { - - @Override - public boolean b() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - EntityLiving entityliving = EntityFox.this.getGoalTarget(); - - if (entityliving != null && entityliving.isAlive()) { -@@ -837,11 +872,13 @@ public class EntityFox extends EntityAnimal { - - @Override - public boolean a() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - return super.a() && this.g(); - } - - @Override - public boolean b() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - return super.b() && this.g(); - } - -@@ -858,6 +895,7 @@ public class EntityFox extends EntityAnimal { - - @Override - public boolean a() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - return !EntityFox.this.el() && super.a(); - } - } -@@ -872,6 +910,7 @@ public class EntityFox extends EntityAnimal { - - @Override - public boolean a() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - return EntityFox.this.dX(); - } - -@@ -979,6 +1018,7 @@ public class EntityFox extends EntityAnimal { - - @Override - public boolean a() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - return !EntityFox.this.isSleeping() && super.a(); - } - -@@ -1004,12 +1044,14 @@ public class EntityFox extends EntityAnimal { - - @Override - public boolean a() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - return EntityFox.this.getLastDamager() == null && EntityFox.this.getRandom().nextFloat() < 0.02F && !EntityFox.this.isSleeping() && EntityFox.this.getGoalTarget() == null && EntityFox.this.getNavigation().n() && !this.h() && !EntityFox.this.dY() && !EntityFox.this.isCrouching(); - } - - @Override - public boolean b() { -- return this.f > 0; -+ if (EntityFox.this.getRider() != null) return false; // Purpur -+ return getRider() == null && this.f > 0; // Purpur - } - - @Override -@@ -1057,11 +1099,13 @@ public class EntityFox extends EntityAnimal { - - @Override - public boolean a() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - return EntityFox.this.bb == 0.0F && EntityFox.this.bc == 0.0F && EntityFox.this.bd == 0.0F ? this.j() || EntityFox.this.isSleeping() : false; - } - - @Override - public boolean b() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - return this.j(); - } - -@@ -1100,6 +1144,18 @@ public class EntityFox extends EntityAnimal { - this.b = (new PathfinderTargetCondition()).a(12.0D).c().a(EntityFox.this.new c()); - } - -+ // Purpur start -+ @Override -+ public boolean a() { -+ return EntityFox.this.getRider() == null; -+ } -+ -+ @Override -+ public boolean b() { -+ return EntityFox.this.getRider() == null; -+ } -+ // Purpur end -+ - protected boolean g() { - BlockPosition blockposition = new BlockPosition(EntityFox.this); - -@@ -1130,6 +1186,7 @@ public class EntityFox extends EntityAnimal { - - @Override - public boolean a() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - if (!EntityFox.this.isSleeping() && this.a.getGoalTarget() == null) { - if (EntityFox.this.world.U()) { - return true; -@@ -1167,6 +1224,7 @@ public class EntityFox extends EntityAnimal { - - @Override - public boolean a() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - if (this.b > 0 && this.e.getRandom().nextInt(this.b) != 0) { - return false; - } else { -@@ -1290,8 +1348,15 @@ public class EntityFox extends EntityAnimal { - - @Override - public boolean a() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - return !EntityFox.this.isSitting() && !EntityFox.this.isSleeping() && !EntityFox.this.isCrouching() && !EntityFox.this.dX() && super.a(); - } -+ -+ // Purpur start -+ public boolean b() { -+ return EntityFox.this.getRider() == null && super.b(); -+ } -+ // Purpur end - } - - class u extends PathfinderGoal { -@@ -1302,6 +1367,7 @@ public class EntityFox extends EntityAnimal { - - @Override - public boolean a() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - if (EntityFox.this.isSleeping()) { - return false; - } else { -@@ -1349,16 +1415,16 @@ public class EntityFox extends EntityAnimal { +@@ -1349,16 +1379,16 @@ public class EntityFox extends EntityAnimal { } } @@ -1295,19 +907,11 @@ index 1da2f013fc..a6fd50c492 100644 } } -@@ -1372,6 +1438,7 @@ public class EntityFox extends EntityAnimal { - - @Override - public boolean a() { -+ if (EntityFox.this.getRider() != null) return false; // Purpur - if (!EntityFox.this.getEquipment(EnumItemSlot.MAINHAND).isEmpty()) { - return false; - } else if (EntityFox.this.getGoalTarget() == null && EntityFox.this.getLastDamager() == null) { diff --git a/src/main/java/net/minecraft/server/EntityGhast.java b/src/main/java/net/minecraft/server/EntityGhast.java -index f25c828df9..605589dbaf 100644 +index f25c828df9..c5c49b7192 100644 --- a/src/main/java/net/minecraft/server/EntityGhast.java +++ b/src/main/java/net/minecraft/server/EntityGhast.java -@@ -10,6 +10,7 @@ public class EntityGhast extends EntityFlying implements IMonster { +@@ -10,12 +10,14 @@ public class EntityGhast extends EntityFlying implements IMonster { public EntityGhast(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -1315,31 +919,14 @@ index f25c828df9..605589dbaf 100644 this.f = 5; this.moveController = new EntityGhast.ControllerGhast(this); } -@@ -131,6 +132,7 @@ public class EntityGhast extends EntityFlying implements IMonster { - @Override - public boolean a() { -+ if (this.ghast.getRider() != null) return false; // Purpur - return this.ghast.getGoalTarget() != null; - } - -@@ -194,6 +196,7 @@ public class EntityGhast extends EntityFlying implements IMonster { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return true; - } - -@@ -231,6 +234,7 @@ public class EntityGhast extends EntityFlying implements IMonster { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - ControllerMove controllermove = this.a.getControllerMove(); - - if (!controllermove.b()) { -@@ -261,7 +265,7 @@ public class EntityGhast extends EntityFlying implements IMonster { + @Override + protected void initPathfinder() { ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(5, new EntityGhast.PathfinderGoalGhastIdleMove(this)); + this.goalSelector.a(7, new EntityGhast.PathfinderGoalGhastMoveTowardsTarget(this)); + this.goalSelector.a(7, new EntityGhast.PathfinderGoalGhastAttackTarget(this)); +@@ -261,7 +263,7 @@ public class EntityGhast extends EntityFlying implements IMonster { } } @@ -1348,7 +935,7 @@ index f25c828df9..605589dbaf 100644 private final EntityGhast i; private int j; -@@ -272,7 +276,7 @@ public class EntityGhast extends EntityFlying implements IMonster { +@@ -272,7 +274,7 @@ public class EntityGhast extends EntityFlying implements IMonster { } @Override @@ -1372,7 +959,7 @@ index f23d0380ff..29e7639ad6 100644 } diff --git a/src/main/java/net/minecraft/server/EntityGuardian.java b/src/main/java/net/minecraft/server/EntityGuardian.java -index afb982d428..164a816cef 100644 +index afb982d428..d782fb138a 100644 --- a/src/main/java/net/minecraft/server/EntityGuardian.java +++ b/src/main/java/net/minecraft/server/EntityGuardian.java @@ -23,8 +23,15 @@ public class EntityGuardian extends EntityMonster { @@ -1393,7 +980,15 @@ index afb982d428..164a816cef 100644 } @Override -@@ -78,6 +85,7 @@ public class EntityGuardian extends EntityMonster { +@@ -32,6 +39,7 @@ public class EntityGuardian extends EntityMonster { + PathfinderGoalMoveTowardsRestriction pathfindergoalmovetowardsrestriction = new PathfinderGoalMoveTowardsRestriction(this, 1.0D); + + this.goalRandomStroll = new PathfinderGoalRandomStroll(this, 1.0D, 80); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(4, new EntityGuardian.PathfinderGoalGuardianAttack(this)); + this.goalSelector.a(5, pathfindergoalmovetowardsrestriction); + this.goalSelector.a(7, this.goalRandomStroll); +@@ -78,6 +86,7 @@ public class EntityGuardian extends EntityMonster { return (Boolean) this.datawatcher.get(EntityGuardian.b); } @@ -1401,7 +996,7 @@ index afb982d428..164a816cef 100644 private void r(boolean flag) { this.datawatcher.set(EntityGuardian.b, flag); } -@@ -292,7 +300,7 @@ public class EntityGuardian extends EntityMonster { +@@ -292,7 +301,7 @@ public class EntityGuardian extends EntityMonster { @Override public void e(Vec3D vec3d) { if (this.df() && this.isInWater()) { @@ -1410,7 +1005,7 @@ index afb982d428..164a816cef 100644 this.move(EnumMoveType.SELF, this.getMot()); this.setMot(this.getMot().a(0.9D)); if (!this.dX() && this.getGoalTarget() == null) { -@@ -304,7 +312,7 @@ public class EntityGuardian extends EntityMonster { +@@ -304,7 +313,7 @@ public class EntityGuardian extends EntityMonster { } @@ -1419,7 +1014,7 @@ index afb982d428..164a816cef 100644 private final EntityGuardian i; -@@ -314,7 +322,16 @@ public class EntityGuardian extends EntityMonster { +@@ -314,7 +323,16 @@ public class EntityGuardian extends EntityMonster { } @Override @@ -1437,22 +1032,6 @@ index afb982d428..164a816cef 100644 if (this.h == ControllerMove.Operation.MOVE_TO && !this.i.getNavigation().n()) { Vec3D vec3d = new Vec3D(this.b - this.i.locX, this.c - this.i.locY, this.d - this.i.locZ); double d0 = vec3d.f(); -@@ -372,6 +389,7 @@ public class EntityGuardian extends EntityMonster { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - EntityLiving entityliving = this.a.getGoalTarget(); - - return entityliving != null && entityliving.isAlive(); -@@ -379,6 +397,7 @@ public class EntityGuardian extends EntityMonster { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return super.b() && (this.c || this.a.h((Entity) this.a.getGoalTarget()) > 9.0D); - } - diff --git a/src/main/java/net/minecraft/server/EntityGuardianElder.java b/src/main/java/net/minecraft/server/EntityGuardianElder.java index 7248d46cfb..9bf969d92f 100644 --- a/src/main/java/net/minecraft/server/EntityGuardianElder.java @@ -1466,10 +1045,10 @@ index 7248d46cfb..9bf969d92f 100644 if (this.goalRandomStroll != null) { this.goalRandomStroll.setTimeBetweenMovement(400); diff --git a/src/main/java/net/minecraft/server/EntityHorseAbstract.java b/src/main/java/net/minecraft/server/EntityHorseAbstract.java -index e60eedb544..2177a4370e 100644 +index e60eedb544..a11110c1a7 100644 --- a/src/main/java/net/minecraft/server/EntityHorseAbstract.java +++ b/src/main/java/net/minecraft/server/EntityHorseAbstract.java -@@ -38,6 +38,10 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven +@@ -38,12 +38,17 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven protected EntityHorseAbstract(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -1480,6 +1059,13 @@ index e60eedb544..2177a4370e 100644 this.K = 1.0F; this.loadChest(); } + + @Override + protected void initPathfinder() { ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new PathfinderGoalPanic(this, 1.2D)); + this.goalSelector.a(1, new PathfinderGoalTame(this, 1.2D)); + this.goalSelector.a(2, new PathfinderGoalBreed(this, 1.0D, EntityHorseAbstract.class)); diff --git a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java index 0aa77914ca..61cf6723c6 100644 --- a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java @@ -1538,7 +1124,7 @@ index d81d11d570..a7a09dba4c 100644 this.setSneaking(false); } else { diff --git a/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java b/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java -index cc37b5ff16..9fe87a57d6 100644 +index cc37b5ff16..5ed268ea9f 100644 --- a/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java +++ b/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java @@ -9,6 +9,7 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan @@ -1549,50 +1135,14 @@ index cc37b5ff16..9fe87a57d6 100644 this.f = 5; this.bA = new Vec3D[2][4]; -@@ -162,6 +163,7 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan - - @Override - public boolean a() { -+ if (EntityIllagerIllusioner.this.getRider() != null) return false; // Purpur - return !super.a() ? false : (EntityIllagerIllusioner.this.getGoalTarget() == null ? false : (EntityIllagerIllusioner.this.getGoalTarget().getId() == this.e ? false : EntityIllagerIllusioner.this.world.getDamageScaler(new BlockPosition(EntityIllagerIllusioner.this)).a((float) EnumDifficulty.NORMAL.ordinal()))); - } - -@@ -205,6 +207,7 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan - - @Override - public boolean a() { -+ if (EntityIllagerIllusioner.this.getRider() != null) return false; // Purpur - return !super.a() ? false : !EntityIllagerIllusioner.this.hasEffect(MobEffects.INVISIBILITY); - } - -diff --git a/src/main/java/net/minecraft/server/EntityIllagerWizard.java b/src/main/java/net/minecraft/server/EntityIllagerWizard.java -index 636d421f10..4d41d3d410 100644 ---- a/src/main/java/net/minecraft/server/EntityIllagerWizard.java -+++ b/src/main/java/net/minecraft/server/EntityIllagerWizard.java -@@ -115,6 +115,7 @@ public abstract class EntityIllagerWizard extends EntityIllagerAbstract { - - @Override - public boolean a() { -+ if (EntityIllagerWizard.this.getRider() != null) return false; // Purpur - EntityLiving entityliving = EntityIllagerWizard.this.getGoalTarget(); - - return entityliving != null && entityliving.isAlive() ? (EntityIllagerWizard.this.ef() ? false : EntityIllagerWizard.this.ticksLived >= this.c) : false; -@@ -122,6 +123,7 @@ public abstract class EntityIllagerWizard extends EntityIllagerAbstract { - - @Override - public boolean b() { -+ if (EntityIllagerWizard.this.getRider() != null) return false; // Purpur - EntityLiving entityliving = EntityIllagerWizard.this.getGoalTarget(); - - return entityliving != null && entityliving.isAlive() && this.b > 0; -@@ -175,6 +177,7 @@ public abstract class EntityIllagerWizard extends EntityIllagerAbstract { - - @Override - public boolean a() { -+ if (EntityIllagerWizard.this.getRider() != null) return false; // Purpur - return EntityIllagerWizard.this.eh() > 0; - } - +@@ -23,6 +24,7 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan + protected void initPathfinder() { + super.initPathfinder(); + this.goalSelector.a(0, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new EntityIllagerWizard.b()); + this.goalSelector.a(4, new EntityIllagerIllusioner.b()); + this.goalSelector.a(5, new EntityIllagerIllusioner.a()); diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java index d00e99cdba..47090db890 100644 --- a/src/main/java/net/minecraft/server/EntityInsentient.java @@ -1689,10 +1239,10 @@ index d00e99cdba..47090db890 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityIronGolem.java b/src/main/java/net/minecraft/server/EntityIronGolem.java -index 8e463111bb..fd6a926cae 100644 +index 8e463111bb..2c34ab337a 100644 --- a/src/main/java/net/minecraft/server/EntityIronGolem.java +++ b/src/main/java/net/minecraft/server/EntityIronGolem.java -@@ -8,6 +8,7 @@ public class EntityIronGolem extends EntityGolem { +@@ -8,11 +8,13 @@ public class EntityIronGolem extends EntityGolem { public EntityIronGolem(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -1700,6 +1250,12 @@ index 8e463111bb..fd6a926cae 100644 this.K = 1.0F; } + @Override + protected void initPathfinder() { ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new PathfinderGoalMeleeAttack(this, 1.0D, true)); + this.goalSelector.a(2, new PathfinderGoalMoveTowardsTarget(this, 0.9D, 32.0F)); + this.goalSelector.a(2, new PathfinderGoalStrollVillage(this, 0.6D)); diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java index 49cbd682fc..f5504b6953 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java @@ -1769,6 +1325,18 @@ index 49cbd682fc..f5504b6953 100644 public void o(float f) { this.bD = f; } +diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java +index a5dade7d05..398eb12f2b 100644 +--- a/src/main/java/net/minecraft/server/EntityLlama.java ++++ b/src/main/java/net/minecraft/server/EntityLlama.java +@@ -58,6 +58,7 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn + @Override + protected void initPathfinder() { + this.goalSelector.a(0, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new PathfinderGoalTame(this, 1.2D)); + this.goalSelector.a(2, new PathfinderGoalLlamaFollow(this, 2.0999999046325684D)); + this.goalSelector.a(3, new PathfinderGoalArrowAttack(this, 1.25D, 40, 20.0F)); diff --git a/src/main/java/net/minecraft/server/EntityMagmaCube.java b/src/main/java/net/minecraft/server/EntityMagmaCube.java index c7c466560e..3a79634e44 100644 --- a/src/main/java/net/minecraft/server/EntityMagmaCube.java @@ -1803,7 +1371,7 @@ index af3b826a4d..068e75ce64 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityOcelot.java b/src/main/java/net/minecraft/server/EntityOcelot.java -index edc5f696c0..152deaba29 100644 +index edc5f696c0..e7ee45917c 100644 --- a/src/main/java/net/minecraft/server/EntityOcelot.java +++ b/src/main/java/net/minecraft/server/EntityOcelot.java @@ -14,6 +14,7 @@ public class EntityOcelot extends EntityAnimal { @@ -1814,22 +1382,16 @@ index edc5f696c0..152deaba29 100644 this.dV(); } -@@ -263,11 +264,13 @@ public class EntityOcelot extends EntityAnimal { - - @Override - public boolean a() { -+ if (this.i.getRider() != null) return false; // Purpur - return !this.i.isTrusting() && super.a(); - } - - @Override - public boolean b() { -+ if (this.i.getRider() != null) return false; // Purpur - return !this.i.isTrusting() && super.b(); - } - } +@@ -48,6 +49,7 @@ public class EntityOcelot extends EntityAnimal { + protected void initPathfinder() { + this.bC = new EntityOcelot.b(this, 0.6D, EntityOcelot.bz, true); + this.goalSelector.a(1, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(1, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(3, this.bC); + this.goalSelector.a(7, new PathfinderGoalLeapAtTarget(this, 0.3F)); + this.goalSelector.a(8, new PathfinderGoalOcelotAttack(this)); diff --git a/src/main/java/net/minecraft/server/EntityPanda.java b/src/main/java/net/minecraft/server/EntityPanda.java -index 479ef6b920..2969b6e018 100644 +index 479ef6b920..697b1bccc0 100644 --- a/src/main/java/net/minecraft/server/EntityPanda.java +++ b/src/main/java/net/minecraft/server/EntityPanda.java @@ -37,6 +37,7 @@ public class EntityPanda extends EntityAnimal { @@ -1864,7 +1426,15 @@ index 479ef6b920..2969b6e018 100644 public void t(boolean flag) { this.datawatcher.set(EntityPanda.bC, flag ? 1 : 0); } -@@ -541,7 +545,7 @@ public class EntityPanda extends EntityAnimal { +@@ -199,6 +203,7 @@ public class EntityPanda extends EntityAnimal { + @Override + protected void initPathfinder() { + this.goalSelector.a(0, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(2, new EntityPanda.j(this, 2.0D)); + this.goalSelector.a(2, new EntityPanda.d(this, 1.0D)); + this.goalSelector.a(3, new EntityPanda.b(this, 1.2000000476837158D, true)); +@@ -541,7 +546,7 @@ public class EntityPanda extends EntityAnimal { if (itemstack.getItem() instanceof ItemMonsterEgg) { return super.a(entityhuman, enumhand); } else if (this.eo()) { @@ -1873,7 +1443,7 @@ index 479ef6b920..2969b6e018 100644 } else if (this.dY()) { this.s(false); return true; -@@ -558,7 +562,7 @@ public class EntityPanda extends EntityAnimal { +@@ -558,7 +563,7 @@ public class EntityPanda extends EntityAnimal { this.f(entityhuman); } else { if (this.world.isClientSide || this.dX() || this.isInWater()) { @@ -1882,7 +1452,7 @@ index 479ef6b920..2969b6e018 100644 } this.eB(); -@@ -575,10 +579,22 @@ public class EntityPanda extends EntityAnimal { +@@ -575,10 +580,22 @@ public class EntityPanda extends EntityAnimal { return true; } else { @@ -1906,109 +1476,7 @@ index 479ef6b920..2969b6e018 100644 @Nullable @Override protected SoundEffect getSoundAmbient() { -@@ -626,6 +642,7 @@ public class EntityPanda extends EntityAnimal { - - @Override - public boolean a() { -+ if (this.f.getRider() != null) return false; // Purpur - if (!this.f.isBurning()) { - return false; - } else { -@@ -644,6 +661,7 @@ public class EntityPanda extends EntityAnimal { - - @Override - public boolean b() { -+ if (this.f.getRider() != null) return false; // Purpur - if (this.f.dX()) { - this.f.getNavigation().o(); - return false; -@@ -664,6 +682,7 @@ public class EntityPanda extends EntityAnimal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - if (!this.a.bG && !this.a.bH) { - return super.b(); - } else { -@@ -692,11 +711,13 @@ public class EntityPanda extends EntityAnimal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.b < this.a.ticksLived && this.a.ej() && this.a.eq() && this.a.random.nextInt(400) == 1; - } - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return !this.a.isInWater() && (this.a.ej() || this.a.random.nextInt(600) != 1) ? this.a.random.nextInt(2000) != 1 : false; - } - -@@ -723,6 +744,7 @@ public class EntityPanda extends EntityAnimal { - - @Override - public boolean a() { -+ if (EntityPanda.this.getRider() != null) return false; // Purpur - if (this.b <= EntityPanda.this.ticksLived && !EntityPanda.this.isBaby() && !EntityPanda.this.isInWater() && EntityPanda.this.eq() && EntityPanda.this.dV() <= 0) { - List list = EntityPanda.this.world.a(EntityItem.class, EntityPanda.this.getBoundingBox().grow(6.0D, 6.0D, 6.0D), EntityPanda.PICKUP_PREDICATE); - -@@ -734,6 +756,7 @@ public class EntityPanda extends EntityAnimal { - - @Override - public boolean b() { -+ if (EntityPanda.this.getRider() != null) return false; // Purpur - return !EntityPanda.this.isInWater() && (EntityPanda.this.ej() || EntityPanda.this.random.nextInt(600) != 1) ? EntityPanda.this.random.nextInt(2000) != 1 : false; - } - -@@ -787,6 +810,7 @@ public class EntityPanda extends EntityAnimal { - - @Override - public boolean a() { -+ if (this.i.getRider() != null) return false; // Purpur - return this.i.ek() && this.i.eq() && super.a(); - } - } -@@ -804,6 +828,7 @@ public class EntityPanda extends EntityAnimal { - - @Override - public boolean a() { -+ if (this.e.getRider() != null) return false; // Purpur - if (super.a() && this.e.dV() == 0) { - if (!this.h()) { - if (this.f <= this.e.ticksLived) { -@@ -856,6 +881,7 @@ public class EntityPanda extends EntityAnimal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a.isBaby() && this.a.eq() ? (this.a.en() && this.a.random.nextInt(500) == 1 ? true : this.a.random.nextInt(6000) == 1) : false; - } - -@@ -881,6 +907,7 @@ public class EntityPanda extends EntityAnimal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if ((this.a.isBaby() || this.a.el()) && this.a.onGround) { - if (!this.a.eq()) { - return false; -@@ -933,6 +960,7 @@ public class EntityPanda extends EntityAnimal { - - @Override - public boolean a() { -+ if (this.f.getRider() != null) return false; // Purpur - return this.f.eq() && super.a(); - } - } -@@ -948,6 +976,7 @@ public class EntityPanda extends EntityAnimal { - - @Override - public boolean a() { -+ if (this.d.getRider() != null) return false; // Purpur - return this.d.eq() && super.a(); - } - } -@@ -957,7 +986,7 @@ public class EntityPanda extends EntityAnimal { +@@ -957,7 +974,7 @@ public class EntityPanda extends EntityAnimal { private e() {} } @@ -2017,7 +1485,7 @@ index 479ef6b920..2969b6e018 100644 private final EntityPanda i; -@@ -967,9 +996,9 @@ public class EntityPanda extends EntityAnimal { +@@ -967,9 +984,9 @@ public class EntityPanda extends EntityAnimal { } @Override @@ -2030,7 +1498,7 @@ index 479ef6b920..2969b6e018 100644 } } diff --git a/src/main/java/net/minecraft/server/EntityParrot.java b/src/main/java/net/minecraft/server/EntityParrot.java -index a7cdb5e7a2..f63abd6aaf 100644 +index a7cdb5e7a2..0a88350972 100644 --- a/src/main/java/net/minecraft/server/EntityParrot.java +++ b/src/main/java/net/minecraft/server/EntityParrot.java @@ -21,7 +21,7 @@ public class EntityParrot extends EntityPerchable implements EntityBird { @@ -2052,8 +1520,19 @@ index a7cdb5e7a2..f63abd6aaf 100644 } @Nullable +@@ -80,8 +81,9 @@ public class EntityParrot extends EntityPerchable implements EntityBird { + @Override + protected void initPathfinder() { + this.goalSit = new PathfinderGoalSit(this); +- this.goalSelector.a(0, new PathfinderGoalPanic(this, 1.25D)); + this.goalSelector.a(0, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur ++ this.goalSelector.a(1, new PathfinderGoalPanic(this, 1.25D)); // Purpur + this.goalSelector.a(1, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); + this.goalSelector.a(2, this.goalSit); + this.goalSelector.a(2, new PathfinderGoalFollowOwnerParrot(this, 1.0D, 5.0F, 1.0F)); diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java -index 9b62d2ce38..7496be10a2 100644 +index 2d62248fcc..cc175b3970 100644 --- a/src/main/java/net/minecraft/server/EntityPhantom.java +++ b/src/main/java/net/minecraft/server/EntityPhantom.java @@ -15,12 +15,14 @@ public class EntityPhantom extends EntityFlying implements IMonster { @@ -2071,7 +1550,15 @@ index 9b62d2ce38..7496be10a2 100644 } @Override -@@ -105,7 +107,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -31,6 +33,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { + @Override + protected void initPathfinder() { + // Purpur start ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new FindCrystalGoal(this)); + this.goalSelector.a(2, new OrbitCrystalGoal(this)); + this.goalSelector.a(3, new EntityPhantom.c()); // PickAttackGoal +@@ -107,7 +110,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { @Override public void movementTick() { @@ -2080,78 +1567,7 @@ index 9b62d2ce38..7496be10a2 100644 this.setOnFire(8); } -@@ -238,6 +240,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { - - @Override - public boolean a() { // shouldExecute -+ if (this.phantom.getRider() != null) return false; - double range = maxTargetRange(); - List crystals = world.getEntitiesByClass(EntityEnderCrystal.class, phantom.getBoundingBox().grow(range, range, range)); - if (crystals.isEmpty()) { -@@ -254,6 +257,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { - - @Override - public boolean b() { // shouldContinueExecuting -+ if (this.phantom.getRider() != null) return false; - if (crystal == null || !crystal.isAlive()) { - return false; - } -@@ -305,6 +309,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { - - @Override - public boolean a() { // shouldExecute -+ if (this.phantom.getRider() != null) return false; - return phantom.isCirclingCrystal(); - } - -@@ -367,6 +372,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { - - @Override - public boolean a() { -+ if (EntityPhantom.this.getRider() != null) return false; // Purpur - if (this.c > 0) { - --this.c; - return false; -@@ -396,6 +402,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { - - @Override - public boolean b() { -+ if (EntityPhantom.this.getRider() != null) return false; // Purpur - EntityLiving entityliving = EntityPhantom.this.getGoalTarget(); - - return entityliving != null ? EntityPhantom.this.a(entityliving, PathfinderTargetCondition.a) : false; -@@ -410,6 +417,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { - - @Override - public boolean a() { -+ if (EntityPhantom.this.getRider() != null) return false; // Purpur - EntityLiving entityliving = EntityPhantom.this.getGoalTarget(); - - return !isCirclingCrystal() && entityliving != null && EntityPhantom.this.a(EntityPhantom.this.getGoalTarget(), PathfinderTargetCondition.a); // Purpur -@@ -458,12 +466,14 @@ public class EntityPhantom extends EntityFlying implements IMonster { - - @Override - public boolean a() { -+ if (EntityPhantom.this.getRider() != null) return false; // Purpur - return !isCirclingCrystal() && EntityPhantom.this.getGoalTarget() != null && EntityPhantom.this.getAttackPhase() == EntityPhantom.AttackPhase.SWOOP; // Purpur - } - - @Override - public boolean b() { - // Purpur start -+ if (EntityPhantom.this.getRider() != null) return false; - if (isCirclingCrystal()) { - return false; - } -@@ -537,6 +547,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { - - @Override - public boolean a() { -+ if (EntityPhantom.this.getRider() != null) return false; // Purpur - return !isCirclingCrystal() && EntityPhantom.this.getGoalTarget() == null || EntityPhantom.this.getAttackPhase() == EntityPhantom.AttackPhase.CIRCLE; // Purpur - } - -@@ -604,14 +615,23 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -606,14 +609,23 @@ public class EntityPhantom extends EntityFlying implements IMonster { } } @@ -2177,7 +1593,7 @@ index 9b62d2ce38..7496be10a2 100644 } class d extends EntityAIBodyControl { -@@ -627,7 +647,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -629,7 +641,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { } } @@ -2186,7 +1602,7 @@ index 9b62d2ce38..7496be10a2 100644 private float j = 0.1F; -@@ -635,8 +655,19 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -637,8 +649,19 @@ public class EntityPhantom extends EntityFlying implements IMonster { super(entityinsentient); } @@ -2208,10 +1624,10 @@ index 9b62d2ce38..7496be10a2 100644 EntityPhantom.this.yaw += 180.0F; this.j = 0.1F; diff --git a/src/main/java/net/minecraft/server/EntityPig.java b/src/main/java/net/minecraft/server/EntityPig.java -index 1943a23de4..1b1545589a 100644 +index 1943a23de4..30feec4701 100644 --- a/src/main/java/net/minecraft/server/EntityPig.java +++ b/src/main/java/net/minecraft/server/EntityPig.java -@@ -18,6 +18,7 @@ public class EntityPig extends EntityAnimal { +@@ -18,11 +18,13 @@ public class EntityPig extends EntityAnimal { public EntityPig(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -2219,7 +1635,13 @@ index 1943a23de4..1b1545589a 100644 } @Override -@@ -111,27 +112,22 @@ public class EntityPig extends EntityAnimal { + protected void initPathfinder() { + this.goalSelector.a(0, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new PathfinderGoalPanic(this, 1.25D)); + this.goalSelector.a(3, new PathfinderGoalBreed(this, 1.0D)); + this.goalSelector.a(4, new PathfinderGoalTempt(this, 1.2D, RecipeItemStack.a(Items.CARROT_ON_A_STICK), false)); +@@ -111,27 +113,22 @@ public class EntityPig extends EntityAnimal { @Override public boolean a(EntityHuman entityhuman, EnumHand enumhand) { @@ -2262,7 +1684,7 @@ index 1943a23de4..1b1545589a 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java -index 4f260f8143..e76842a57b 100644 +index 4f260f8143..5760a18361 100644 --- a/src/main/java/net/minecraft/server/EntityPigZombie.java +++ b/src/main/java/net/minecraft/server/EntityPigZombie.java @@ -14,6 +14,7 @@ public class EntityPigZombie extends EntityZombie { @@ -2282,19 +1704,11 @@ index 4f260f8143..e76842a57b 100644 } @Override -@@ -214,6 +215,7 @@ public class EntityPigZombie extends EntityZombie { - - @Override - public boolean a() { -+ if (this.e.getRider() != null) return false; // Purpur - return ((EntityPigZombie) this.e).ef() && super.a(); - } - } diff --git a/src/main/java/net/minecraft/server/EntityPillager.java b/src/main/java/net/minecraft/server/EntityPillager.java -index 79a330650b..0e6127f33a 100644 +index 79a330650b..33b0f25f6d 100644 --- a/src/main/java/net/minecraft/server/EntityPillager.java +++ b/src/main/java/net/minecraft/server/EntityPillager.java -@@ -11,6 +11,7 @@ public class EntityPillager extends EntityIllagerAbstract implements ICrossbow, +@@ -11,12 +11,14 @@ public class EntityPillager extends EntityIllagerAbstract implements ICrossbow, public EntityPillager(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -2302,8 +1716,15 @@ index 79a330650b..0e6127f33a 100644 } @Override + protected void initPathfinder() { + super.initPathfinder(); + this.goalSelector.a(0, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(2, new EntityRaider.a(this, 10.0F)); + this.goalSelector.a(3, new PathfinderGoalCrossbowAttack<>(this, 1.0D, 8.0F)); + this.goalSelector.a(8, new PathfinderGoalRandomStroll(this, 0.6D)); diff --git a/src/main/java/net/minecraft/server/EntityPolarBear.java b/src/main/java/net/minecraft/server/EntityPolarBear.java -index b1ee334cf1..0f42d3b0d1 100644 +index b1ee334cf1..727f30edea 100644 --- a/src/main/java/net/minecraft/server/EntityPolarBear.java +++ b/src/main/java/net/minecraft/server/EntityPolarBear.java @@ -15,6 +15,7 @@ public class EntityPolarBear extends EntityAnimal { @@ -2314,7 +1735,15 @@ index b1ee334cf1..0f42d3b0d1 100644 } @Override -@@ -112,6 +113,11 @@ public class EntityPolarBear extends EntityAnimal { +@@ -31,6 +32,7 @@ public class EntityPolarBear extends EntityAnimal { + protected void initPathfinder() { + super.initPathfinder(); + this.goalSelector.a(0, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new EntityPolarBear.d()); + this.goalSelector.a(1, new EntityPolarBear.e()); + this.goalSelector.a(4, new PathfinderGoalFollowParent(this, 1.25D)); +@@ -112,6 +114,11 @@ public class EntityPolarBear extends EntityAnimal { --this.bC; } @@ -2326,7 +1755,7 @@ index b1ee334cf1..0f42d3b0d1 100644 } @Override -@@ -137,11 +143,14 @@ public class EntityPolarBear extends EntityAnimal { +@@ -137,11 +144,14 @@ public class EntityPolarBear extends EntityAnimal { return flag; } @@ -2341,7 +1770,7 @@ index b1ee334cf1..0f42d3b0d1 100644 this.datawatcher.set(EntityPolarBear.bz, flag); } -@@ -161,6 +170,23 @@ public class EntityPolarBear extends EntityAnimal { +@@ -161,6 +171,23 @@ public class EntityPolarBear extends EntityAnimal { return (GroupDataEntity) groupdataentity; } @@ -2365,24 +1794,8 @@ index b1ee334cf1..0f42d3b0d1 100644 class e extends PathfinderGoalPanic { public e() { -@@ -169,6 +195,7 @@ public class EntityPolarBear extends EntityAnimal { - - @Override - public boolean a() { -+ if (EntityPolarBear.this.getRider() != null) return false; // Purpur - return !EntityPolarBear.this.isBaby() && !EntityPolarBear.this.isBurning() ? false : super.a(); - } - } -@@ -224,6 +251,7 @@ public class EntityPolarBear extends EntityAnimal { - - @Override - public boolean a() { -+ if (EntityPolarBear.this.getRider() != null) return false; // Purpur - if (EntityPolarBear.this.isBaby()) { - return false; - } else { diff --git a/src/main/java/net/minecraft/server/EntityPufferFish.java b/src/main/java/net/minecraft/server/EntityPufferFish.java -index f5d384adda..175e43f7fe 100644 +index f5d384adda..ad1decd472 100644 --- a/src/main/java/net/minecraft/server/EntityPufferFish.java +++ b/src/main/java/net/minecraft/server/EntityPufferFish.java @@ -15,6 +15,7 @@ public class EntityPufferFish extends EntityFish { @@ -2393,24 +1806,17 @@ index f5d384adda..175e43f7fe 100644 } @Override -@@ -177,6 +178,7 @@ public class EntityPufferFish extends EntityFish { +@@ -60,7 +61,7 @@ public class EntityPufferFish extends EntityFish { + @Override + protected void initPathfinder() { + super.initPathfinder(); +- this.goalSelector.a(1, new EntityPufferFish.a(this)); ++ this.goalSelector.a(2, new EntityPufferFish.a(this)); // Purpur + } - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - List list = this.a.world.a(EntityLiving.class, this.a.getBoundingBox().g(2.0D), EntityPufferFish.bz); - - return !list.isEmpty(); -@@ -195,6 +197,7 @@ public class EntityPufferFish extends EntityFish { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - List list = this.a.world.a(EntityLiving.class, this.a.getBoundingBox().g(2.0D), EntityPufferFish.bz); - - return !list.isEmpty(); + @Override diff --git a/src/main/java/net/minecraft/server/EntityRabbit.java b/src/main/java/net/minecraft/server/EntityRabbit.java -index 10fca49776..6f6dd6d48f 100644 +index 10fca49776..d48610df3a 100644 --- a/src/main/java/net/minecraft/server/EntityRabbit.java +++ b/src/main/java/net/minecraft/server/EntityRabbit.java @@ -15,6 +15,7 @@ public class EntityRabbit extends EntityAnimal { @@ -2421,7 +1827,17 @@ index 10fca49776..6f6dd6d48f 100644 this.bt = new EntityRabbit.ControllerJumpRabbit(this); this.moveController = new EntityRabbit.ControllerMoveRabbit(this); this.initializePathFinderGoals(); // CraftBukkit - moved code -@@ -60,7 +61,7 @@ public class EntityRabbit extends EntityAnimal { +@@ -28,7 +29,8 @@ public class EntityRabbit extends EntityAnimal { + + @Override + protected void initPathfinder() { +- this.goalSelector.a(1, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new PathfinderGoalFloat(this)); // Purpur ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new EntityRabbit.PathfinderGoalRabbitPanic(this, 2.2D)); + this.goalSelector.a(2, new PathfinderGoalBreed(this, 0.8D)); + this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.0D, RecipeItemStack.a(Items.CARROT, Items.GOLDEN_CARROT, Blocks.DANDELION), false)); +@@ -60,7 +62,7 @@ public class EntityRabbit extends EntityAnimal { } @Override @@ -2430,52 +1846,8 @@ index 10fca49776..6f6dd6d48f 100644 super.jump(); double d0 = this.moveController.c(); -diff --git a/src/main/java/net/minecraft/server/EntityRaider.java b/src/main/java/net/minecraft/server/EntityRaider.java -index 6ffb35729d..4bf753d7db 100644 ---- a/src/main/java/net/minecraft/server/EntityRaider.java -+++ b/src/main/java/net/minecraft/server/EntityRaider.java -@@ -280,6 +280,7 @@ public abstract class EntityRaider extends EntityMonsterPatrolling { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - this.j(); - return this.g() && this.h() && this.a.getGoalTarget() == null; - } -@@ -305,6 +306,7 @@ public abstract class EntityRaider extends EntityMonsterPatrolling { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a.getNavigation().n() ? false : this.a.getGoalTarget() == null && !this.c.a((IPosition) this.a.getPositionVector(), (double) (this.a.getWidth() + (float) this.e)) && !this.f; - } - -@@ -384,6 +386,7 @@ public abstract class EntityRaider extends EntityMonsterPatrolling { - - @Override - public boolean a() { -+ if (this.c.getRider() != null) return false; // Purpur - EntityLiving entityliving = this.c.getLastDamager(); - - return this.c.ej() == null && this.c.isPatrolling() && this.c.getGoalTarget() != null && !this.c.dR() && (entityliving == null || entityliving.getEntityType() != EntityTypes.PLAYER); -@@ -455,6 +458,7 @@ public abstract class EntityRaider extends EntityMonsterPatrolling { - - @Override - public boolean a() { -+ if (this.b.getRider() != null) return false; // Purpur - Raid raid = this.b.ej(); - - return this.b.isAlive() && this.b.getGoalTarget() == null && raid != null && raid.f(); -@@ -497,6 +501,7 @@ public abstract class EntityRaider extends EntityMonsterPatrolling { - - @Override - public boolean a() { -+ if (this.b.getRider() != null) return false; // Purpur - Raid raid = this.b.ej(); - - if (this.b.ek() && !this.b.ej().a() && this.b.dX() && !ItemStack.matches(this.b.getEquipment(EnumItemSlot.HEAD), Raid.s())) { diff --git a/src/main/java/net/minecraft/server/EntityRavager.java b/src/main/java/net/minecraft/server/EntityRavager.java -index 971ea097be..f70796f03e 100644 +index 971ea097be..0df665f9bd 100644 --- a/src/main/java/net/minecraft/server/EntityRavager.java +++ b/src/main/java/net/minecraft/server/EntityRavager.java @@ -16,6 +16,7 @@ public class EntityRavager extends EntityRaider { @@ -2486,6 +1858,14 @@ index 971ea097be..f70796f03e 100644 this.K = 1.0F; this.f = 20; } +@@ -24,6 +25,7 @@ public class EntityRavager extends EntityRaider { + protected void initPathfinder() { + super.initPathfinder(); + this.goalSelector.a(0, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(4, new EntityRavager.a()); + this.goalSelector.a(5, new PathfinderGoalRandomStrollLand(this, 0.4D)); + this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F)); diff --git a/src/main/java/net/minecraft/server/EntitySalmon.java b/src/main/java/net/minecraft/server/EntitySalmon.java index b600f30eb1..8c60e26c70 100644 --- a/src/main/java/net/minecraft/server/EntitySalmon.java @@ -2499,7 +1879,7 @@ index b600f30eb1..8c60e26c70 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntitySheep.java b/src/main/java/net/minecraft/server/EntitySheep.java -index ec13d4f37d..85eceb4775 100644 +index ec13d4f37d..30fa8e5cab 100644 --- a/src/main/java/net/minecraft/server/EntitySheep.java +++ b/src/main/java/net/minecraft/server/EntitySheep.java @@ -18,7 +18,7 @@ import org.bukkit.inventory.InventoryView; @@ -2522,7 +1902,7 @@ index ec13d4f37d..85eceb4775 100644 private int bC; private PathfinderGoalEatTile bD; -@@ -55,6 +53,7 @@ public class EntitySheep extends EntityAnimal { +@@ -55,12 +53,14 @@ public class EntitySheep extends EntityAnimal { public EntitySheep(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -2530,8 +1910,15 @@ index ec13d4f37d..85eceb4775 100644 } @Override + protected void initPathfinder() { + this.bD = new PathfinderGoalEatTile(this); + this.goalSelector.a(0, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new PathfinderGoalPanic(this, 1.25D)); + this.goalSelector.a(2, new PathfinderGoalBreed(this, 1.0D)); + this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.1D, RecipeItemStack.a(Items.WHEAT), false)); diff --git a/src/main/java/net/minecraft/server/EntityShulker.java b/src/main/java/net/minecraft/server/EntityShulker.java -index aec2e24565..04972a5263 100644 +index aec2e24565..6152856239 100644 --- a/src/main/java/net/minecraft/server/EntityShulker.java +++ b/src/main/java/net/minecraft/server/EntityShulker.java @@ -26,6 +26,7 @@ public class EntityShulker extends EntityGolem implements IMonster { @@ -2542,49 +1929,19 @@ index aec2e24565..04972a5263 100644 this.aL = 180.0F; this.aK = 180.0F; this.bE = null; -@@ -475,6 +476,7 @@ public class EntityShulker extends EntityGolem implements IMonster { - - @Override - public boolean a() { -+ if (this.e.getRider() != null) return false; // Purpur - return this.e.getScoreboardTeam() == null ? false : super.a(); - } - -@@ -494,6 +496,7 @@ public class EntityShulker extends EntityGolem implements IMonster { - - @Override - public boolean a() { -+ if (this.e.getRider() != null) return false; // Purpur - return EntityShulker.this.world.getDifficulty() == EnumDifficulty.PEACEFUL ? false : super.a(); - } - -@@ -515,6 +518,7 @@ public class EntityShulker extends EntityGolem implements IMonster { - - @Override - public boolean a() { -+ if (EntityShulker.this.getRider() != null) return false; // Purpur - EntityLiving entityliving = EntityShulker.this.getGoalTarget(); - - return entityliving != null && entityliving.isAlive() ? EntityShulker.this.world.getDifficulty() != EnumDifficulty.PEACEFUL : false; -@@ -563,11 +567,13 @@ public class EntityShulker extends EntityGolem implements IMonster { - - @Override - public boolean a() { -+ if (EntityShulker.this.getRider() != null) return false; // Purpur - return EntityShulker.this.getGoalTarget() == null && EntityShulker.this.random.nextInt(40) == 0; - } - - @Override - public boolean b() { -+ if (EntityShulker.this.getRider() != null) return false; // Purpur - return EntityShulker.this.getGoalTarget() == null && this.b > 0; - } +@@ -46,6 +47,7 @@ public class EntityShulker extends EntityGolem implements IMonster { + @Override + protected void initPathfinder() { ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); + this.goalSelector.a(4, new EntityShulker.a()); + this.goalSelector.a(7, new EntityShulker.e()); diff --git a/src/main/java/net/minecraft/server/EntitySilverfish.java b/src/main/java/net/minecraft/server/EntitySilverfish.java -index eb3c56fefd..fc8ea59640 100644 +index eb3c56fefd..d689715b3e 100644 --- a/src/main/java/net/minecraft/server/EntitySilverfish.java +++ b/src/main/java/net/minecraft/server/EntitySilverfish.java -@@ -9,6 +9,7 @@ public class EntitySilverfish extends EntityMonster { +@@ -9,12 +9,14 @@ public class EntitySilverfish extends EntityMonster { public EntitySilverfish(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -2592,30 +1949,13 @@ index eb3c56fefd..fc8ea59640 100644 } @Override -@@ -122,6 +123,7 @@ public class EntitySilverfish extends EntityMonster { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.a.getGoalTarget() != null) { - return false; - } else if (!this.a.getNavigation().n()) { -@@ -147,6 +149,7 @@ public class EntitySilverfish extends EntityMonster { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.i ? false : super.b(); - } - -@@ -192,6 +195,7 @@ public class EntitySilverfish extends EntityMonster { - - @Override - public boolean a() { -+ if (this.silverfish.getRider() != null) return false; // Purpur - return this.b > 0; - } - + protected void initPathfinder() { + this.b = new EntitySilverfish.PathfinderGoalSilverfishWakeOthers(this); + this.goalSelector.a(1, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(1, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(3, this.b); + this.goalSelector.a(4, new PathfinderGoalMeleeAttack(this, 1.0D, false)); + this.goalSelector.a(5, new EntitySilverfish.PathfinderGoalSilverfishHideInBlock(this)); diff --git a/src/main/java/net/minecraft/server/EntitySkeleton.java b/src/main/java/net/minecraft/server/EntitySkeleton.java index 0e78d5c62c..908e51b636 100644 --- a/src/main/java/net/minecraft/server/EntitySkeleton.java @@ -2628,6 +1968,18 @@ index 0e78d5c62c..908e51b636 100644 } @Override +diff --git a/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java b/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java +index 8f1b5a5502..18a34de63d 100644 +--- a/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java ++++ b/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java +@@ -28,6 +28,7 @@ public abstract class EntitySkeletonAbstract extends EntityMonster implements IR + + @Override + protected void initPathfinder() { ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(2, new PathfinderGoalRestrictSun(this)); + this.goalSelector.a(3, new PathfinderGoalFleeSun(this, 1.0D)); + this.goalSelector.a(3, new PathfinderGoalAvoidTarget<>(this, EntityWolf.class, 6.0F, 1.0D, 1.2D)); diff --git a/src/main/java/net/minecraft/server/EntitySkeletonStray.java b/src/main/java/net/minecraft/server/EntitySkeletonStray.java index 2eb53864f2..eda880703e 100644 --- a/src/main/java/net/minecraft/server/EntitySkeletonStray.java @@ -2653,10 +2005,10 @@ index 872f79cc67..ed03d31221 100644 } diff --git a/src/main/java/net/minecraft/server/EntitySlime.java b/src/main/java/net/minecraft/server/EntitySlime.java -index 253ff9594c..cdcf16c536 100644 +index 253ff9594c..af3876a6c8 100644 --- a/src/main/java/net/minecraft/server/EntitySlime.java +++ b/src/main/java/net/minecraft/server/EntitySlime.java -@@ -29,6 +29,7 @@ public class EntitySlime extends EntityInsentient implements IMonster { +@@ -29,11 +29,13 @@ public class EntitySlime extends EntityInsentient implements IMonster { public EntitySlime(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -2664,7 +2016,13 @@ index 253ff9594c..cdcf16c536 100644 this.moveController = new EntitySlime.ControllerMoveSlime(this); } -@@ -314,7 +315,7 @@ public class EntitySlime extends EntityInsentient implements IMonster { + @Override + protected void initPathfinder() { ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new EntitySlime.PathfinderGoalSlimeRandomJump(this)); + this.goalSelector.a(2, new EntitySlime.PathfinderGoalSlimeNearestPlayer(this)); + this.goalSelector.a(3, new EntitySlime.PathfinderGoalSlimeRandomDirection(this)); +@@ -314,7 +316,7 @@ public class EntitySlime extends EntityInsentient implements IMonster { } @Override @@ -2674,10 +2032,10 @@ index 253ff9594c..cdcf16c536 100644 this.setMot(vec3d.x, 0.41999998688697815D, vec3d.z); diff --git a/src/main/java/net/minecraft/server/EntitySnowman.java b/src/main/java/net/minecraft/server/EntitySnowman.java -index 1fed1d6e75..389372ba41 100644 +index 1fed1d6e75..0f612b8f44 100644 --- a/src/main/java/net/minecraft/server/EntitySnowman.java +++ b/src/main/java/net/minecraft/server/EntitySnowman.java -@@ -13,6 +13,7 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity { +@@ -13,10 +13,12 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity { public EntitySnowman(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -2685,7 +2043,12 @@ index 1fed1d6e75..389372ba41 100644 } @Override -@@ -74,6 +75,7 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity { + protected void initPathfinder() { ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new PathfinderGoalArrowAttack(this, 1.25D, 20, 10.0F)); + this.goalSelector.a(2, new PathfinderGoalRandomStrollLand(this, 1.0D, 1.0000001E-5F)); + this.goalSelector.a(3, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F)); +@@ -74,6 +76,7 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity { return; } @@ -2694,10 +2057,10 @@ index 1fed1d6e75..389372ba41 100644 for (int l = 0; l < 4; ++l) { diff --git a/src/main/java/net/minecraft/server/EntitySpider.java b/src/main/java/net/minecraft/server/EntitySpider.java -index 3929c86f8b..a3b24cdc63 100644 +index 3929c86f8b..9c210b8b90 100644 --- a/src/main/java/net/minecraft/server/EntitySpider.java +++ b/src/main/java/net/minecraft/server/EntitySpider.java -@@ -9,6 +9,7 @@ public class EntitySpider extends EntityMonster { +@@ -9,11 +9,13 @@ public class EntitySpider extends EntityMonster { public EntitySpider(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -2705,33 +2068,17 @@ index 3929c86f8b..a3b24cdc63 100644 } @Override -@@ -160,6 +161,7 @@ public class EntitySpider extends EntityMonster { - - @Override - public boolean a() { -+ if (this.e.getRider() != null) return false; // Purpur - float f = this.e.aF(); - - return f >= 0.5F ? false : super.a(); -@@ -174,11 +176,13 @@ public class EntitySpider extends EntityMonster { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return super.a() && !this.a.isVehicle(); - } - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - float f = this.a.aF(); - - if (f >= 0.5F && this.a.getRandom().nextInt(100) == 0) { + protected void initPathfinder() { + this.goalSelector.a(1, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(1, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(3, new PathfinderGoalLeapAtTarget(this, 0.4F)); + this.goalSelector.a(4, new EntitySpider.PathfinderGoalSpiderMeleeAttack(this)); + this.goalSelector.a(5, new PathfinderGoalRandomStrollLand(this, 0.8D)); diff --git a/src/main/java/net/minecraft/server/EntitySquid.java b/src/main/java/net/minecraft/server/EntitySquid.java -index a4d2ff64d8..4df7873a51 100644 +index a4d2ff64d8..d4e8a0989b 100644 --- a/src/main/java/net/minecraft/server/EntitySquid.java +++ b/src/main/java/net/minecraft/server/EntitySquid.java -@@ -21,6 +21,7 @@ public class EntitySquid extends EntityWaterAnimal { +@@ -21,14 +21,16 @@ public class EntitySquid extends EntityWaterAnimal { public EntitySquid(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -2739,7 +2086,18 @@ index a4d2ff64d8..4df7873a51 100644 //this.random.setSeed((long) this.getId()); // Paper this.bF = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; } -@@ -175,6 +176,7 @@ public class EntitySquid extends EntityWaterAnimal { + + @Override + protected void initPathfinder() { +- this.goalSelector.a(0, new EntitySquid.PathfinderGoalSquid(this)); +- this.goalSelector.a(1, new EntitySquid.a()); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur ++ this.goalSelector.a(1, new EntitySquid.PathfinderGoalSquid(this)); // Purpur ++ this.goalSelector.a(2, new EntitySquid.a()); // Purpur + } + + @Override +@@ -175,6 +177,7 @@ public class EntitySquid extends EntityWaterAnimal { return blockposition.getY() > generatoraccess.getMinecraftWorld().spigotConfig.squidSpawnRangeMin && blockposition.getY() < maxHeight; // Spigot // Paper } @@ -2747,14 +2105,6 @@ index a4d2ff64d8..4df7873a51 100644 public void a(float f, float f1, float f2) { this.bH = f; this.bI = f1; -@@ -193,6 +195,7 @@ public class EntitySquid extends EntityWaterAnimal { - - @Override - public boolean a() { -+ if (EntitySquid.this.getRider() != null) return false; // Purpur - EntityLiving entityliving = EntitySquid.this.getLastDamager(); - - return EntitySquid.this.isInWater() && entityliving != null ? EntitySquid.this.h((Entity) entityliving) < 100.0D : false; @@ -259,6 +262,39 @@ public class EntitySquid extends EntityWaterAnimal { @Override @@ -2843,7 +2193,7 @@ index 2e537c2032..03b49a7c76 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityTurtle.java b/src/main/java/net/minecraft/server/EntityTurtle.java -index 0bd80e5623..e3309fc2bf 100644 +index 0bd80e5623..b67b36de64 100644 --- a/src/main/java/net/minecraft/server/EntityTurtle.java +++ b/src/main/java/net/minecraft/server/EntityTurtle.java @@ -22,6 +22,7 @@ public class EntityTurtle extends EntityAnimal { @@ -2854,98 +2204,26 @@ index 0bd80e5623..e3309fc2bf 100644 this.moveController = new EntityTurtle.e(this); this.K = 1.0F; } -@@ -391,11 +392,13 @@ public class EntityTurtle extends EntityAnimal { +@@ -140,12 +141,13 @@ public class EntityTurtle extends EntityAnimal { - @Override - public boolean b() { -+ if (this.g.getRider() != null) return false; // Purpur - return !this.g.isInWater() && this.d <= 1200 && this.a(this.g.world, this.e); - } - - @Override - public boolean a() { -+ if (this.g.getRider() != null) return false; // Purpur - return this.g.isBaby() && !this.g.isInWater() ? super.a() : (!this.g.dZ() && !this.g.isInWater() && !this.g.dV() ? super.a() : false); - } - -@@ -423,6 +426,7 @@ public class EntityTurtle extends EntityAnimal { - - @Override - public boolean a() { -+ if (this.h.getRider() != null) return false; // Purpur - return !this.a.isInWater() && !this.h.dZ() && !this.h.dV() ? super.a() : false; - } - } -@@ -438,11 +442,13 @@ public class EntityTurtle extends EntityAnimal { - - @Override - public boolean a() { -+ if (this.g.getRider() != null) return false; // Purpur - return this.g.dV() && this.g.dX().a((IPosition) this.g.getPositionVector(), 9.0D) ? super.a() : false; - } - - @Override - public boolean b() { -+ if (this.g.getRider() != null) return false; // Purpur - return super.b() && this.g.dV() && this.g.dX().a((IPosition) this.g.getPositionVector(), 9.0D); - } - -@@ -501,6 +507,7 @@ public class EntityTurtle extends EntityAnimal { - - @Override - public boolean a() { -+ if (this.d.getRider() != null) return false; // Purpur - return super.a() && !this.d.dV(); - } - -@@ -547,6 +554,7 @@ public class EntityTurtle extends EntityAnimal { - - @Override - public boolean a() { -+ if (this.b.getRider() != null) return false; // Purpur - if (this.e > 0) { - --this.e; - return false; -@@ -598,6 +606,7 @@ public class EntityTurtle extends EntityAnimal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a.isBaby() ? false : (this.a.dW() ? true : (this.a.getRandom().nextInt(700) != 0 ? false : !this.a.dY().a((IPosition) this.a.getPositionVector(), 64.0D))) && new com.destroystokyo.paper.event.entity.TurtleGoHomeEvent((org.bukkit.entity.Turtle) this.a.getBukkitEntity()).callEvent(); // Paper - } - -@@ -615,6 +624,7 @@ public class EntityTurtle extends EntityAnimal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return !this.a.dX().a((IPosition) this.a.getPositionVector(), 7.0D) && !this.c && this.d <= 600; - } - -@@ -662,6 +672,7 @@ public class EntityTurtle extends EntityAnimal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return !this.a.dZ() && !this.a.dV() && this.a.isInWater(); - } - -@@ -717,6 +728,7 @@ public class EntityTurtle extends EntityAnimal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return !this.a.getNavigation().n() && !this.c && !this.a.dZ() && !this.a.isInLove() && !this.a.dV(); - } - -@@ -735,6 +747,7 @@ public class EntityTurtle extends EntityAnimal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.a.getLastDamager() == null && !this.a.isBurning()) { - return false; - } else { + @Override + protected void initPathfinder() { +- this.goalSelector.a(0, new EntityTurtle.f(this, 1.2D)); +- this.goalSelector.a(1, new EntityTurtle.a(this, 1.0D)); +- this.goalSelector.a(1, new EntityTurtle.d(this, 1.0D)); +- this.goalSelector.a(2, new EntityTurtle.i(this, 1.1D, Blocks.SEAGRASS.getItem())); +- this.goalSelector.a(3, new EntityTurtle.c(this, 1.0D)); +- this.goalSelector.a(4, new EntityTurtle.b(this, 1.0D)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur ++ this.goalSelector.a(1, new EntityTurtle.f(this, 1.2D)); // Purpur ++ this.goalSelector.a(2, new EntityTurtle.a(this, 1.0D)); // Purpur ++ this.goalSelector.a(2, new EntityTurtle.d(this, 1.0D)); // Purpur ++ this.goalSelector.a(3, new EntityTurtle.i(this, 1.1D, Blocks.SEAGRASS.getItem())); // Purpur ++ this.goalSelector.a(4, new EntityTurtle.c(this, 1.0D)); // Purpur ++ this.goalSelector.a(5, new EntityTurtle.b(this, 1.0D)); // Purpur + this.goalSelector.a(7, new EntityTurtle.j(this, 1.0D)); + this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); + this.goalSelector.a(9, new EntityTurtle.h(this, 1.0D, 100)); diff --git a/src/main/java/net/minecraft/server/EntityTypes.java b/src/main/java/net/minecraft/server/EntityTypes.java index e4fdf01dc7..84aa1db728 100644 --- a/src/main/java/net/minecraft/server/EntityTypes.java @@ -2962,7 +2240,7 @@ index e4fdf01dc7..84aa1db728 100644 return getNameComponent().getString(); } diff --git a/src/main/java/net/minecraft/server/EntityVex.java b/src/main/java/net/minecraft/server/EntityVex.java -index 51c05376da..79a9b42825 100644 +index 51c05376da..f76a61ac6d 100644 --- a/src/main/java/net/minecraft/server/EntityVex.java +++ b/src/main/java/net/minecraft/server/EntityVex.java @@ -15,6 +15,7 @@ public class EntityVex extends EntityMonster { @@ -2973,37 +2251,15 @@ index 51c05376da..79a9b42825 100644 this.moveController = new EntityVex.c(this); this.f = 3; } -@@ -187,6 +188,7 @@ public class EntityVex extends EntityMonster { - - @Override - public boolean a() { -+ if (EntityVex.this.getRider() != null) return false; // Purpur - return EntityVex.this.c != null && EntityVex.this.c.getGoalTarget() != null && this.a(EntityVex.this.c.getGoalTarget(), this.b); - } - -@@ -205,6 +207,7 @@ public class EntityVex extends EntityMonster { - - @Override - public boolean a() { -+ if (EntityVex.this.getRider() != null) return false; // Purpur - return !EntityVex.this.getControllerMove().b() && EntityVex.this.random.nextInt(7) == 0; - } - -@@ -244,11 +247,13 @@ public class EntityVex extends EntityMonster { - - @Override - public boolean a() { -+ if (EntityVex.this.getRider() != null) return false; // Purpur - return EntityVex.this.getGoalTarget() != null && !EntityVex.this.getControllerMove().b() && EntityVex.this.random.nextInt(7) == 0 ? EntityVex.this.h((Entity) EntityVex.this.getGoalTarget()) > 4.0D : false; - } - - @Override - public boolean b() { -+ if (EntityVex.this.getRider() != null) return false; // Purpur - return EntityVex.this.getControllerMove().b() && EntityVex.this.isCharging() && EntityVex.this.getGoalTarget() != null && EntityVex.this.getGoalTarget().isAlive(); - } - -@@ -287,14 +292,22 @@ public class EntityVex extends EntityMonster { +@@ -42,6 +43,7 @@ public class EntityVex extends EntityMonster { + protected void initPathfinder() { + super.initPathfinder(); + this.goalSelector.a(0, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(4, new EntityVex.a()); + this.goalSelector.a(8, new EntityVex.d()); + this.goalSelector.a(9, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 3.0F, 1.0F)); +@@ -287,14 +289,22 @@ public class EntityVex extends EntityMonster { } } @@ -3029,10 +2285,10 @@ index 51c05376da..79a9b42825 100644 Vec3D vec3d = new Vec3D(this.b - EntityVex.this.locX, this.c - EntityVex.this.locY, this.d - EntityVex.this.locZ); double d0 = vec3d.f(); diff --git a/src/main/java/net/minecraft/server/EntityVindicator.java b/src/main/java/net/minecraft/server/EntityVindicator.java -index ffbd6e9269..18a69b1df2 100644 +index ffbd6e9269..a2eef22ccd 100644 --- a/src/main/java/net/minecraft/server/EntityVindicator.java +++ b/src/main/java/net/minecraft/server/EntityVindicator.java -@@ -15,6 +15,7 @@ public class EntityVindicator extends EntityIllagerAbstract { +@@ -15,12 +15,14 @@ public class EntityVindicator extends EntityIllagerAbstract { public EntityVindicator(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -3040,32 +2296,15 @@ index ffbd6e9269..18a69b1df2 100644 } @Override -@@ -158,6 +159,7 @@ public class EntityVindicator extends EntityIllagerAbstract { - - @Override - public boolean a() { -+ if (this.e.getRider() != null) return false; // Purpur - return ((EntityVindicator) this.e).bz && super.a(); - } - -@@ -177,6 +179,7 @@ public class EntityVindicator extends EntityIllagerAbstract { - - @Override - public boolean b() { -+ if (this.entity.getRider() != null) return false; // Purpur - EntityVindicator entityvindicator = (EntityVindicator) this.entity; - - return entityvindicator.ek() && super.b(); -@@ -184,6 +187,7 @@ public class EntityVindicator extends EntityIllagerAbstract { - - @Override - public boolean a() { -+ if (this.entity.getRider() != null) return false; // Purpur - EntityVindicator entityvindicator = (EntityVindicator) this.entity; - - return entityvindicator.ek() && entityvindicator.random.nextInt(10) == 0 && super.a(); + protected void initPathfinder() { + super.initPathfinder(); + this.goalSelector.a(0, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new EntityVindicator.a(this)); + this.goalSelector.a(2, new EntityIllagerAbstract.b(this)); + this.goalSelector.a(3, new EntityRaider.a(this, 10.0F)); diff --git a/src/main/java/net/minecraft/server/EntityWitch.java b/src/main/java/net/minecraft/server/EntityWitch.java -index 0b849f37c5..6ccadda797 100644 +index 0b849f37c5..bee22c4df4 100644 --- a/src/main/java/net/minecraft/server/EntityWitch.java +++ b/src/main/java/net/minecraft/server/EntityWitch.java @@ -22,6 +22,7 @@ public class EntityWitch extends EntityRaider implements IRangedEntity { @@ -3076,8 +2315,18 @@ index 0b849f37c5..6ccadda797 100644 } @Override +@@ -31,7 +32,8 @@ public class EntityWitch extends EntityRaider implements IRangedEntity { + return entityliving != null && this.ek() && entityliving.getEntityType() != EntityTypes.WITCH; + }); + this.bD = new PathfinderGoalNearestAttackableTargetWitch<>(this, EntityHuman.class, 10, true, false, (Predicate) null); +- this.goalSelector.a(1, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new PathfinderGoalFloat(this)); // Purpur ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(2, new PathfinderGoalArrowAttack(this, 1.0D, 60, 10.0F)); + this.goalSelector.a(2, new PathfinderGoalRandomStrollLand(this, 1.0D)); + this.goalSelector.a(3, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); diff --git a/src/main/java/net/minecraft/server/EntityWither.java b/src/main/java/net/minecraft/server/EntityWither.java -index 8b3052b113..922e60ff0d 100644 +index 8b3052b113..575f046512 100644 --- a/src/main/java/net/minecraft/server/EntityWither.java +++ b/src/main/java/net/minecraft/server/EntityWither.java @@ -35,6 +35,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity { @@ -3088,16 +2337,18 @@ index 8b3052b113..922e60ff0d 100644 this.bossBattle = (BossBattleServer) (new BossBattleServer(this.getScoreboardDisplayName(), BossBattle.BarColor.PURPLE, BossBattle.BarStyle.PROGRESS)).setDarkenSky(true); this.setHealth(this.getMaxHealth()); this.getNavigation().d(true); -@@ -558,6 +559,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity { +@@ -43,7 +44,8 @@ public class EntityWither extends EntityMonster implements IRangedEntity { - @Override - public boolean a() { -+ if (EntityWither.this.getRider() != null) return false; // Purpur - return EntityWither.this.dV() > 0; - } - } + @Override + protected void initPathfinder() { +- this.goalSelector.a(0, new EntityWither.a()); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur ++ this.goalSelector.a(1, new EntityWither.a()); // Purpur + this.goalSelector.a(2, new PathfinderGoalArrowAttack(this, 1.0D, 40, 20.0F)); + this.goalSelector.a(5, new PathfinderGoalRandomStrollLand(this, 1.0D)); + this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java -index 02492663ac..8daddec830 100644 +index 02492663ac..b153853ab0 100644 --- a/src/main/java/net/minecraft/server/EntityWolf.java +++ b/src/main/java/net/minecraft/server/EntityWolf.java @@ -28,6 +28,7 @@ public class EntityWolf extends EntityTameableAnimal { @@ -3108,16 +2359,16 @@ index 02492663ac..8daddec830 100644 this.setTamed(false); } -@@ -445,6 +446,7 @@ public class EntityWolf extends EntityTameableAnimal { - - @Override - public boolean a() { -+ if (this.j.getRider() != null) return false; // Purpur - return super.a() && this.b instanceof EntityLlama ? !this.j.isTamed() && this.a((EntityLlama) this.b) : false; - } - +@@ -35,6 +36,7 @@ public class EntityWolf extends EntityTameableAnimal { + protected void initPathfinder() { + this.goalSit = new PathfinderGoalSit(this); + this.goalSelector.a(1, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(1, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(2, this.goalSit); + this.goalSelector.a(3, new EntityWolf.a<>(this, EntityLlama.class, 24.0F, 1.5D, 1.5D)); + this.goalSelector.a(4, new PathfinderGoalLeapAtTarget(this, 0.4F)); diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java -index 5950f3ebd0..6fbe1a7817 100644 +index 5950f3ebd0..4456cf1354 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java @@ -36,6 +36,7 @@ public class EntityZombie extends EntityMonster { @@ -3128,6 +2379,14 @@ index 5950f3ebd0..6fbe1a7817 100644 this.bD = new PathfinderGoalBreakDoor(this, EntityZombie.bC); } +@@ -45,6 +46,7 @@ public class EntityZombie extends EntityMonster { + + @Override + protected void initPathfinder() { ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(4, new EntityZombie.a(this, 1.0D, 3)); + this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); + this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this)); diff --git a/src/main/java/net/minecraft/server/EntityZombieHusk.java b/src/main/java/net/minecraft/server/EntityZombieHusk.java index 4c8b2dd094..2a81670672 100644 --- a/src/main/java/net/minecraft/server/EntityZombieHusk.java @@ -3152,961 +2411,6 @@ index da8a8c8551..f1e5b521d8 100644 this.setVillagerData(this.getVillagerData().withProfession((VillagerProfession) IRegistry.VILLAGER_PROFESSION.a(this.random))); } -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalArrowAttack.java b/src/main/java/net/minecraft/server/PathfinderGoalArrowAttack.java -index 08aea9969d..c6e9b044f7 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalArrowAttack.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalArrowAttack.java -@@ -37,6 +37,7 @@ public class PathfinderGoalArrowAttack extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - EntityLiving entityliving = this.a.getGoalTarget(); - - if (entityliving != null && entityliving.isAlive()) { -@@ -49,6 +50,7 @@ public class PathfinderGoalArrowAttack extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a() || !this.a.getNavigation().n(); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalAvoidTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalAvoidTarget.java -index 66dc649486..de491239e3 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalAvoidTarget.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalAvoidTarget.java -@@ -18,12 +18,7 @@ public class PathfinderGoalAvoidTarget extends Pathfinde - private final PathfinderTargetCondition k; - - public PathfinderGoalAvoidTarget(EntityCreature entitycreature, Class oclass, float f, double d0, double d1) { -- Predicate predicate = (entityliving) -> { -- return true; -- }; -- Predicate predicate1 = IEntitySelector.e; -- -- this(entitycreature, oclass, predicate, f, d0, d1, predicate1::test); -+ this(entitycreature, oclass, (entityliving) -> true, f, d0, d1, IEntitySelector.e::test); // Purpur - fix decompile error - } - - public PathfinderGoalAvoidTarget(EntityCreature entitycreature, Class oclass, Predicate predicate, float f, double d0, double d1, Predicate predicate1) { -@@ -47,6 +42,7 @@ public class PathfinderGoalAvoidTarget extends Pathfinde - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - this.b = this.a.world.b(this.f, this.k, this.a, this.a.locX, this.a.locY, this.a.locZ, this.a.getBoundingBox().grow((double) this.c, 3.0D, (double) this.c)); - if (this.b == null) { - return false; -@@ -66,6 +62,7 @@ public class PathfinderGoalAvoidTarget extends Pathfinde - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return !this.e.n(); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalBeg.java b/src/main/java/net/minecraft/server/PathfinderGoalBeg.java -index d5935715f0..66216ea8ce 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalBeg.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalBeg.java -@@ -21,12 +21,14 @@ public class PathfinderGoalBeg extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - this.b = this.c.a(this.f, (EntityLiving) this.a); - return this.b == null ? false : this.a(this.b); - } - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return !this.b.isAlive() ? false : (this.a.h((Entity) this.b) > (double) (this.d * this.d) ? false : this.e > 0 && this.a(this.b)); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalBowShoot.java b/src/main/java/net/minecraft/server/PathfinderGoalBowShoot.java -index 5bdc4b4b61..fd2c1dd59f 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalBowShoot.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalBowShoot.java -@@ -28,6 +28,7 @@ public class PathfinderGoalBowShoot ext - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a.getGoalTarget() == null ? false : this.g(); - } - -@@ -37,6 +38,7 @@ public class PathfinderGoalBowShoot ext - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return (this.a() || !this.a.getNavigation().n()) && this.g(); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java b/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java -index 584b35e1dd..a00179f548 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalBreakDoor.java -@@ -27,6 +27,7 @@ public class PathfinderGoalBreakDoor extends PathfinderGoalDoorInteract { - - @Override - public boolean a() { -+ if (this.entity.getRider() != null) return false; // Purpur - return !super.a() ? false : (!this.entity.world.getGameRules().getBoolean(GameRules.MOB_GRIEFING) ? false : this.a(this.entity.world.getDifficulty()) && !this.g()); - } - -@@ -38,6 +39,7 @@ public class PathfinderGoalBreakDoor extends PathfinderGoalDoorInteract { - - @Override - public boolean b() { -+ if (this.entity.getRider() != null) return false; // Purpur - return this.a <= this.f() && !this.g() && this.door.a((IPosition) this.entity.getPositionVector(), 2.0D) && this.a(this.entity.world.getDifficulty()); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalBreed.java b/src/main/java/net/minecraft/server/PathfinderGoalBreed.java -index 0cc34400be..db7048e7a4 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalBreed.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalBreed.java -@@ -29,16 +29,18 @@ public class PathfinderGoalBreed extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.animal.getRider() != null) return false; // Purpur - if (!this.animal.isInLove()) { - return false; - } else { - this.partner = this.h(); -- return this.partner != null; -+ return this.partner != null && this.partner.getRider() == null; // Purpur - } - } - - @Override - public boolean b() { -+ if (this.animal.getRider() != null || this.partner.getRider() != null) return false; // Purpur - return this.partner.isAlive() && this.partner.isInLove() && this.f < 60; - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalCatSitOnBed.java b/src/main/java/net/minecraft/server/PathfinderGoalCatSitOnBed.java -index 8a251cb00f..d4754a8c01 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalCatSitOnBed.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalCatSitOnBed.java -@@ -15,6 +15,7 @@ public class PathfinderGoalCatSitOnBed extends PathfinderGoalGotoTarget { - - @Override - public boolean a() { -+ if (this.g.getRider() != null) return false; // Purpur - return this.g.isTamed() && !this.g.isSitting() && !this.g.eg() && super.a(); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalCrossbowAttack.java b/src/main/java/net/minecraft/server/PathfinderGoalCrossbowAttack.java -index 2e7e4f560c..dfd69b9988 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalCrossbowAttack.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalCrossbowAttack.java -@@ -21,6 +21,7 @@ public class PathfinderGoalCrossbowAttack list = this.a.world.a(EntityVillager.class, this.c, this.a, axisalignedbb); - List list1 = this.a.world.a(this.c, (EntityLiving) this.a, axisalignedbb); -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalDoorInteract.java b/src/main/java/net/minecraft/server/PathfinderGoalDoorInteract.java -index e4088249c0..d5d06c85db 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalDoorInteract.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalDoorInteract.java -@@ -45,6 +45,7 @@ public abstract class PathfinderGoalDoorInteract extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.entity.getRider() != null) return false; // Purpur - if (!this.entity.positionChanged) { - return false; - } else { -@@ -75,6 +76,7 @@ public abstract class PathfinderGoalDoorInteract extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.entity.getRider() != null) return false; // Purpur - return !this.a; - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalDoorOpen.java b/src/main/java/net/minecraft/server/PathfinderGoalDoorOpen.java -index 420ef53e4a..987b15ffea 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalDoorOpen.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalDoorOpen.java -@@ -13,6 +13,7 @@ public class PathfinderGoalDoorOpen extends PathfinderGoalDoorInteract { - - @Override - public boolean b() { -+ if (this.entity.getRider() != null) return false; // Purpur - return this.a && this.b > 0 && super.b(); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalEatTile.java b/src/main/java/net/minecraft/server/PathfinderGoalEatTile.java -index e9679bb46f..ae9b5eee96 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalEatTile.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalEatTile.java -@@ -22,6 +22,7 @@ public class PathfinderGoalEatTile extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.b.getRider() != null) return false; // Purpur - if (this.b.getRandom().nextInt(this.b.isBaby() ? 50 : 1000) != 0) { - return false; - } else { -@@ -45,6 +46,7 @@ public class PathfinderGoalEatTile extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.b.getRider() != null) return false; // Purpur - return this.d > 0; - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalFishSchool.java b/src/main/java/net/minecraft/server/PathfinderGoalFishSchool.java -index 559a5dfe03..5f47cd5667 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalFishSchool.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalFishSchool.java -@@ -20,6 +20,7 @@ public class PathfinderGoalFishSchool extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.a.eb()) { - return false; - } else if (this.a.dY()) { -@@ -44,6 +45,7 @@ public class PathfinderGoalFishSchool extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a.dY() && this.a.ec(); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalFleeSun.java b/src/main/java/net/minecraft/server/PathfinderGoalFleeSun.java -index b18f7c516a..ecb48fe459 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalFleeSun.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalFleeSun.java -@@ -22,6 +22,7 @@ public class PathfinderGoalFleeSun extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a.getGoalTarget() != null ? false : (!this.f.J() ? false : (!this.a.isBurning() ? false : (!this.f.f(new BlockPosition(this.a.locX, this.a.getBoundingBox().minY, this.a.locZ)) ? false : (!this.a.getEquipment(EnumItemSlot.HEAD).isEmpty() ? false : this.g())))); - } - -@@ -40,6 +41,7 @@ public class PathfinderGoalFleeSun extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return !this.a.getNavigation().n(); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalFollowBoat.java b/src/main/java/net/minecraft/server/PathfinderGoalFollowBoat.java -index 7fac14fb66..845cb071b7 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalFollowBoat.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalFollowBoat.java -@@ -16,6 +16,7 @@ public class PathfinderGoalFollowBoat extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.b.getRider() != null) return false; // Purpur - List list = this.b.world.a(EntityBoat.class, this.b.getBoundingBox().g(5.0D)); - boolean flag = false; - Iterator iterator = list.iterator(); -@@ -39,6 +40,7 @@ public class PathfinderGoalFollowBoat extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.b.getRider() != null) return false; // Purpur - return this.c != null && this.c.isPassenger() && (MathHelper.e(this.c.bb) > 0.0F || MathHelper.e(this.c.bd) > 0.0F); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalFollowEntity.java b/src/main/java/net/minecraft/server/PathfinderGoalFollowEntity.java -index 1d19ffee9d..5fc43105b5 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalFollowEntity.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalFollowEntity.java -@@ -34,6 +34,7 @@ public class PathfinderGoalFollowEntity extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - List list = this.a.world.a(EntityInsentient.class, this.a.getBoundingBox().g((double) this.i), this.b); - - if (!list.isEmpty()) { -@@ -54,6 +55,7 @@ public class PathfinderGoalFollowEntity extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.c != null && !this.e.n() && this.a.h((Entity) this.c) > (double) (this.g * this.g); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalFollowOwner.java b/src/main/java/net/minecraft/server/PathfinderGoalFollowOwner.java -index 896d2d56aa..55318e137a 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalFollowOwner.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalFollowOwner.java -@@ -34,6 +34,7 @@ public class PathfinderGoalFollowOwner extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - EntityLiving entityliving = this.a.getOwner(); - - if (entityliving == null) { -@@ -52,6 +53,7 @@ public class PathfinderGoalFollowOwner extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return !this.e.n() && this.a.h((Entity) this.c) > (double) (this.g * this.g) && !this.a.isSitting(); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalFollowParent.java b/src/main/java/net/minecraft/server/PathfinderGoalFollowParent.java -index 63b7777c08..78b3d63c13 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalFollowParent.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalFollowParent.java -@@ -17,6 +17,7 @@ public class PathfinderGoalFollowParent extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.a.getAge() >= 0) { - return false; - } else { -@@ -51,6 +52,7 @@ public class PathfinderGoalFollowParent extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.a.getAge() >= 0) { - return false; - } else if (!this.b.isAlive()) { -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java -index 41fb166ce0..f02d33d005 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java -@@ -31,6 +31,7 @@ public abstract class PathfinderGoalGotoTarget extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.c > 0) { - --this.c; - return false; -@@ -46,6 +47,7 @@ public abstract class PathfinderGoalGotoTarget extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.d >= -this.g && this.d <= 1200 && this.a(this.a.world, this.e); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalHorseTrap.java b/src/main/java/net/minecraft/server/PathfinderGoalHorseTrap.java -index f093744136..32176bbf2a 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalHorseTrap.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalHorseTrap.java -@@ -10,6 +10,7 @@ public class PathfinderGoalHorseTrap extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a.world.isPlayerNearby(this.a.locX, this.a.locY, this.a.locZ, 10.0D); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalHurtByTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalHurtByTarget.java -index a9bfa5f6a6..a0fc23de4c 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalHurtByTarget.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalHurtByTarget.java -@@ -20,6 +20,7 @@ public class PathfinderGoalHurtByTarget extends PathfinderGoalTarget { - - @Override - public boolean a() { -+ if (this.e.getRider() != null) return false; // Purpur - int i = this.e.ct(); - EntityLiving entityliving = this.e.getLastDamager(); - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalJumpOnBlock.java b/src/main/java/net/minecraft/server/PathfinderGoalJumpOnBlock.java -index 84d2cf8df6..856a796534 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalJumpOnBlock.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalJumpOnBlock.java -@@ -11,6 +11,7 @@ public class PathfinderGoalJumpOnBlock extends PathfinderGoalGotoTarget { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.g.isTamed() && !this.g.isSitting() && super.a(); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalLeapAtTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalLeapAtTarget.java -index 5c67aaad28..ef98ed6ffd 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalLeapAtTarget.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalLeapAtTarget.java -@@ -16,6 +16,7 @@ public class PathfinderGoalLeapAtTarget extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.a.isVehicle()) { - return false; - } else { -@@ -32,6 +33,7 @@ public class PathfinderGoalLeapAtTarget extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return !this.a.onGround; - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalLlamaFollow.java b/src/main/java/net/minecraft/server/PathfinderGoalLlamaFollow.java -index a46a985a65..7bc900b828 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalLlamaFollow.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalLlamaFollow.java -@@ -18,6 +18,7 @@ public class PathfinderGoalLlamaFollow extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (!this.a.isLeashed() && !this.a.eI()) { - List list = this.a.world.getEntities(this.a, this.a.getBoundingBox().grow(9.0D, 4.0D, 9.0D), (entity) -> { - EntityTypes entitytypes = entity.getEntityType(); -@@ -77,6 +78,7 @@ public class PathfinderGoalLlamaFollow extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.a.eI() && this.a.eJ().isAlive() && this.a(this.a, 0)) { - double d0 = this.a.h((Entity) this.a.eJ()); - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalLookAtPlayer.java b/src/main/java/net/minecraft/server/PathfinderGoalLookAtPlayer.java -index 04dcdc18f5..ac8c35e769 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalLookAtPlayer.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalLookAtPlayer.java -@@ -34,6 +34,7 @@ public class PathfinderGoalLookAtPlayer extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.a.getRandom().nextFloat() >= this.g) { - return false; - } else { -@@ -53,6 +54,7 @@ public class PathfinderGoalLookAtPlayer extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return !this.b.isAlive() ? false : (this.a.h(this.b) > (double) (this.c * this.c) ? false : this.f > 0); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalLookAtTradingPlayer.java b/src/main/java/net/minecraft/server/PathfinderGoalLookAtTradingPlayer.java -index 4f1328cd38..85da00154b 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalLookAtTradingPlayer.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalLookAtTradingPlayer.java -@@ -11,6 +11,7 @@ public class PathfinderGoalLookAtTradingPlayer extends PathfinderGoalLookAtPlaye - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.f.dY()) { - this.b = this.f.getTrader(); - return true; -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java b/src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java -index 7877e6b181..b8bbf6f185 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalMeleeAttack.java -@@ -25,6 +25,7 @@ public class PathfinderGoalMeleeAttack extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - long i = this.a.world.getTime(); - - if (i - this.k < 20L) { -@@ -46,6 +47,7 @@ public class PathfinderGoalMeleeAttack extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - EntityLiving entityliving = this.a.getGoalTarget(); - - return entityliving == null ? false : (!entityliving.isAlive() ? false : (!this.e ? !this.a.getNavigation().n() : (!this.a.a(new BlockPosition(entityliving)) ? false : !(entityliving instanceof EntityHuman) || !entityliving.isSpectator() && !((EntityHuman) entityliving).isCreative()))); -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalMoveThroughVillage.java b/src/main/java/net/minecraft/server/PathfinderGoalMoveThroughVillage.java -index 4d06aca81a..de1f5c9c63 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalMoveThroughVillage.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalMoveThroughVillage.java -@@ -33,6 +33,7 @@ public class PathfinderGoalMoveThroughVillage extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - this.g(); - if (this.e && this.a.world.J()) { - return false; -@@ -102,6 +103,7 @@ public class PathfinderGoalMoveThroughVillage extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a.getNavigation().n() ? false : !this.d.a((IPosition) this.a.getPositionVector(), (double) (this.a.getWidth() + (float) this.g)); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalMoveTowardsRestriction.java b/src/main/java/net/minecraft/server/PathfinderGoalMoveTowardsRestriction.java -index 7954444a64..5c753ee7cf 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalMoveTowardsRestriction.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalMoveTowardsRestriction.java -@@ -18,6 +18,7 @@ public class PathfinderGoalMoveTowardsRestriction extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.a.dH()) { - return false; - } else { -@@ -37,6 +38,7 @@ public class PathfinderGoalMoveTowardsRestriction extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return !this.a.getNavigation().n(); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalMoveTowardsTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalMoveTowardsTarget.java -index c38aedf623..32bd2e1ee1 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalMoveTowardsTarget.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalMoveTowardsTarget.java -@@ -21,6 +21,7 @@ public class PathfinderGoalMoveTowardsTarget extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - this.b = this.a.getGoalTarget(); - if (this.b == null) { - return false; -@@ -42,6 +43,7 @@ public class PathfinderGoalMoveTowardsTarget extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return !this.a.getNavigation().n() && this.b.isAlive() && this.b.h((Entity) this.a) < (double) (this.g * this.g); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java -index 3295dfa985..9a9f00562c 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTarget.java -@@ -29,6 +29,7 @@ public class PathfinderGoalNearestAttackableTarget exten - - @Override - public boolean a() { -+ if (this.e.getRider() != null) return false; // Purpur - if (this.b > 0 && this.e.getRandom().nextInt(this.b) != 0) { - return false; - } else { -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTargetWitch.java b/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTargetWitch.java -index 579dc99df0..5dc3f7a2d1 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTargetWitch.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalNearestAttackableTargetWitch.java -@@ -17,6 +17,7 @@ public class PathfinderGoalNearestAttackableTargetWitch - - @Override - public boolean a() { -+ if (this.e.getRider() != null) return false; // Purpur - return this.i && super.a(); - } - } -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalNearestHealableRaider.java b/src/main/java/net/minecraft/server/PathfinderGoalNearestHealableRaider.java -index 48fbc1614c..34d581d2a6 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalNearestHealableRaider.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalNearestHealableRaider.java -@@ -21,6 +21,7 @@ public class PathfinderGoalNearestHealableRaider extends - - @Override - public boolean a() { -+ if (this.e.getRider() != null) return false; // Purpur - if (this.i <= 0 && this.e.getRandom().nextBoolean()) { - if (!((EntityRaider) this.e).ek()) { - return false; -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalNearestVillage.java b/src/main/java/net/minecraft/server/PathfinderGoalNearestVillage.java -index 8ce5537ad8..a33bb8e239 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalNearestVillage.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalNearestVillage.java -@@ -19,6 +19,7 @@ public class PathfinderGoalNearestVillage extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.a.isVehicle()) { - return false; - } else if (this.a.world.J()) { -@@ -44,6 +45,7 @@ public class PathfinderGoalNearestVillage extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.c != null && !this.a.getNavigation().n() && this.a.getNavigation().h().equals(this.c); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalOcelotAttack.java b/src/main/java/net/minecraft/server/PathfinderGoalOcelotAttack.java -index bf52ecc401..2bb7e0c1e8 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalOcelotAttack.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalOcelotAttack.java -@@ -17,6 +17,7 @@ public class PathfinderGoalOcelotAttack extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.b.getRider() != null) return false; // Purpur - EntityLiving entityliving = this.b.getGoalTarget(); - - if (entityliving == null) { -@@ -29,6 +30,7 @@ public class PathfinderGoalOcelotAttack extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.b.getRider() != null) return false; // Purpur - return !this.c.isAlive() ? false : (this.b.h((Entity) this.c) > 225.0D ? false : !this.b.getNavigation().n() || this.a()); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalOfferFlower.java b/src/main/java/net/minecraft/server/PathfinderGoalOfferFlower.java -index 59822905a5..f35318926b 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalOfferFlower.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalOfferFlower.java -@@ -16,6 +16,7 @@ public class PathfinderGoalOfferFlower extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.b.getRider() != null) return false; // Purpur - if (!this.b.world.J()) { - return false; - } else if (this.b.getRandom().nextInt(8000) != 0) { -@@ -28,6 +29,7 @@ public class PathfinderGoalOfferFlower extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.b.getRider() != null) return false; // Purpur - return this.d > 0; - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalOwnerHurtByTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalOwnerHurtByTarget.java -index 5b99b0ddd9..4724d1b8c1 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalOwnerHurtByTarget.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalOwnerHurtByTarget.java -@@ -16,6 +16,7 @@ public class PathfinderGoalOwnerHurtByTarget extends PathfinderGoalTarget { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.a.isTamed() && !this.a.isSitting()) { - EntityLiving entityliving = this.a.getOwner(); - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalOwnerHurtTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalOwnerHurtTarget.java -index eb99159c8f..14254931c3 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalOwnerHurtTarget.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalOwnerHurtTarget.java -@@ -16,6 +16,7 @@ public class PathfinderGoalOwnerHurtTarget extends PathfinderGoalTarget { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.a.isTamed() && !this.a.isSitting()) { - EntityLiving entityliving = this.a.getOwner(); - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalPanic.java b/src/main/java/net/minecraft/server/PathfinderGoalPanic.java -index f399683b74..33b616a601 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalPanic.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalPanic.java -@@ -19,6 +19,7 @@ public class PathfinderGoalPanic extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.a.getLastDamager() == null && !this.a.isBurning()) { - return false; - } else { -@@ -57,6 +58,7 @@ public class PathfinderGoalPanic extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - // CraftBukkit start - introduce a temporary timeout hack until this is fixed properly - if ((this.a.ticksLived - this.a.hurtTimestamp) > 100) { - this.a.setLastDamager((EntityLiving) null); -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalPerch.java b/src/main/java/net/minecraft/server/PathfinderGoalPerch.java -index af4dc4345d..de33a50aba 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalPerch.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalPerch.java -@@ -12,6 +12,7 @@ public class PathfinderGoalPerch extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - EntityPlayer entityplayer = (EntityPlayer) this.a.getOwner(); - boolean flag = entityplayer != null && !entityplayer.isSpectator() && !entityplayer.abilities.isFlying && !entityplayer.isInWater(); - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalRaid.java b/src/main/java/net/minecraft/server/PathfinderGoalRaid.java -index 7f452635f5..7d2bba58c0 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalRaid.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalRaid.java -@@ -17,11 +17,13 @@ public class PathfinderGoalRaid extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a.getGoalTarget() == null && !this.a.isVehicle() && this.a.ek() && !this.a.ej().a() && !((WorldServer) this.a.world).b_(new BlockPosition(this.a)); - } - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a.ek() && !this.a.ej().a() && this.a.world instanceof WorldServer && !((WorldServer) this.a.world).b_(new BlockPosition(this.a)); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalRandomLookaround.java b/src/main/java/net/minecraft/server/PathfinderGoalRandomLookaround.java -index 316205ebfa..8cc9f4fe13 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalRandomLookaround.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalRandomLookaround.java -@@ -16,11 +16,13 @@ public class PathfinderGoalRandomLookaround extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a.getRandom().nextFloat() < 0.02F; - } - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.d >= 0; - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalRandomStroll.java b/src/main/java/net/minecraft/server/PathfinderGoalRandomStroll.java -index e74b169484..6688219cf6 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalRandomStroll.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalRandomStroll.java -@@ -26,6 +26,7 @@ public class PathfinderGoalRandomStroll extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.a.isVehicle()) { - return false; - } else { -@@ -60,6 +61,7 @@ public class PathfinderGoalRandomStroll extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return !this.a.getNavigation().n(); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalRandomTargetNonTamed.java b/src/main/java/net/minecraft/server/PathfinderGoalRandomTargetNonTamed.java -index f572f33673..218c35bf77 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalRandomTargetNonTamed.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalRandomTargetNonTamed.java -@@ -14,11 +14,13 @@ public class PathfinderGoalRandomTargetNonTamed extends - - @Override - public boolean a() { -+ if (this.i.getRider() != null) return false; // Purpur - return !this.i.isTamed() && super.a(); - } - - @Override - public boolean b() { -+ if (this.i.getRider() != null) return false; // Purpur - return this.d != null ? this.d.a(this.e, this.c) : super.b(); - } - } -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalRemoveBlock.java b/src/main/java/net/minecraft/server/PathfinderGoalRemoveBlock.java -index 7ccb3d5c06..e2d1abb01b 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalRemoveBlock.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalRemoveBlock.java -@@ -23,6 +23,7 @@ public class PathfinderGoalRemoveBlock extends PathfinderGoalGotoTarget { - - @Override - public boolean a() { -+ if (this.entity.getRider() != null) return false; // Purpur - if (!this.entity.world.getGameRules().getBoolean(GameRules.MOB_GRIEFING)) { - return false; - } else if (this.c > 0) { -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalRestrictSun.java b/src/main/java/net/minecraft/server/PathfinderGoalRestrictSun.java -index e964907b05..b8fa65560c 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalRestrictSun.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalRestrictSun.java -@@ -10,6 +10,7 @@ public class PathfinderGoalRestrictSun extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a.world.J() && this.a.getEquipment(EnumItemSlot.HEAD).isEmpty() && this.a.getNavigation() instanceof Navigation; - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSit.java b/src/main/java/net/minecraft/server/PathfinderGoalSit.java -index 3bb38030cc..b766e7552e 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalSit.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalSit.java -@@ -14,11 +14,13 @@ public class PathfinderGoalSit extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.entity.getRider() != null) return false; // Purpur - return this.willSit; - } - - @Override - public boolean a() { -+ if (this.entity.getRider() != null) return false; // Purpur - if (!this.entity.isTamed()) { - return this.willSit && this.entity.getGoalTarget() == null; // CraftBukkit - Allow sitting for wild animals - } else if (this.entity.av()) { -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalStrollVillage.java b/src/main/java/net/minecraft/server/PathfinderGoalStrollVillage.java -index 3a081935fa..9e0c58629c 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalStrollVillage.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalStrollVillage.java -@@ -10,6 +10,7 @@ public class PathfinderGoalStrollVillage extends PathfinderGoalRandomStroll { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - WorldServer worldserver = (WorldServer) this.a.world; - BlockPosition blockposition = new BlockPosition(this.a); - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalTame.java b/src/main/java/net/minecraft/server/PathfinderGoalTame.java -index 85fd50b3d0..4a26841d8d 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalTame.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalTame.java -@@ -18,6 +18,7 @@ public class PathfinderGoalTame extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.entity.getRider() != null) return false; // Purpur - if (!this.entity.isTamed() && this.entity.isVehicle()) { - Vec3D vec3d = RandomPositionGenerator.a(this.entity, 5, 4); - -@@ -41,6 +42,7 @@ public class PathfinderGoalTame extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.entity.getRider() != null) return false; // Purpur - return !this.entity.isTamed() && !this.entity.getNavigation().n() && this.entity.isVehicle(); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalTarget.java -index f15d8bf832..8394bb1f94 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalTarget.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalTarget.java -@@ -27,6 +27,7 @@ public abstract class PathfinderGoalTarget extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.e.getRider() != null) return false; // Purpur - EntityLiving entityliving = this.e.getGoalTarget(); - - if (entityliving == null) { -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalTempt.java b/src/main/java/net/minecraft/server/PathfinderGoalTempt.java -index d1164dd682..26efba12b8 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalTempt.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalTempt.java -@@ -41,6 +41,7 @@ public class PathfinderGoalTempt extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.j > 0) { - --this.j; - return false; -@@ -66,6 +67,7 @@ public class PathfinderGoalTempt extends PathfinderGoal { - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - if (this.g()) { - if (this.a.h((Entity) this.target) < 36.0D) { - if (this.target.e(this.e, this.f, this.g) > 0.010000000000000002D) { -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalTradeWithPlayer.java b/src/main/java/net/minecraft/server/PathfinderGoalTradeWithPlayer.java -index 9d37bd1a8a..0ead41f0dd 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalTradeWithPlayer.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalTradeWithPlayer.java -@@ -13,6 +13,7 @@ public class PathfinderGoalTradeWithPlayer extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - if (!this.a.isAlive()) { - return false; - } else if (this.a.isInWater()) { -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalUseItem.java b/src/main/java/net/minecraft/server/PathfinderGoalUseItem.java -index e6c5b968b1..c9f3680ba3 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalUseItem.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalUseItem.java -@@ -19,11 +19,13 @@ public class PathfinderGoalUseItem extends Pathfinde - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.c.test(this.a); - } - - @Override - public boolean b() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a.isHandRaised(); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalWater.java b/src/main/java/net/minecraft/server/PathfinderGoalWater.java -index 65b6bcdbde..fbc36ff7ae 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalWater.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalWater.java -@@ -12,6 +12,7 @@ public class PathfinderGoalWater extends PathfinderGoal { - - @Override - public boolean a() { -+ if (this.a.getRider() != null) return false; // Purpur - return this.a.onGround && !this.a.world.getFluid(new BlockPosition(this.a)).a(TagsFluid.WATER); - } - -diff --git a/src/main/java/net/minecraft/server/PathfinderGoalWaterJump.java b/src/main/java/net/minecraft/server/PathfinderGoalWaterJump.java -index a2fc2cd802..8f064526b2 100644 ---- a/src/main/java/net/minecraft/server/PathfinderGoalWaterJump.java -+++ b/src/main/java/net/minecraft/server/PathfinderGoalWaterJump.java -@@ -14,6 +14,7 @@ public class PathfinderGoalWaterJump extends PathfinderGoalWaterJumpAbstract { - - @Override - public boolean a() { -+ if (this.b.getRider() != null) return false; // Purpur - if (this.b.getRandom().nextInt(this.c) != 0) { - return false; - } else { -@@ -48,6 +49,7 @@ public class PathfinderGoalWaterJump extends PathfinderGoalWaterJumpAbstract { - - @Override - public boolean b() { -+ if (this.b.getRider() != null) return false; // Purpur - double d0 = this.b.getMot().y; - - return (d0 * d0 >= 0.029999999329447746D || this.b.pitch == 0.0F || Math.abs(this.b.pitch) >= 10.0F || !this.b.isInWater()) && !this.b.onGround; diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java index 7faa0c6ac7..8bf8384a2a 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -4591,6 +2895,29 @@ index 0000000000..74ff48259c + g = entity.getStrafe(); + } +} +diff --git a/src/main/java/net/pl3x/purpur/pathfinder/PathfinderGoalHasRider.java b/src/main/java/net/pl3x/purpur/pathfinder/PathfinderGoalHasRider.java +new file mode 100644 +index 0000000000..326044a2fb +--- /dev/null ++++ b/src/main/java/net/pl3x/purpur/pathfinder/PathfinderGoalHasRider.java +@@ -0,0 +1,17 @@ ++package net.pl3x.purpur.pathfinder; ++ ++import net.minecraft.server.Entity; ++import net.minecraft.server.PathfinderGoal; ++ ++public class PathfinderGoalHasRider extends PathfinderGoal { ++ private final Entity entity; ++ ++ public PathfinderGoalHasRider(Entity entity) { ++ this.entity = entity; ++ } ++ ++ @Override ++ public boolean a() { ++ return entity.getRider() != null; ++ } ++} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java index 18d057f0e3..93aede13c9 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java diff --git a/patches/server/0014-Pigs-give-saddle-back.patch b/patches/server/0014-Pigs-give-saddle-back.patch index 850b815ae..f3f1f72b8 100644 --- a/patches/server/0014-Pigs-give-saddle-back.patch +++ b/patches/server/0014-Pigs-give-saddle-back.patch @@ -1,4 +1,4 @@ -From 0dfdfd6131c8ce51cb3d7ca41ec3069c77b3ad10 Mon Sep 17 00:00:00 2001 +From 87605ad90c84030a6149c9ff94307907be3a48f9 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 12 May 2019 01:14:46 -0500 Subject: [PATCH] Pigs give saddle back @@ -8,10 +8,10 @@ Subject: [PATCH] Pigs give saddle back 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minecraft/server/EntityPig.java b/src/main/java/net/minecraft/server/EntityPig.java -index fd57e5bde..e1e43cebf 100644 +index 30feec4701..a2d4c2f54b 100644 --- a/src/main/java/net/minecraft/server/EntityPig.java +++ b/src/main/java/net/minecraft/server/EntityPig.java -@@ -119,10 +119,20 @@ public class EntityPig extends EntityAnimal { +@@ -120,10 +120,20 @@ public class EntityPig extends EntityAnimal { return true; } if (hasSaddle() && !isVehicle()) { diff --git a/patches/server/0031-Make-Iron-Golems-Swim.patch b/patches/server/0031-Make-Iron-Golems-Swim.patch index 1e4d15ee8..020a92a82 100644 --- a/patches/server/0031-Make-Iron-Golems-Swim.patch +++ b/patches/server/0031-Make-Iron-Golems-Swim.patch @@ -1,4 +1,4 @@ -From 7d030363a5743c15c3e5dd3f9fed242f1607e0bb Mon Sep 17 00:00:00 2001 +From 0499d98e81084bfbc08ce063be99a3eb30487494 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 15 Jun 2019 03:12:15 -0500 Subject: [PATCH] Make Iron Golems Swim @@ -9,7 +9,7 @@ Subject: [PATCH] Make Iron Golems Swim 2 files changed, 6 insertions(+) diff --git a/src/main/java/net/minecraft/server/EntityIronGolem.java b/src/main/java/net/minecraft/server/EntityIronGolem.java -index fd6a926ca..fd7972289 100644 +index 2c34ab337a..9bb033336c 100644 --- a/src/main/java/net/minecraft/server/EntityIronGolem.java +++ b/src/main/java/net/minecraft/server/EntityIronGolem.java @@ -14,6 +14,7 @@ public class EntityIronGolem extends EntityGolem { @@ -17,11 +17,11 @@ index fd6a926ca..fd7972289 100644 @Override protected void initPathfinder() { + if (net.pl3x.purpur.PurpurConfig.ironGolemSwims) this.goalSelector.a(0, new PathfinderGoalFloat(this)); // Purpur + this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur this.goalSelector.a(1, new PathfinderGoalMeleeAttack(this, 1.0D, true)); this.goalSelector.a(2, new PathfinderGoalMoveTowardsTarget(this, 0.9D, 32.0F)); - this.goalSelector.a(2, new PathfinderGoalStrollVillage(this, 0.6D)); diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 48c8da91e..ad373d20c 100644 +index 48c8da91e3..ad373d20c1 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -155,6 +155,11 @@ public class PurpurConfig { diff --git a/patches/server/0032-Phantoms-spawn-naturally-in-the-end.patch b/patches/server/0032-Phantoms-spawn-naturally-in-the-end.patch index c5a5b312a..b1a9b7c17 100644 --- a/patches/server/0032-Phantoms-spawn-naturally-in-the-end.patch +++ b/patches/server/0032-Phantoms-spawn-naturally-in-the-end.patch @@ -1,14 +1,14 @@ -From 38b13b7a3ab0c969150fce2169cb40b9a8255fc1 Mon Sep 17 00:00:00 2001 +From 5b4eae6813ae81a4973df42286316e660562fbdd Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 20 Jun 2019 18:48:58 -0500 Subject: [PATCH] Phantoms spawn naturally in the end --- - .../java/net/minecraft/server/BiomeTheEndHighIsland.java | 3 ++- - src/main/java/net/minecraft/server/EntityPhantom.java | 8 ++++++++ - src/main/java/net/minecraft/server/SpawnerCreature.java | 6 ++++++ - src/main/java/net/pl3x/purpur/PurpurConfig.java | 5 +++++ - 4 files changed, 21 insertions(+), 1 deletion(-) + .../server/BiomeTheEndHighIsland.java | 3 ++- + .../net/minecraft/server/EntityPhantom.java | 19 +++++++++++++++++++ + .../net/minecraft/server/SpawnerCreature.java | 6 ++++++ + .../java/net/pl3x/purpur/PurpurConfig.java | 5 +++++ + 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minecraft/server/BiomeTheEndHighIsland.java b/src/main/java/net/minecraft/server/BiomeTheEndHighIsland.java index e8cf6153ec..b2a8fe3020 100644 @@ -28,10 +28,18 @@ index e8cf6153ec..b2a8fe3020 100644 } } diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java -index 7496be10a2..836f18a7de 100644 +index cc175b3970..84038b9c2f 100644 --- a/src/main/java/net/minecraft/server/EntityPhantom.java +++ b/src/main/java/net/minecraft/server/EntityPhantom.java -@@ -25,6 +25,12 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -12,6 +12,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { + private BlockPosition d; public void setHome(BlockPosition home) { this.d = home; } public BlockPosition getHome() { return this.d; } // Purpur - OBFHELPER + private EntityPhantom.AttackPhase bz; public AttackPhase getAttackPhase() { return this.bz; } // Purpur - OBFHELPER + private BlockPosition crystalPosition; // Purpur ++ private boolean firstTick = true; // Purpur + + public EntityPhantom(EntityTypes entitytypes, World world) { + super(entitytypes, world); +@@ -25,6 +26,12 @@ public class EntityPhantom extends EntityFlying implements IMonster { this.canBeRiddenInWater = false; // Purpur } @@ -44,11 +52,21 @@ index 7496be10a2..836f18a7de 100644 @Override protected EntityAIBodyControl o() { return new EntityPhantom.d(this); -@@ -99,6 +105,8 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -102,6 +109,18 @@ public class EntityPhantom extends EntityFlying implements IMonster { this.world.addParticle(Particles.MYCELIUM, this.locX - (double) f2, this.locY + (double) f4, this.locZ - (double) f3, 0.0D, 0.0D, 0.0D); } -+ if (net.pl3x.purpur.PurpurConfig.spawnPhantomsInTheEnd && world.getWorld().getEnvironment() == org.bukkit.World.Environment.THE_END && getHome().y < 70) getHome().y = 70 + world.random.nextInt(20); // Purpur ++ // Purpur start ++ if (firstTick) { ++ firstTick = false; ++ if (net.pl3x.purpur.PurpurConfig.spawnPhantomsInTheEnd) { ++ if (world.getWorld().getEnvironment() == org.bukkit.World.Environment.THE_END && getHome().y < 70) { ++ // correct home position if spawned in the end ++ getHome().y = 70 + world.random.nextInt(20); ++ } ++ } ++ } ++ // Purpur end + if (!this.world.isClientSide && this.world.getDifficulty() == EnumDifficulty.PEACEFUL) { this.die(); diff --git a/patches/server/0050-Prevent-entities-from-loading-unloaded-chunks.patch b/patches/server/0050-Prevent-entities-from-loading-unloaded-chunks.patch index f81817d44..b587e90f0 100644 --- a/patches/server/0050-Prevent-entities-from-loading-unloaded-chunks.patch +++ b/patches/server/0050-Prevent-entities-from-loading-unloaded-chunks.patch @@ -1,4 +1,4 @@ -From eab5cee2a53339bdf99a85b6f2966b4aa2045381 Mon Sep 17 00:00:00 2001 +From 0053b709510e354de23738f70d82e816fa55c91b Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Fri, 12 Jul 2019 16:18:55 -0500 Subject: [PATCH] Prevent entities from loading unloaded chunks @@ -22,10 +22,10 @@ index 26a30e1c02..cfe21c2e70 100644 if (iblockdata.isAir()) { diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java -index 0939bbd5fb..6c5e10eef0 100644 +index a438d30414..5839f848d6 100644 --- a/src/main/java/net/minecraft/server/EntityEnderman.java +++ b/src/main/java/net/minecraft/server/EntityEnderman.java -@@ -222,6 +222,7 @@ public class EntityEnderman extends EntityMonster { +@@ -223,6 +223,7 @@ public class EntityEnderman extends EntityMonster { private boolean l(double d0, double d1, double d2) { BlockPosition.MutableBlockPosition blockposition_mutableblockposition = new BlockPosition.MutableBlockPosition(d0, d1, d2); @@ -34,10 +34,10 @@ index 0939bbd5fb..6c5e10eef0 100644 while (blockposition_mutableblockposition.getY() > 0 && !this.world.getType(blockposition_mutableblockposition).getMaterial().isSolid()) { blockposition_mutableblockposition.c(EnumDirection.DOWN); diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java -index 6fbe1a7817..8fbad4b91b 100644 +index 4456cf1354..d967620756 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java -@@ -298,6 +298,7 @@ public class EntityZombie extends EntityMonster { +@@ -299,6 +299,7 @@ public class EntityZombie extends EntityMonster { int j1 = j + MathHelper.nextInt(this.random, 7, 40) * MathHelper.nextInt(this.random, -1, 1); int k1 = k + MathHelper.nextInt(this.random, 7, 40) * MathHelper.nextInt(this.random, -1, 1); BlockPosition blockposition = new BlockPosition(i1, j1 - 1, k1); diff --git a/patches/server/0051-Tulips-change-fox-type.patch b/patches/server/0051-Tulips-change-fox-type.patch index 3e29a68a6..5583eefd1 100644 --- a/patches/server/0051-Tulips-change-fox-type.patch +++ b/patches/server/0051-Tulips-change-fox-type.patch @@ -1,4 +1,4 @@ -From 82849cfc5047ae9330b0a1bc67dea5eef6a6ca77 Mon Sep 17 00:00:00 2001 +From c979581487a50fbb9cb58ea2e7c38131a4c80a78 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 13 Jul 2019 15:56:22 -0500 Subject: [PATCH] Tulips change fox type @@ -10,10 +10,10 @@ Subject: [PATCH] Tulips change fox type 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraft/server/EntityFox.java b/src/main/java/net/minecraft/server/EntityFox.java -index a6fd50c492..53e67ab5f2 100644 +index 27b29f6336..834fbbe132 100644 --- a/src/main/java/net/minecraft/server/EntityFox.java +++ b/src/main/java/net/minecraft/server/EntityFox.java -@@ -231,6 +231,11 @@ public class EntityFox extends EntityAnimal { +@@ -232,6 +232,11 @@ public class EntityFox extends EntityAnimal { } private void initializePathFinderGoals() { @@ -25,7 +25,7 @@ index a6fd50c492..53e67ab5f2 100644 if (this.getFoxType() == EntityFox.Type.RED) { this.targetSelector.a(4, this.bH); this.targetSelector.a(4, this.bI); -@@ -263,6 +268,7 @@ public class EntityFox extends EntityAnimal { +@@ -264,6 +269,7 @@ public class EntityFox extends EntityAnimal { public void setFoxType(EntityFox.Type entityfox_type) { this.datawatcher.set(EntityFox.bz, entityfox_type.c()); @@ -33,7 +33,7 @@ index a6fd50c492..53e67ab5f2 100644 } private List ek() { -@@ -625,6 +631,27 @@ public class EntityFox extends EntityAnimal { +@@ -626,6 +632,27 @@ public class EntityFox extends EntityAnimal { } // Purpur start