diff --git a/patches/server/0010-Integrate-ridables.patch b/patches/server/0010-Integrate-ridables.patch index da7ccbb1f..f598d4544 100644 --- a/patches/server/0010-Integrate-ridables.patch +++ b/patches/server/0010-Integrate-ridables.patch @@ -1,4 +1,4 @@ -From 930c3e0566effb6ae76c583e41607751cf333917 Mon Sep 17 00:00:00 2001 +From 3d17868e7018744c09f599d26568417997d79ead Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Tue, 30 Apr 2019 19:17:21 -0500 Subject: [PATCH] Integrate ridables @@ -8,71 +8,73 @@ Subject: [PATCH] Integrate ridables .../java/net/minecraft/server/Entity.java | 38 +++++- .../net/minecraft/server/EntityAgeable.java | 2 +- .../java/net/minecraft/server/EntityBat.java | 22 ++++ - .../java/net/minecraft/server/EntityBee.java | 94 +++++++++++-- - .../net/minecraft/server/EntityBlaze.java | 15 ++- - .../java/net/minecraft/server/EntityCat.java | 22 +++- + .../java/net/minecraft/server/EntityBee.java | 95 ++++++++++++-- + .../net/minecraft/server/EntityBlaze.java | 16 ++- + .../java/net/minecraft/server/EntityCat.java | 23 +++- .../minecraft/server/EntityCaveSpider.java | 1 + .../net/minecraft/server/EntityChicken.java | 4 +- .../java/net/minecraft/server/EntityCod.java | 1 + .../java/net/minecraft/server/EntityCow.java | 2 + - .../net/minecraft/server/EntityCreeper.java | 59 +++++++++ - .../net/minecraft/server/EntityDolphin.java | 21 ++- - .../net/minecraft/server/EntityDrowned.java | 7 +- + .../net/minecraft/server/EntityCreeper.java | 60 +++++++++ + .../net/minecraft/server/EntityDolphin.java | 22 +++- + .../net/minecraft/server/EntityDrowned.java | 8 +- .../minecraft/server/EntityEnderDragon.java | 1 + - .../net/minecraft/server/EntityEnderman.java | 13 +- - .../net/minecraft/server/EntityEndermite.java | 4 +- - .../net/minecraft/server/EntityEvoker.java | 4 +- + .../net/minecraft/server/EntityEnderman.java | 17 ++- + .../net/minecraft/server/EntityEndermite.java | 5 +- + .../net/minecraft/server/EntityEvoker.java | 5 +- .../java/net/minecraft/server/EntityFish.java | 25 ++-- .../java/net/minecraft/server/EntityFox.java | 47 +++++-- - .../net/minecraft/server/EntityGhast.java | 7 +- - .../minecraft/server/EntityGiantZombie.java | 2 + - .../net/minecraft/server/EntityGuardian.java | 28 +++- + .../net/minecraft/server/EntityGhast.java | 8 +- + .../minecraft/server/EntityGiantZombie.java | 17 +++ + .../net/minecraft/server/EntityGuardian.java | 29 +++- .../minecraft/server/EntityGuardianElder.java | 1 + - .../minecraft/server/EntityHorseAbstract.java | 4 + + .../minecraft/server/EntityHorseAbstract.java | 13 ++ .../minecraft/server/EntityHorseSkeleton.java | 6 + .../minecraft/server/EntityHorseZombie.java | 6 + .../net/minecraft/server/EntityHuman.java | 14 +- - .../server/EntityIllagerIllusioner.java | 2 + + .../server/EntityIllagerIllusioner.java | 3 + .../minecraft/server/EntityInsentient.java | 56 +++++++- - .../net/minecraft/server/EntityIronGolem.java | 6 +- + .../net/minecraft/server/EntityIronGolem.java | 7 +- .../net/minecraft/server/EntityLiving.java | 27 ++-- - .../net/minecraft/server/EntityLlama.java | 42 +++++- + .../net/minecraft/server/EntityLlama.java | 50 ++++++- .../minecraft/server/EntityLlamaTrader.java | 8 ++ .../net/minecraft/server/EntityMagmaCube.java | 3 +- .../minecraft/server/EntityMushroomCow.java | 1 + - .../net/minecraft/server/EntityOcelot.java | 2 + - .../net/minecraft/server/EntityPanda.java | 28 +++- + .../net/minecraft/server/EntityOcelot.java | 3 + + .../net/minecraft/server/EntityPanda.java | 29 +++- .../net/minecraft/server/EntityParrot.java | 46 ++++++- - .../net/minecraft/server/EntityPhantom.java | 40 ++++-- + .../net/minecraft/server/EntityPhantom.java | 41 ++++-- .../java/net/minecraft/server/EntityPig.java | 32 ++--- - .../net/minecraft/server/EntityPigZombie.java | 6 + - .../net/minecraft/server/EntityPillager.java | 2 + - .../net/minecraft/server/EntityPolarBear.java | 26 ++++ + .../net/minecraft/server/EntityPigZombie.java | 7 + + .../net/minecraft/server/EntityPillager.java | 3 + + .../net/minecraft/server/EntityPolarBear.java | 27 ++++ .../minecraft/server/EntityPufferFish.java | 3 +- .../net/minecraft/server/EntityRabbit.java | 63 ++++++++- - .../net/minecraft/server/EntityRavager.java | 2 + + .../net/minecraft/server/EntityRavager.java | 3 + .../net/minecraft/server/EntitySalmon.java | 1 + .../net/minecraft/server/EntitySheep.java | 8 +- - .../net/minecraft/server/EntityShulker.java | 2 + - .../minecraft/server/EntitySilverfish.java | 2 + + .../net/minecraft/server/EntityShulker.java | 3 + + .../minecraft/server/EntitySilverfish.java | 3 + .../net/minecraft/server/EntitySkeleton.java | 1 + - .../server/EntitySkeletonAbstract.java | 1 + + .../server/EntitySkeletonAbstract.java | 2 + .../minecraft/server/EntitySkeletonStray.java | 1 + .../server/EntitySkeletonWither.java | 1 + - .../net/minecraft/server/EntitySlime.java | 4 +- - .../net/minecraft/server/EntitySnowman.java | 5 +- - .../net/minecraft/server/EntitySpider.java | 2 + + .../net/minecraft/server/EntitySlime.java | 5 +- + .../net/minecraft/server/EntitySnowman.java | 6 +- + .../net/minecraft/server/EntitySpider.java | 3 + .../net/minecraft/server/EntitySquid.java | 52 +++++++- .../server/EntityTameableAnimal.java | 6 + .../minecraft/server/EntityTropicalFish.java | 1 + .../net/minecraft/server/EntityTurtle.java | 95 ++++++++++++-- .../net/minecraft/server/EntityTypes.java | 4 + - .../java/net/minecraft/server/EntityVex.java | 14 +- - .../minecraft/server/EntityVindicator.java | 2 + - .../net/minecraft/server/EntityWitch.java | 6 +- - .../net/minecraft/server/EntityWither.java | 4 +- - .../java/net/minecraft/server/EntityWolf.java | 9 ++ - .../net/minecraft/server/EntityZombie.java | 2 + + .../java/net/minecraft/server/EntityVex.java | 15 ++- + .../net/minecraft/server/EntityVillager.java | 7 + + .../server/EntityVillagerTrader.java | 1 + + .../minecraft/server/EntityVindicator.java | 3 + + .../net/minecraft/server/EntityWitch.java | 7 +- + .../net/minecraft/server/EntityWither.java | 5 +- + .../java/net/minecraft/server/EntityWolf.java | 10 ++ + .../net/minecraft/server/EntityZombie.java | 3 + .../minecraft/server/EntityZombieHusk.java | 1 + .../server/EntityZombieVillager.java | 3 +- .../minecraft/server/PathfinderGoalSwell.java | 5 +- @@ -86,7 +88,7 @@ Subject: [PATCH] Integrate ridables .../pathfinder/PathfinderGoalHasRider.java | 20 +++ .../craftbukkit/entity/CraftLivingEntity.java | 10 ++ .../bukkit/craftbukkit/entity/CraftMob.java | 12 ++ - 82 files changed, 1427 insertions(+), 142 deletions(-) + 84 files changed, 1503 insertions(+), 141 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 @@ -95,7 +97,7 @@ Subject: [PATCH] Integrate ridables 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 1d9ba04daa..2bade947ee 100644 +index 1d9ba04da..2bade947e 100644 --- a/src/main/java/net/minecraft/server/ControllerLookDolphin.java +++ b/src/main/java/net/minecraft/server/ControllerLookDolphin.java @@ -1,6 +1,6 @@ @@ -116,7 +118,7 @@ index 1d9ba04daa..2bade947ee 100644 this.d = false; this.a.aK = this.a(this.a.aK, this.h() + 20.0F, this.b); diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 941bebcac6..f5b4c7e3c3 100644 +index 6e7c51954..6703b6eba 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -79,6 +79,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -199,7 +201,7 @@ index 941bebcac6..f5b4c7e3c3 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityAgeable.java b/src/main/java/net/minecraft/server/EntityAgeable.java -index 3d27f0964a..822316a65f 100644 +index 3d27f0964..822316a65 100644 --- a/src/main/java/net/minecraft/server/EntityAgeable.java +++ b/src/main/java/net/minecraft/server/EntityAgeable.java @@ -86,7 +86,7 @@ public abstract class EntityAgeable extends EntityCreature { @@ -212,7 +214,7 @@ index 3d27f0964a..822316a65f 100644 } diff --git a/src/main/java/net/minecraft/server/EntityBat.java b/src/main/java/net/minecraft/server/EntityBat.java -index 34239160be..b19028fa87 100644 +index 34239160b..b19028fa8 100644 --- a/src/main/java/net/minecraft/server/EntityBat.java +++ b/src/main/java/net/minecraft/server/EntityBat.java @@ -14,6 +14,11 @@ public class EntityBat extends EntityAmbient { @@ -257,7 +259,7 @@ index 34239160be..b19028fa87 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityBee.java b/src/main/java/net/minecraft/server/EntityBee.java -index 6154c44703..8a595dc74d 100644 +index 6154c4470..a31f57041 100644 --- a/src/main/java/net/minecraft/server/EntityBee.java +++ b/src/main/java/net/minecraft/server/EntityBee.java @@ -1,6 +1,7 @@ @@ -304,7 +306,15 @@ index 6154c44703..8a595dc74d 100644 this.goalSelector.a(0, new EntityBee.b(this, 1.399999976158142D, true)); this.goalSelector.a(1, new EntityBee.d()); this.goalSelector.a(2, new PathfinderGoalBreed(this, 1.0D)); -@@ -635,12 +638,12 @@ public class EntityBee extends EntityAnimal implements EntityBird { +@@ -82,6 +85,7 @@ public class EntityBee extends EntityAnimal implements EntityBird { + this.goalSelector.a(7, new EntityBee.g()); + this.goalSelector.a(8, new EntityBee.l()); + this.goalSelector.a(9, new PathfinderGoalFloat(this)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, (new EntityBee.h(this)).a(new Class[0])); + this.targetSelector.a(2, new EntityBee.c(this)); + } +@@ -635,12 +639,12 @@ public class EntityBee extends EntityAnimal implements EntityBird { @Override public boolean a() { @@ -319,7 +329,7 @@ index 6154c44703..8a595dc74d 100644 } } -@@ -1230,4 +1233,75 @@ public class EntityBee extends EntityAnimal implements EntityBird { +@@ -1230,4 +1234,75 @@ public class EntityBee extends EntityAnimal implements EntityBird { } } @@ -396,7 +406,7 @@ index 6154c44703..8a595dc74d 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityBlaze.java b/src/main/java/net/minecraft/server/EntityBlaze.java -index 5b1d2c7f50..d46b99b5c9 100644 +index 5b1d2c7f5..53f94479e 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 { @@ -410,7 +420,7 @@ index 5b1d2c7f50..d46b99b5c9 100644 this.a(PathType.WATER, -1.0F); this.a(PathType.LAVA, 8.0F); this.a(PathType.DANGER_FIRE, 0.0F); -@@ -19,12 +23,13 @@ public class EntityBlaze extends EntityMonster { +@@ -19,12 +23,14 @@ public class EntityBlaze extends EntityMonster { @Override protected void initPathfinder() { @@ -421,11 +431,12 @@ index 5b1d2c7f50..d46b99b5c9 100644 this.goalSelector.a(8, 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(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this)).a(new Class[0])); // Purpur - decompile error this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); } -@@ -87,6 +92,14 @@ public class EntityBlaze extends EntityMonster { +@@ -87,6 +93,14 @@ public class EntityBlaze extends EntityMonster { this.damageEntity(DamageSource.DROWN, 1.0F); } @@ -441,7 +452,7 @@ index 5b1d2c7f50..d46b99b5c9 100644 if (this.c <= 0) { this.c = 100; diff --git a/src/main/java/net/minecraft/server/EntityCat.java b/src/main/java/net/minecraft/server/EntityCat.java -index 57af3835ee..1cc36efad9 100644 +index 57af3835e..ff413e562 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 { @@ -471,7 +482,15 @@ index 57af3835ee..1cc36efad9 100644 this.goalSelector.a(1, new EntityCat.b(this)); this.goalSelector.a(2, this.goalSit); this.goalSelector.a(3, this.bG); -@@ -78,6 +80,7 @@ public class EntityCat extends EntityTameableAnimal { +@@ -62,6 +64,7 @@ public class EntityCat extends EntityTameableAnimal { + this.goalSelector.a(10, new PathfinderGoalBreed(this, 0.8D)); + this.goalSelector.a(11, new PathfinderGoalRandomStrollLand(this, 0.8D, 1.0000001E-5F)); + this.goalSelector.a(12, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 10.0F)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new PathfinderGoalRandomTargetNonTamed<>(this, EntityRabbit.class, false, (Predicate) null)); + this.targetSelector.a(1, new PathfinderGoalRandomTargetNonTamed<>(this, EntityTurtle.class, false, EntityTurtle.bw)); + } +@@ -78,6 +81,7 @@ public class EntityCat extends EntityTameableAnimal { this.datawatcher.set(EntityCat.bB, i); } @@ -479,7 +498,7 @@ index 57af3835ee..1cc36efad9 100644 public void u(boolean flag) { this.datawatcher.set(EntityCat.bC, flag); } -@@ -86,6 +89,7 @@ public class EntityCat extends EntityTameableAnimal { +@@ -86,6 +90,7 @@ public class EntityCat extends EntityTameableAnimal { return (Boolean) this.datawatcher.get(EntityCat.bC); } @@ -487,7 +506,7 @@ index 57af3835ee..1cc36efad9 100644 public void v(boolean flag) { this.datawatcher.set(EntityCat.bD, flag); } -@@ -203,7 +207,7 @@ public class EntityCat extends EntityTameableAnimal { +@@ -203,7 +208,7 @@ public class EntityCat extends EntityTameableAnimal { @Override public boolean B(Entity entity) { @@ -496,7 +515,7 @@ index 57af3835ee..1cc36efad9 100644 } @Override -@@ -275,7 +279,7 @@ public class EntityCat extends EntityTameableAnimal { +@@ -275,7 +280,7 @@ public class EntityCat extends EntityTameableAnimal { @Override public boolean mate(EntityAnimal entityanimal) { @@ -505,7 +524,7 @@ index 57af3835ee..1cc36efad9 100644 return false; } else if (!(entityanimal instanceof EntityCat)) { return false; -@@ -306,6 +310,7 @@ public class EntityCat extends EntityTameableAnimal { +@@ -306,6 +311,7 @@ public class EntityCat extends EntityTameableAnimal { @Override public boolean a(EntityHuman entityhuman, EnumHand enumhand) { @@ -513,7 +532,7 @@ index 57af3835ee..1cc36efad9 100644 ItemStack itemstack = entityhuman.b(enumhand); Item item = itemstack.getItem(); -@@ -396,6 +401,15 @@ public class EntityCat extends EntityTameableAnimal { +@@ -396,6 +402,15 @@ public class EntityCat extends EntityTameableAnimal { } @@ -530,7 +549,7 @@ index 57af3835ee..1cc36efad9 100644 private final EntityCat a; diff --git a/src/main/java/net/minecraft/server/EntityCaveSpider.java b/src/main/java/net/minecraft/server/EntityCaveSpider.java -index 23ced2c7bb..6613583587 100644 +index 23ced2c7b..661358358 100644 --- a/src/main/java/net/minecraft/server/EntityCaveSpider.java +++ b/src/main/java/net/minecraft/server/EntityCaveSpider.java @@ -6,6 +6,7 @@ public class EntityCaveSpider extends EntitySpider { @@ -542,7 +561,7 @@ index 23ced2c7bb..6613583587 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityChicken.java b/src/main/java/net/minecraft/server/EntityChicken.java -index 65795fc896..b31b606044 100644 +index 65795fc89..b31b60604 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 { @@ -571,7 +590,7 @@ index 65795fc896..b31b606044 100644 this.forceDrops = true; // CraftBukkit this.a((IMaterial) Items.EGG); diff --git a/src/main/java/net/minecraft/server/EntityCod.java b/src/main/java/net/minecraft/server/EntityCod.java -index 1e3782122a..c0b066d188 100644 +index 1e3782122..c0b066d18 100644 --- a/src/main/java/net/minecraft/server/EntityCod.java +++ b/src/main/java/net/minecraft/server/EntityCod.java @@ -4,6 +4,7 @@ public class EntityCod extends EntityFishSchool { @@ -583,7 +602,7 @@ 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 e1d0f0f38d..dcff77d8d8 100644 +index e1d0f0f38..dcff77d8d 100644 --- a/src/main/java/net/minecraft/server/EntityCow.java +++ b/src/main/java/net/minecraft/server/EntityCow.java @@ -9,11 +9,13 @@ public class EntityCow extends EntityAnimal { @@ -601,10 +620,10 @@ index e1d0f0f38d..dcff77d8d8 100644 this.goalSelector.a(2, new PathfinderGoalBreed(this, 1.0D)); if (net.pl3x.purpur.PurpurConfig.feedMushroomsToCows > 0) this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.25D, RecipeItemStack.a(Items.WHEAT, Blocks.RED_MUSHROOM.getItem(), Blocks.BROWN_MUSHROOM.getItem()), false)); else // Purpur diff --git a/src/main/java/net/minecraft/server/EntityCreeper.java b/src/main/java/net/minecraft/server/EntityCreeper.java -index 45dfc8104a..d1acd38f91 100644 +index 45dfc8104..af7d03e3a 100644 --- a/src/main/java/net/minecraft/server/EntityCreeper.java +++ b/src/main/java/net/minecraft/server/EntityCreeper.java -@@ -21,12 +21,14 @@ public class EntityCreeper extends EntityMonster { +@@ -21,18 +21,21 @@ public class EntityCreeper extends EntityMonster { public EntityCreeper(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -619,7 +638,14 @@ index 45dfc8104a..d1acd38f91 100644 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)); this.goalSelector.a(4, new PathfinderGoalMeleeAttack(this, 1.0D, false)); -@@ -165,6 +167,7 @@ public class EntityCreeper extends EntityMonster { + this.goalSelector.a(5, new PathfinderGoalRandomStrollLand(this, 0.8D)); + this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); + this.goalSelector.a(6, new PathfinderGoalRandomLookaround(this)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); + this.targetSelector.a(2, new PathfinderGoalHurtByTarget(this, new Class[0])); + } +@@ -165,6 +168,7 @@ public class EntityCreeper extends EntityMonster { return (Integer) this.datawatcher.get(EntityCreeper.b); } @@ -627,7 +653,7 @@ index 45dfc8104a..d1acd38f91 100644 public void a(int i) { this.datawatcher.set(EntityCreeper.b, i); } -@@ -265,6 +268,7 @@ public class EntityCreeper extends EntityMonster { +@@ -265,6 +269,7 @@ public class EntityCreeper extends EntityMonster { com.destroystokyo.paper.event.entity.CreeperIgniteEvent event = new com.destroystokyo.paper.event.entity.CreeperIgniteEvent((org.bukkit.entity.Creeper) getBukkitEntity(), ignited); if (event.callEvent()) { this.datawatcher.set(EntityCreeper.d, event.isIgnited()); @@ -635,7 +661,7 @@ index 45dfc8104a..d1acd38f91 100644 } } // Paper end -@@ -277,4 +281,59 @@ public class EntityCreeper extends EntityMonster { +@@ -277,4 +282,59 @@ public class EntityCreeper extends EntityMonster { public void setCausedHeadDrop() { ++this.bA; } @@ -696,7 +722,7 @@ index 45dfc8104a..d1acd38f91 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityDolphin.java b/src/main/java/net/minecraft/server/EntityDolphin.java -index ce78586ea0..47c310bd5a 100644 +index ce78586ea..c21807e0f 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 { @@ -715,7 +741,15 @@ index ce78586ea0..47c310bd5a 100644 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)); -@@ -163,7 +165,7 @@ public class EntityDolphin extends EntityWaterAnimal { +@@ -107,6 +109,7 @@ public class EntityDolphin extends EntityWaterAnimal { + this.goalSelector.a(8, new EntityDolphin.d()); + this.goalSelector.a(8, new PathfinderGoalFollowBoat(this)); + this.goalSelector.a(9, new PathfinderGoalAvoidTarget<>(this, EntityGuardian.class, 8.0F, 1.0D, 1.0D)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[]{EntityGuardian.class})).a(new Class[0])); // CraftBukkit - decompile error + } + +@@ -163,7 +166,7 @@ public class EntityDolphin extends EntityWaterAnimal { @Override protected boolean n(Entity entity) { @@ -724,7 +758,7 @@ index ce78586ea0..47c310bd5a 100644 } @Override -@@ -527,7 +529,7 @@ public class EntityDolphin extends EntityWaterAnimal { +@@ -527,7 +530,7 @@ public class EntityDolphin extends EntityWaterAnimal { } } @@ -733,7 +767,7 @@ index ce78586ea0..47c310bd5a 100644 private final EntityDolphin i; -@@ -536,8 +538,21 @@ public class EntityDolphin extends EntityWaterAnimal { +@@ -536,8 +539,21 @@ public class EntityDolphin extends EntityWaterAnimal { this.i = entitydolphin; } @@ -757,7 +791,7 @@ index ce78586ea0..47c310bd5a 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 77885f67ff..b9a5ab4430 100644 +index 77885f67f..7b269093c 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 { @@ -768,7 +802,15 @@ index 77885f67ff..b9a5ab4430 100644 this.H = 1.0F; this.moveController = new EntityDrowned.d(this); this.a(PathType.WATER, 0.0F); -@@ -200,7 +201,7 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { +@@ -27,6 +28,7 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { + this.goalSelector.a(5, new EntityDrowned.b(this, 1.0D)); + this.goalSelector.a(6, new EntityDrowned.e(this, 1.0D, this.world.getSeaLevel())); + this.goalSelector.a(7, new PathfinderGoalRandomStroll(this, 1.0D)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[]{EntityDrowned.class})).a(EntityPigZombie.class)); + this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, 10, true, false, this::i)); + if ( world.spigotConfig.zombieAggressiveTowardsVillager ) this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, false)); // Paper +@@ -200,7 +202,7 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { this.bw = flag; } @@ -777,7 +819,7 @@ index 77885f67ff..b9a5ab4430 100644 private final EntityDrowned i; -@@ -210,7 +211,7 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { +@@ -210,7 +212,7 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { } @Override @@ -786,7 +828,7 @@ index 77885f67ff..b9a5ab4430 100644 EntityLiving entityliving = this.i.getGoalTarget(); if (this.i.ez() && this.i.isInWater()) { -@@ -243,7 +244,7 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { +@@ -243,7 +245,7 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity { this.i.setMot(this.i.getMot().add(0.0D, -0.008D, 0.0D)); } @@ -796,7 +838,7 @@ index 77885f67ff..b9a5ab4430 100644 } diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java -index 9acdd6e566..5935ecb529 100644 +index af10fc36e..65e3caafc 100644 --- a/src/main/java/net/minecraft/server/EntityEnderDragon.java +++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java @@ -49,6 +49,7 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster { @@ -808,7 +850,7 @@ index 9acdd6e566..5935ecb529 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 8741df83b5..188f65ba84 100644 +index 8741df83b..43e281828 100644 --- a/src/main/java/net/minecraft/server/EntityEnderman.java +++ b/src/main/java/net/minecraft/server/EntityEnderman.java @@ -23,6 +23,7 @@ public class EntityEnderman extends EntityMonster { @@ -827,7 +869,15 @@ index 8741df83b5..188f65ba84 100644 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)); -@@ -189,7 +191,7 @@ public class EntityEnderman extends EntityMonster { +@@ -37,6 +39,7 @@ public class EntityEnderman extends EntityMonster { + this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this)); + this.goalSelector.a(10, new EntityEnderman.PathfinderGoalEndermanPlaceBlock(this)); + this.goalSelector.a(11, new EntityEnderman.PathfinderGoalEndermanPickupBlock(this)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new EntityEnderman.PathfinderGoalPlayerWhoLookedAtTarget(this)); + this.targetSelector.a(2, new PathfinderGoalHurtByTarget(this, new Class[0])); + this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityEndermite.class, 10, true, false, EntityEnderman.by)); +@@ -189,7 +192,7 @@ public class EntityEnderman extends EntityMonster { this.damageEntity(DamageSource.DROWN, 1.0F); } @@ -836,7 +886,7 @@ index 8741df83b5..188f65ba84 100644 float f = this.aI(); if (f > 0.5F && this.world.f(new BlockPosition(this)) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && this.tryEscape(EndermanEscapeEvent.Reason.RUNAWAY)) { // Paper -@@ -290,6 +292,7 @@ public class EntityEnderman extends EntityMonster { +@@ -290,6 +293,7 @@ public class EntityEnderman extends EntityMonster { public boolean damageEntity(DamageSource damagesource, float f) { if (this.isInvulnerable(damagesource)) { return false; @@ -844,16 +894,15 @@ index 8741df83b5..188f65ba84 100644 } else if (!(damagesource instanceof EntityDamageSourceIndirect) && damagesource != DamageSource.FIREWORKS) { boolean flag = super.damageEntity(damagesource, f); -@@ -333,7 +336,7 @@ public class EntityEnderman extends EntityMonster { +@@ -329,6 +333,7 @@ public class EntityEnderman extends EntityMonster { - @Override - public boolean a() { -- return this.enderman.getCarried() != null ? false : (!this.enderman.world.getGameRules().getBoolean(GameRules.MOB_GRIEFING) ? false : this.enderman.getRandom().nextInt(20) == 0); -+ return enderman.getRider() == null && this.enderman.getCarried() != null ? false : (!this.enderman.world.getGameRules().getBoolean(GameRules.MOB_GRIEFING) ? false : this.enderman.getRandom().nextInt(20) == 0); // Purpur + public PathfinderGoalEndermanPickupBlock(EntityEnderman entityenderman) { + this.enderman = entityenderman; ++ this.a(EnumSet.of(PathfinderGoal.Type.TARGET)); // Purpur } @Override -@@ -367,8 +370,7 @@ public class EntityEnderman extends EntityMonster { +@@ -367,11 +372,11 @@ public class EntityEnderman extends EntityMonster { static class PathfinderGoalEndermanPlaceBlock extends PathfinderGoal { @@ -863,28 +912,35 @@ index 8741df83b5..188f65ba84 100644 public PathfinderGoalEndermanPlaceBlock(EntityEnderman entityenderman) { this.a = entityenderman; -@@ -376,7 +378,7 @@ public class EntityEnderman extends EntityMonster { - - @Override - public boolean a() { -- return this.a.getCarried() == null ? false : (!this.a.world.getGameRules().getBoolean(GameRules.MOB_GRIEFING) ? false : this.a.getRandom().nextInt(2000) == 0); -+ return getEnderman().getRider() == null && this.a.getCarried() == null ? false : (!this.a.world.getGameRules().getBoolean(GameRules.MOB_GRIEFING) ? false : this.a.getRandom().nextInt(2000) == 0); // Purpur ++ this.a(EnumSet.of(PathfinderGoal.Type.TARGET)); // Purpur } @Override -@@ -461,6 +463,7 @@ public class EntityEnderman extends EntityMonster { +@@ -381,6 +386,10 @@ public class EntityEnderman extends EntityMonster { @Override - public boolean a() { -+ if (getEnderman().getRider() != null) return false; // Purpur - this.j = this.i.world.a(this.m, (EntityLiving) this.i); - return this.j != null; - } + public void e() { ++ // Purpur start ++ IBlockData carried = getEnderman().getCarried(); ++ if (carried == null) return; ++ // Purpur end + Random random = this.a.getRandom(); + World world = this.a.world; + int i = MathHelper.floor(this.a.locX() - 1.0D + random.nextDouble() * 2.0D); +@@ -391,7 +400,7 @@ public class EntityEnderman extends EntityMonster { + if (iblockdata == null) return; // Paper + BlockPosition blockposition1 = blockposition.down(); + IBlockData iblockdata1 = world.getType(blockposition1); +- IBlockData iblockdata2 = Block.getValidBlockForPosition(getEnderman().getCarried(), getEnderman().world, blockposition); // Paper - Fix MC-124320 ++ IBlockData iblockdata2 = Block.getValidBlockForPosition(carried, getEnderman().world, blockposition); // Paper - Fix MC-124320 // Purpur + + if (iblockdata2 != null && this.a(world, blockposition, iblockdata2, iblockdata, iblockdata1, blockposition1)) { + // CraftBukkit start - Place event diff --git a/src/main/java/net/minecraft/server/EntityEndermite.java b/src/main/java/net/minecraft/server/EntityEndermite.java -index b34695f2d0..92288e704f 100644 +index b34695f2d..329883287 100644 --- a/src/main/java/net/minecraft/server/EntityEndermite.java +++ b/src/main/java/net/minecraft/server/EntityEndermite.java -@@ -9,17 +9,19 @@ public class EntityEndermite extends EntityMonster { +@@ -9,17 +9,20 @@ public class EntityEndermite extends EntityMonster { public EntityEndermite(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -901,12 +957,13 @@ index b34695f2d0..92288e704f 100644 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(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + 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 886268b09e..3560c95298 100644 +index 886268b09..e60a42829 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 { @@ -925,17 +982,18 @@ index 886268b09e..3560c95298 100644 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 { +@@ -24,7 +26,8 @@ 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(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + 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)); diff --git a/src/main/java/net/minecraft/server/EntityFish.java b/src/main/java/net/minecraft/server/EntityFish.java -index d332907b3b..0ca3d45c9c 100644 +index d332907b3..0ca3d45c9 100644 --- a/src/main/java/net/minecraft/server/EntityFish.java +++ b/src/main/java/net/minecraft/server/EntityFish.java @@ -72,13 +72,10 @@ public abstract class EntityFish extends EntityWaterAnimal { @@ -993,7 +1051,7 @@ index d332907b3b..0ca3d45c9c 100644 this.i.setMot(this.i.getMot().add(0.0D, 0.005D, 0.0D)); } diff --git a/src/main/java/net/minecraft/server/EntityFox.java b/src/main/java/net/minecraft/server/EntityFox.java -index 82a32d5dbf..00055c39e5 100644 +index 82a32d5db..00055c39e 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 { @@ -1142,10 +1200,10 @@ index 82a32d5dbf..00055c39e5 100644 } diff --git a/src/main/java/net/minecraft/server/EntityGhast.java b/src/main/java/net/minecraft/server/EntityGhast.java -index e1c2540d14..562dd6500e 100644 +index e1c2540d1..b1c8766dd 100644 --- a/src/main/java/net/minecraft/server/EntityGhast.java +++ b/src/main/java/net/minecraft/server/EntityGhast.java -@@ -10,12 +10,15 @@ public class EntityGhast extends EntityFlying implements IMonster { +@@ -10,15 +10,19 @@ public class EntityGhast extends EntityFlying implements IMonster { public EntityGhast(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -1161,7 +1219,11 @@ index e1c2540d14..562dd6500e 100644 this.goalSelector.a(5, new EntityGhast.PathfinderGoalGhastIdleMove(this)); this.goalSelector.a(7, new EntityGhast.PathfinderGoalGhastMoveTowardsTarget(this)); this.goalSelector.a(7, new EntityGhast.PathfinderGoalGhastAttackTarget(this)); -@@ -255,7 +258,7 @@ public class EntityGhast extends EntityFlying implements IMonster { ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, 10, true, false, (entityliving) -> { + return Math.abs(entityliving.locY() - this.locY()) <= 4.0D; + })); +@@ -255,7 +259,7 @@ public class EntityGhast extends EntityFlying implements IMonster { } } @@ -1170,7 +1232,7 @@ index e1c2540d14..562dd6500e 100644 private final EntityGhast i; private int j; -@@ -266,7 +269,7 @@ public class EntityGhast extends EntityFlying implements IMonster { +@@ -266,7 +270,7 @@ public class EntityGhast extends EntityFlying implements IMonster { } @Override @@ -1180,7 +1242,7 @@ index e1c2540d14..562dd6500e 100644 if (this.j-- <= 0) { this.j += this.i.getRandom().nextInt(5) + 2; diff --git a/src/main/java/net/minecraft/server/EntityGiantZombie.java b/src/main/java/net/minecraft/server/EntityGiantZombie.java -index bcbade19ea..b7e2022b19 100644 +index bcbade19e..12a96750c 100644 --- a/src/main/java/net/minecraft/server/EntityGiantZombie.java +++ b/src/main/java/net/minecraft/server/EntityGiantZombie.java @@ -5,7 +5,9 @@ public class EntityGiantZombie extends EntityMonster { @@ -1193,8 +1255,30 @@ index bcbade19ea..b7e2022b19 100644 // Purpur end } +@@ -22,6 +24,21 @@ public class EntityGiantZombie extends EntityMonster { + this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(50.0D); + } + ++ // Purpur start ++ @Override ++ protected void initPathfinder() { ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur ++ } ++ ++ @Override ++ public float dp() { // jump height ++ // make giants jump as high as everything else relative to their size ++ // 1.0 makes bottom of feet about as high as their waist when they jump ++ return 1.0F; ++ } ++ // Purpur end ++ + @Override + public float a(BlockPosition blockposition, IWorldReader iworldreader) { + return iworldreader.w(blockposition) - 0.5F; diff --git a/src/main/java/net/minecraft/server/EntityGuardian.java b/src/main/java/net/minecraft/server/EntityGuardian.java -index e69cb334fb..aed6ee845a 100644 +index e69cb334f..237fd9954 100644 --- a/src/main/java/net/minecraft/server/EntityGuardian.java +++ b/src/main/java/net/minecraft/server/EntityGuardian.java @@ -24,8 +24,15 @@ public class EntityGuardian extends EntityMonster { @@ -1223,7 +1307,15 @@ index e69cb334fb..aed6ee845a 100644 this.goalSelector.a(4, new EntityGuardian.PathfinderGoalGuardianAttack(this)); this.goalSelector.a(5, pathfindergoalmovetowardsrestriction); this.goalSelector.a(7, this.goalRandomStroll); -@@ -79,6 +87,7 @@ public class EntityGuardian extends EntityMonster { +@@ -41,6 +49,7 @@ public class EntityGuardian extends EntityMonster { + this.goalSelector.a(9, new PathfinderGoalRandomLookaround(this)); + this.goalRandomStroll.a(EnumSet.of(PathfinderGoal.Type.MOVE, PathfinderGoal.Type.LOOK)); + pathfindergoalmovetowardsrestriction.a(EnumSet.of(PathfinderGoal.Type.MOVE, PathfinderGoal.Type.LOOK)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new PathfinderGoalNearestAttackableTarget<>(this, EntityLiving.class, 10, true, false, new EntityGuardian.EntitySelectorGuardianTargetHumanSquid(this))); + } + +@@ -79,6 +88,7 @@ public class EntityGuardian extends EntityMonster { return (Boolean) this.datawatcher.get(EntityGuardian.b); } @@ -1231,7 +1323,7 @@ index e69cb334fb..aed6ee845a 100644 private void r(boolean flag) { this.datawatcher.set(EntityGuardian.b, flag); } -@@ -293,7 +302,7 @@ public class EntityGuardian extends EntityMonster { +@@ -293,7 +303,7 @@ public class EntityGuardian extends EntityMonster { @Override public void e(Vec3D vec3d) { if (this.doAITick() && this.isInWater()) { @@ -1240,7 +1332,7 @@ index e69cb334fb..aed6ee845a 100644 this.move(EnumMoveType.SELF, this.getMot()); this.setMot(this.getMot().a(0.9D)); if (!this.es() && this.getGoalTarget() == null) { -@@ -305,7 +314,7 @@ public class EntityGuardian extends EntityMonster { +@@ -305,7 +315,7 @@ public class EntityGuardian extends EntityMonster { } @@ -1249,7 +1341,7 @@ index e69cb334fb..aed6ee845a 100644 private final EntityGuardian i; -@@ -314,8 +323,17 @@ public class EntityGuardian extends EntityMonster { +@@ -314,8 +324,17 @@ public class EntityGuardian extends EntityMonster { this.i = entityguardian; } @@ -1269,7 +1361,7 @@ index e69cb334fb..aed6ee845a 100644 Vec3D vec3d = new Vec3D(this.b - this.i.locX(), this.c - this.i.locY(), this.d - this.i.locZ()); double d0 = vec3d.f(); diff --git a/src/main/java/net/minecraft/server/EntityGuardianElder.java b/src/main/java/net/minecraft/server/EntityGuardianElder.java -index 7484bfeea0..292125cbd2 100644 +index 7484bfeea..292125cbd 100644 --- a/src/main/java/net/minecraft/server/EntityGuardianElder.java +++ b/src/main/java/net/minecraft/server/EntityGuardianElder.java @@ -9,6 +9,7 @@ public class EntityGuardianElder extends EntityGuardian { @@ -1281,10 +1373,10 @@ index 7484bfeea0..292125cbd2 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 9e708769f7..5cd46c7475 100644 +index 9e708769f..dcfbc2313 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,24 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven protected EntityHorseAbstract(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -1295,8 +1387,30 @@ index 9e708769f7..5cd46c7475 100644 this.H = 1.0F; this.loadChest(); } + + @Override + protected void initPathfinder() { ++ // Purpur start ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this) { ++ @Override ++ public boolean a() { ++ return entity.getRidingPassenger() instanceof EntityHuman && isSaddled(); ++ } ++ }); ++ // 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)); +@@ -281,6 +293,7 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven + return true; + } + ++ public boolean isSaddled() { return eL(); } // Purpur - OBFHELPER + public boolean eL() { + return this.t(4); + } diff --git a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java -index 290cb9337c..52ea911fe9 100644 +index 290cb9337..52ea911fe 100644 --- a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java +++ b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java @@ -179,4 +179,10 @@ public class EntityHorseSkeleton extends EntityHorseAbstract { @@ -1311,7 +1425,7 @@ index 290cb9337c..52ea911fe9 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityHorseZombie.java b/src/main/java/net/minecraft/server/EntityHorseZombie.java -index 5782a25ecd..dbe0223401 100644 +index 5782a25ec..dbe022340 100644 --- a/src/main/java/net/minecraft/server/EntityHorseZombie.java +++ b/src/main/java/net/minecraft/server/EntityHorseZombie.java @@ -79,4 +79,10 @@ public class EntityHorseZombie extends EntityHorseAbstract { @@ -1326,7 +1440,7 @@ index 5782a25ecd..dbe0223401 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java -index 584166f225..de22cad764 100644 +index 584166f22..de22cad76 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -374,9 +374,21 @@ public abstract class EntityHuman extends EntityLiving { @@ -1353,7 +1467,7 @@ index 584166f225..de22cad764 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 81b7cd06f2..18fedbc691 100644 +index 81b7cd06f..2d702dacb 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 @@ -1372,8 +1486,16 @@ index 81b7cd06f2..18fedbc691 100644 this.goalSelector.a(1, new EntityIllagerWizard.b()); this.goalSelector.a(4, new EntityIllagerIllusioner.b()); this.goalSelector.a(5, new EntityIllagerIllusioner.a()); +@@ -30,6 +32,7 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan + 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(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[]{EntityRaider.class})).a(new Class[0])); // CraftBukkit - 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)); diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java -index e0355d3a30..9aafac6db1 100644 +index e0355d3a3..9aafac6db 100644 --- a/src/main/java/net/minecraft/server/EntityInsentient.java +++ b/src/main/java/net/minecraft/server/EntityInsentient.java @@ -10,6 +10,7 @@ import java.util.UUID; @@ -1492,7 +1614,7 @@ index e0355d3a30..9aafac6db1 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityIronGolem.java b/src/main/java/net/minecraft/server/EntityIronGolem.java -index 2f764776b2..63b88f454b 100644 +index 2f764776b..c899d5de8 100644 --- a/src/main/java/net/minecraft/server/EntityIronGolem.java +++ b/src/main/java/net/minecraft/server/EntityIronGolem.java @@ -14,11 +14,13 @@ public class EntityIronGolem extends EntityGolem { @@ -1509,7 +1631,15 @@ index 2f764776b2..63b88f454b 100644 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)); -@@ -170,13 +172,13 @@ public class EntityIronGolem extends EntityGolem { +@@ -29,6 +31,7 @@ public class EntityIronGolem extends EntityGolem { + this.goalSelector.a(6, new PathfinderGoalRandomStrollLand(this, 0.6D)); + this.goalSelector.a(7, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F)); + this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new PathfinderGoalDefendVillage(this)); + this.targetSelector.a(2, new PathfinderGoalHurtByTarget(this, new Class[0])); + this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityInsentient.class, 5, false, false, (entityliving) -> { +@@ -170,13 +173,13 @@ public class EntityIronGolem extends EntityGolem { Item item = itemstack.getItem(); if (item != Items.IRON_INGOT) { @@ -1526,7 +1656,7 @@ index 2f764776b2..63b88f454b 100644 float f1 = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F; diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index d44977891b..b28c0de9a8 100644 +index d44977891..b28c0de9a 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -91,10 +91,10 @@ public abstract class EntityLiving extends Entity { @@ -1596,7 +1726,7 @@ index d44977891b..b28c0de9a8 100644 this.bB = f; } diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java -index 193dbfc5f6..ec0f57d90b 100644 +index 193dbfc5f..8d14c1817 100644 --- a/src/main/java/net/minecraft/server/EntityLlama.java +++ b/src/main/java/net/minecraft/server/EntityLlama.java @@ -16,6 +16,29 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn @@ -1644,7 +1774,22 @@ index 193dbfc5f6..ec0f57d90b 100644 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)); -@@ -253,6 +284,13 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn +@@ -67,6 +98,14 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn + this.goalSelector.a(6, new PathfinderGoalRandomStrollLand(this, 0.7D)); + this.goalSelector.a(7, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F)); + this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this)); ++ // Purpur start ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this) { ++ @Override ++ public boolean a() { ++ return entity.getRidingPassenger() instanceof EntityHuman && isSaddled(); ++ } ++ }); ++ // Purpur end + this.targetSelector.a(1, new EntityLlama.c(this)); + this.targetSelector.a(2, new EntityLlama.a(this)); + } +@@ -253,6 +292,13 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn return false; } @@ -1658,7 +1803,7 @@ index 193dbfc5f6..ec0f57d90b 100644 @Override public void a(IInventory iinventory) { EnumColor enumcolor = this.eZ(); -@@ -285,8 +323,8 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn +@@ -285,8 +331,8 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn return block instanceof BlockCarpet ? ((BlockCarpet) block).c() : null; } @@ -1670,7 +1815,7 @@ index 193dbfc5f6..ec0f57d90b 100644 return i == -1 ? null : EnumColor.fromColorIndex(i); diff --git a/src/main/java/net/minecraft/server/EntityLlamaTrader.java b/src/main/java/net/minecraft/server/EntityLlamaTrader.java -index 4cebd67e85..f8129ef10d 100644 +index 4cebd67e8..f8129ef10 100644 --- a/src/main/java/net/minecraft/server/EntityLlamaTrader.java +++ b/src/main/java/net/minecraft/server/EntityLlamaTrader.java @@ -9,6 +9,7 @@ public class EntityLlamaTrader extends EntityLlama { @@ -1696,7 +1841,7 @@ index 4cebd67e85..f8129ef10d 100644 @Override public GroupDataEntity prepare(GeneratorAccess generatoraccess, DifficultyDamageScaler difficultydamagescaler, EnumMobSpawn enummobspawn, @Nullable GroupDataEntity groupdataentity, @Nullable NBTTagCompound nbttagcompound) { diff --git a/src/main/java/net/minecraft/server/EntityMagmaCube.java b/src/main/java/net/minecraft/server/EntityMagmaCube.java -index 1fdc248ba8..b5e8857cbb 100644 +index 1fdc248ba..b5e8857cb 100644 --- a/src/main/java/net/minecraft/server/EntityMagmaCube.java +++ b/src/main/java/net/minecraft/server/EntityMagmaCube.java @@ -6,6 +6,7 @@ public class EntityMagmaCube extends EntitySlime { @@ -1717,7 +1862,7 @@ index 1fdc248ba8..b5e8857cbb 100644 this.setMot(vec3d.x, (double) (this.dp() + (float) this.getSize() * 0.1F), vec3d.z); diff --git a/src/main/java/net/minecraft/server/EntityMushroomCow.java b/src/main/java/net/minecraft/server/EntityMushroomCow.java -index a9688fbfc3..5c339fb56d 100644 +index a9688fbfc..5c339fb56 100644 --- a/src/main/java/net/minecraft/server/EntityMushroomCow.java +++ b/src/main/java/net/minecraft/server/EntityMushroomCow.java @@ -18,6 +18,7 @@ public class EntityMushroomCow extends EntityCow { @@ -1729,7 +1874,7 @@ index a9688fbfc3..5c339fb56d 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityOcelot.java b/src/main/java/net/minecraft/server/EntityOcelot.java -index d9a7b8ac1e..8093e01505 100644 +index d9a7b8ac1..f057eb4db 100644 --- a/src/main/java/net/minecraft/server/EntityOcelot.java +++ b/src/main/java/net/minecraft/server/EntityOcelot.java @@ -13,6 +13,7 @@ public class EntityOcelot extends EntityAnimal { @@ -1740,7 +1885,7 @@ index d9a7b8ac1e..8093e01505 100644 this.eq(); } -@@ -47,6 +48,7 @@ public class EntityOcelot extends EntityAnimal { +@@ -47,12 +48,14 @@ public class EntityOcelot extends EntityAnimal { protected void initPathfinder() { this.bz = new EntityOcelot.b(this, 0.6D, EntityOcelot.bw, true); this.goalSelector.a(1, new PathfinderGoalFloat(this)); @@ -1748,8 +1893,15 @@ index d9a7b8ac1e..8093e01505 100644 this.goalSelector.a(3, this.bz); this.goalSelector.a(7, new PathfinderGoalLeapAtTarget(this, 0.3F)); this.goalSelector.a(8, new PathfinderGoalOcelotAttack(this)); + this.goalSelector.a(9, new PathfinderGoalBreed(this, 0.8D)); + this.goalSelector.a(10, new PathfinderGoalRandomStrollLand(this, 0.8D, 1.0000001E-5F)); + this.goalSelector.a(11, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 10.0F)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new PathfinderGoalNearestAttackableTarget<>(this, EntityChicken.class, false)); + this.targetSelector.a(1, new PathfinderGoalNearestAttackableTarget<>(this, EntityTurtle.class, 10, false, false, EntityTurtle.bw)); + } diff --git a/src/main/java/net/minecraft/server/EntityPanda.java b/src/main/java/net/minecraft/server/EntityPanda.java -index cd41c80f19..91a8671372 100644 +index cd41c80f1..09bed074c 100644 --- a/src/main/java/net/minecraft/server/EntityPanda.java +++ b/src/main/java/net/minecraft/server/EntityPanda.java @@ -39,6 +39,7 @@ public class EntityPanda extends EntityAnimal { @@ -1792,7 +1944,15 @@ index cd41c80f19..91a8671372 100644 this.goalSelector.a(2, new EntityPanda.i(this, 2.0D)); this.goalSelector.a(2, new EntityPanda.d(this, 1.0D)); this.goalSelector.a(3, new EntityPanda.b(this, 1.2000000476837158D, true)); -@@ -539,7 +544,7 @@ public class EntityPanda extends EntityAnimal { +@@ -216,6 +221,7 @@ public class EntityPanda extends EntityAnimal { + this.goalSelector.a(12, new EntityPanda.j(this)); + this.goalSelector.a(13, new PathfinderGoalFollowParent(this, 1.25D)); + this.goalSelector.a(14, new PathfinderGoalRandomStrollLand(this, 1.0D)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, (new EntityPanda.e(this, new Class[0])).a(new Class[0])); + } + +@@ -539,7 +545,7 @@ public class EntityPanda extends EntityAnimal { if (itemstack.getItem() instanceof ItemMonsterEgg) { return super.a(entityhuman, enumhand); } else if (this.eJ()) { @@ -1801,7 +1961,7 @@ index cd41c80f19..91a8671372 100644 } else if (this.et()) { this.s(false); return true; -@@ -556,7 +561,7 @@ public class EntityPanda extends EntityAnimal { +@@ -556,7 +562,7 @@ public class EntityPanda extends EntityAnimal { this.f(entityhuman); } else { if (this.world.isClientSide || this.es() || this.isInWater()) { @@ -1810,7 +1970,7 @@ index cd41c80f19..91a8671372 100644 } this.eX(); -@@ -574,10 +579,21 @@ public class EntityPanda extends EntityAnimal { +@@ -574,10 +580,21 @@ public class EntityPanda extends EntityAnimal { entityhuman.a(enumhand, true); return true; } else { @@ -1833,7 +1993,7 @@ index cd41c80f19..91a8671372 100644 @Nullable @Override protected SoundEffect getSoundAmbient() { -@@ -979,7 +995,7 @@ public class EntityPanda extends EntityAnimal { +@@ -979,7 +996,7 @@ public class EntityPanda extends EntityAnimal { } } @@ -1842,7 +2002,7 @@ index cd41c80f19..91a8671372 100644 private final EntityPanda i; -@@ -989,9 +1005,9 @@ public class EntityPanda extends EntityAnimal { +@@ -989,9 +1006,9 @@ public class EntityPanda extends EntityAnimal { } @Override @@ -1855,7 +2015,7 @@ index cd41c80f19..91a8671372 100644 } } diff --git a/src/main/java/net/minecraft/server/EntityParrot.java b/src/main/java/net/minecraft/server/EntityParrot.java -index 1402087612..976b3c1273 100644 +index 140208761..976b3c127 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 { @@ -1927,7 +2087,7 @@ index 1402087612..976b3c1273 100644 this.goalSelector.a(2, this.goalSit); this.goalSelector.a(2, new PathfinderGoalFollowOwner(this, 1.0D, 5.0F, 1.0F, true)); diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java -index 0668903a3f..5cfa69b32f 100644 +index 0668903a3..18bdc6717 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 { @@ -1953,7 +2113,15 @@ index 0668903a3f..5cfa69b32f 100644 if (net.pl3x.purpur.PurpurConfig.phantomsOrbitCrystalsRadius > 0) { this.goalSelector.a(1, new FindCrystalGoal(this)); this.goalSelector.a(2, new OrbitCrystalGoal(this)); -@@ -46,6 +49,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -38,6 +41,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { + 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(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new EntityPhantom.b()); // AttackPlayerGoal + // Purpur end + } +@@ -46,6 +50,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { protected void initAttributes() { super.initAttributes(); this.getAttributeMap().b(GenericAttributes.ATTACK_DAMAGE); @@ -1961,7 +2129,7 @@ index 0668903a3f..5cfa69b32f 100644 } @Override -@@ -110,7 +114,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -110,7 +115,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { @Override public void movementTick() { @@ -1970,7 +2138,7 @@ index 0668903a3f..5cfa69b32f 100644 this.setOnFire(8); } -@@ -336,14 +340,14 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -336,14 +341,14 @@ public class EntityPhantom extends EntityFlying implements IMonster { this.offset = phantom.random.nextFloat() * 2.0F * 3.1415927F; updateOffset(); } @@ -1988,7 +2156,7 @@ index 0668903a3f..5cfa69b32f 100644 this.verticalChange = Math.min(-1.0F, this.verticalChange); updateOffset(); } -@@ -608,14 +612,23 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -608,14 +613,23 @@ public class EntityPhantom extends EntityFlying implements IMonster { } } @@ -2014,7 +2182,7 @@ index 0668903a3f..5cfa69b32f 100644 } class d extends EntityAIBodyControl { -@@ -631,7 +644,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -631,7 +645,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { } } @@ -2023,7 +2191,7 @@ index 0668903a3f..5cfa69b32f 100644 private float j = 0.1F; -@@ -639,8 +652,19 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -639,8 +653,19 @@ public class EntityPhantom extends EntityFlying implements IMonster { super(entityinsentient); } @@ -2045,7 +2213,7 @@ index 0668903a3f..5cfa69b32f 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 8d277566e9..f71d4b58f0 100644 +index 8d277566e..f71d4b58f 100644 --- a/src/main/java/net/minecraft/server/EntityPig.java +++ b/src/main/java/net/minecraft/server/EntityPig.java @@ -17,11 +17,13 @@ public class EntityPig extends EntityAnimal { @@ -2102,7 +2270,7 @@ index 8d277566e9..f71d4b58f0 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java -index 9dd028b558..8d57c5f1b5 100644 +index 9dd028b55..3321e2257 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 { @@ -2113,7 +2281,15 @@ index 9dd028b558..8d57c5f1b5 100644 this.a(PathType.LAVA, 8.0F); } -@@ -183,6 +184,11 @@ public class EntityPigZombie extends EntityZombie { +@@ -30,6 +31,7 @@ public class EntityPigZombie extends EntityZombie { + protected void l() { + this.goalSelector.a(2, new PathfinderGoalZombieAttack(this, 1.0D, false)); + this.goalSelector.a(7, new PathfinderGoalRandomStrollLand(this, 1.0D)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new EntityPigZombie.PathfinderGoalAngerOther(this)); + this.targetSelector.a(2, new EntityPigZombie.PathfinderGoalAnger(this)); + } +@@ -183,6 +185,11 @@ public class EntityPigZombie extends EntityZombie { return SoundEffects.ENTITY_ZOMBIE_PIGMAN_DEATH; } @@ -2126,10 +2302,10 @@ index 9dd028b558..8d57c5f1b5 100644 protected void a(DifficultyDamageScaler difficultydamagescaler) { this.setSlot(EnumItemSlot.MAINHAND, new ItemStack(Items.GOLDEN_SWORD)); diff --git a/src/main/java/net/minecraft/server/EntityPillager.java b/src/main/java/net/minecraft/server/EntityPillager.java -index 0357c9da93..e4762bf98d 100644 +index 0357c9da9..3faf41fea 100644 --- a/src/main/java/net/minecraft/server/EntityPillager.java +++ b/src/main/java/net/minecraft/server/EntityPillager.java -@@ -11,12 +11,14 @@ public class EntityPillager extends EntityIllagerAbstract implements ICrossbow, +@@ -11,17 +11,20 @@ public class EntityPillager extends EntityIllagerAbstract implements ICrossbow, public EntityPillager(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -2144,8 +2320,14 @@ index 0357c9da93..e4762bf98d 100644 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)); + this.goalSelector.a(9, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 15.0F, 1.0F)); + this.goalSelector.a(10, new PathfinderGoalLookAtPlayer(this, EntityInsentient.class, 15.0F)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[]{EntityRaider.class})).a(new Class[0])); // CraftBukkit - decompile error + this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); + this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, false)); diff --git a/src/main/java/net/minecraft/server/EntityPolarBear.java b/src/main/java/net/minecraft/server/EntityPolarBear.java -index f8e29a02d3..b1652477e8 100644 +index f8e29a02d..2339c6c99 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 { @@ -2156,7 +2338,7 @@ index f8e29a02d3..b1652477e8 100644 } @Override -@@ -31,6 +32,7 @@ public class EntityPolarBear extends EntityAnimal { +@@ -31,12 +32,14 @@ public class EntityPolarBear extends EntityAnimal { protected void initPathfinder() { super.initPathfinder(); this.goalSelector.a(0, new PathfinderGoalFloat(this)); @@ -2164,7 +2346,14 @@ index f8e29a02d3..b1652477e8 100644 this.goalSelector.a(1, new EntityPolarBear.c()); this.goalSelector.a(1, new EntityPolarBear.d()); this.goalSelector.a(4, new PathfinderGoalFollowParent(this, 1.25D)); -@@ -112,6 +114,11 @@ public class EntityPolarBear extends EntityAnimal { + this.goalSelector.a(5, new PathfinderGoalRandomStroll(this, 1.0D)); + this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F)); + this.goalSelector.a(7, new PathfinderGoalRandomLookaround(this)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new EntityPolarBear.b()); + this.targetSelector.a(2, new EntityPolarBear.a()); + this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityFox.class, 10, true, true, (Predicate) null)); +@@ -112,6 +115,11 @@ public class EntityPolarBear extends EntityAnimal { --this.bz; } @@ -2176,7 +2365,7 @@ index f8e29a02d3..b1652477e8 100644 } @Override -@@ -137,11 +144,14 @@ public class EntityPolarBear extends EntityAnimal { +@@ -137,11 +145,14 @@ public class EntityPolarBear extends EntityAnimal { return flag; } @@ -2191,7 +2380,7 @@ index f8e29a02d3..b1652477e8 100644 this.datawatcher.set(EntityPolarBear.bw, flag); } -@@ -160,6 +170,22 @@ public class EntityPolarBear extends EntityAnimal { +@@ -160,6 +171,22 @@ public class EntityPolarBear extends EntityAnimal { return super.prepare(generatoraccess, difficultydamagescaler, enummobspawn, (GroupDataEntity) groupdataentity, nbttagcompound); } @@ -2215,7 +2404,7 @@ index f8e29a02d3..b1652477e8 100644 public d() { diff --git a/src/main/java/net/minecraft/server/EntityPufferFish.java b/src/main/java/net/minecraft/server/EntityPufferFish.java -index 98af9a2235..36d88e9ce5 100644 +index 98af9a223..36d88e9ce 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 { @@ -2236,7 +2425,7 @@ index 98af9a2235..36d88e9ce5 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityRabbit.java b/src/main/java/net/minecraft/server/EntityRabbit.java -index 2ed2d0b6bb..0eae51aa62 100644 +index 2ed2d0b6b..0eae51aa6 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 { @@ -2387,7 +2576,7 @@ index 2ed2d0b6bb..0eae51aa62 100644 this.d = flag; } diff --git a/src/main/java/net/minecraft/server/EntityRavager.java b/src/main/java/net/minecraft/server/EntityRavager.java -index fd25ce1026..5fa0b505b9 100644 +index fd25ce102..ebb6ae6d0 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 { @@ -2398,7 +2587,7 @@ index fd25ce1026..5fa0b505b9 100644 this.H = 1.0F; this.f = 20; } -@@ -24,6 +25,7 @@ public class EntityRavager extends EntityRaider { +@@ -24,10 +25,12 @@ public class EntityRavager extends EntityRaider { protected void initPathfinder() { super.initPathfinder(); this.goalSelector.a(0, new PathfinderGoalFloat(this)); @@ -2406,8 +2595,13 @@ index fd25ce1026..5fa0b505b9 100644 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)); + this.goalSelector.a(10, new PathfinderGoalLookAtPlayer(this, EntityInsentient.class, 8.0F)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(2, (new PathfinderGoalHurtByTarget(this, new Class[]{EntityRaider.class})).a(new Class[0])); // CraftBukkit - decompile error + this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); + this.targetSelector.a(4, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, true)); diff --git a/src/main/java/net/minecraft/server/EntitySalmon.java b/src/main/java/net/minecraft/server/EntitySalmon.java -index 6be29f3078..7347ffcd5c 100644 +index 6be29f307..7347ffcd5 100644 --- a/src/main/java/net/minecraft/server/EntitySalmon.java +++ b/src/main/java/net/minecraft/server/EntitySalmon.java @@ -4,6 +4,7 @@ public class EntitySalmon extends EntityFishSchool { @@ -2419,7 +2613,7 @@ index 6be29f3078..7347ffcd5c 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntitySheep.java b/src/main/java/net/minecraft/server/EntitySheep.java -index a8ef98981d..f7d9dee92f 100644 +index a8ef98981..f7d9dee92 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; @@ -2458,7 +2652,7 @@ index a8ef98981d..f7d9dee92f 100644 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 0d2ceff6f2..d687a53a6f 100644 +index 0d2ceff6f..6e90c9deb 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 { @@ -2469,7 +2663,7 @@ index 0d2ceff6f2..d687a53a6f 100644 this.aJ = 180.0F; this.aI = 180.0F; this.bB = null; -@@ -46,6 +47,7 @@ public class EntityShulker extends EntityGolem implements IMonster { +@@ -46,10 +47,12 @@ public class EntityShulker extends EntityGolem implements IMonster { @Override protected void initPathfinder() { @@ -2477,11 +2671,16 @@ index 0d2ceff6f2..d687a53a6f 100644 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()); + this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[0])).a(new Class[0])); // CraftBukkit - decompile error + this.targetSelector.a(2, new EntityShulker.d(this)); + this.targetSelector.a(3, new EntityShulker.c(this)); diff --git a/src/main/java/net/minecraft/server/EntitySilverfish.java b/src/main/java/net/minecraft/server/EntitySilverfish.java -index 08c2a22f7a..021bce7e95 100644 +index 08c2a22f7..47f95221d 100644 --- a/src/main/java/net/minecraft/server/EntitySilverfish.java +++ b/src/main/java/net/minecraft/server/EntitySilverfish.java -@@ -9,12 +9,14 @@ public class EntitySilverfish extends EntityMonster { +@@ -9,15 +9,18 @@ public class EntitySilverfish extends EntityMonster { public EntitySilverfish(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -2496,8 +2695,12 @@ index 08c2a22f7a..021bce7e95 100644 this.goalSelector.a(3, this.b); this.goalSelector.a(4, new PathfinderGoalMeleeAttack(this, 1.0D, false)); this.goalSelector.a(5, new EntitySilverfish.PathfinderGoalSilverfishHideInBlock(this)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[0])).a(new Class[0])); // CraftBukkit - decompile error + this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); + } diff --git a/src/main/java/net/minecraft/server/EntitySkeleton.java b/src/main/java/net/minecraft/server/EntitySkeleton.java -index 0e78d5c62c..908e51b636 100644 +index 0e78d5c62..908e51b63 100644 --- a/src/main/java/net/minecraft/server/EntitySkeleton.java +++ b/src/main/java/net/minecraft/server/EntitySkeleton.java @@ -4,6 +4,7 @@ public class EntitySkeleton extends EntitySkeletonAbstract { @@ -2509,10 +2712,10 @@ 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 3c95c0428b..a8cd1dcb93 100644 +index 3c95c0428..8bc4e8515 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 +@@ -28,12 +28,14 @@ public abstract class EntitySkeletonAbstract extends EntityMonster implements IR @Override protected void initPathfinder() { @@ -2520,8 +2723,15 @@ index 3c95c0428b..a8cd1dcb93 100644 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)); + this.goalSelector.a(5, new PathfinderGoalRandomStrollLand(this, 1.0D)); + this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); + this.goalSelector.a(6, new PathfinderGoalRandomLookaround(this)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, new Class[0])); + this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); + this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityIronGolem.class, true)); diff --git a/src/main/java/net/minecraft/server/EntitySkeletonStray.java b/src/main/java/net/minecraft/server/EntitySkeletonStray.java -index 2eb53864f2..eda880703e 100644 +index 2eb53864f..eda880703 100644 --- a/src/main/java/net/minecraft/server/EntitySkeletonStray.java +++ b/src/main/java/net/minecraft/server/EntitySkeletonStray.java @@ -6,6 +6,7 @@ public class EntitySkeletonStray extends EntitySkeletonAbstract { @@ -2533,7 +2743,7 @@ index 2eb53864f2..eda880703e 100644 public static boolean b(EntityTypes entitytypes, GeneratorAccess generatoraccess, EnumMobSpawn enummobspawn, BlockPosition blockposition, Random random) { diff --git a/src/main/java/net/minecraft/server/EntitySkeletonWither.java b/src/main/java/net/minecraft/server/EntitySkeletonWither.java -index 98e042424c..c2b93010a3 100644 +index 98e042424..c2b93010a 100644 --- a/src/main/java/net/minecraft/server/EntitySkeletonWither.java +++ b/src/main/java/net/minecraft/server/EntitySkeletonWither.java @@ -6,6 +6,7 @@ public class EntitySkeletonWither extends EntitySkeletonAbstract { @@ -2545,10 +2755,10 @@ index 98e042424c..c2b93010a3 100644 } diff --git a/src/main/java/net/minecraft/server/EntitySlime.java b/src/main/java/net/minecraft/server/EntitySlime.java -index 2efc18df94..71e8e95d25 100644 +index 2efc18df9..9c7c109ed 100644 --- a/src/main/java/net/minecraft/server/EntitySlime.java +++ b/src/main/java/net/minecraft/server/EntitySlime.java -@@ -29,11 +29,13 @@ public class EntitySlime extends EntityInsentient implements IMonster { +@@ -29,15 +29,18 @@ public class EntitySlime extends EntityInsentient implements IMonster { public EntitySlime(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -2562,7 +2772,12 @@ index 2efc18df94..71e8e95d25 100644 this.goalSelector.a(1, new EntitySlime.PathfinderGoalSlimeRandomJump(this)); this.goalSelector.a(2, new EntitySlime.PathfinderGoalSlimeNearestPlayer(this)); this.goalSelector.a(3, new EntitySlime.PathfinderGoalSlimeRandomDirection(this)); -@@ -329,7 +331,7 @@ public class EntitySlime extends EntityInsentient implements IMonster { + this.goalSelector.a(5, new EntitySlime.PathfinderGoalSlimeIdle(this)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, 10, true, false, (entityliving) -> { + return Math.abs(entityliving.locY() - this.locY()) <= 4.0D; + })); +@@ -329,7 +332,7 @@ public class EntitySlime extends EntityInsentient implements IMonster { } @Override @@ -2572,10 +2787,10 @@ index 2efc18df94..71e8e95d25 100644 this.setMot(vec3d.x, (double) this.dp(), vec3d.z); diff --git a/src/main/java/net/minecraft/server/EntitySnowman.java b/src/main/java/net/minecraft/server/EntitySnowman.java -index 54404dd4b4..eabf5a15aa 100644 +index 54404dd4b..f42929296 100644 --- a/src/main/java/net/minecraft/server/EntitySnowman.java +++ b/src/main/java/net/minecraft/server/EntitySnowman.java -@@ -13,10 +13,12 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity { +@@ -13,14 +13,17 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity { public EntitySnowman(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -2588,7 +2803,12 @@ index 54404dd4b4..eabf5a15aa 100644 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 { + this.goalSelector.a(4, new PathfinderGoalRandomLookaround(this)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new PathfinderGoalNearestAttackableTarget<>(this, EntityInsentient.class, 10, true, false, (entityliving) -> { + return entityliving instanceof IMonster; + })); +@@ -74,6 +77,7 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity { return; } @@ -2596,7 +2816,7 @@ index 54404dd4b4..eabf5a15aa 100644 IBlockData iblockdata = Blocks.SNOW.getBlockData(); for (int l = 0; l < 4; ++l) { -@@ -133,7 +136,7 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity { +@@ -133,7 +137,7 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity { itemstack.subtract(1); } } @@ -2606,10 +2826,10 @@ index 54404dd4b4..eabf5a15aa 100644 } diff --git a/src/main/java/net/minecraft/server/EntitySpider.java b/src/main/java/net/minecraft/server/EntitySpider.java -index d02db56595..c38ae96f23 100644 +index d02db5659..3cbdd44b9 100644 --- a/src/main/java/net/minecraft/server/EntitySpider.java +++ b/src/main/java/net/minecraft/server/EntitySpider.java -@@ -9,11 +9,13 @@ public class EntitySpider extends EntityMonster { +@@ -9,16 +9,19 @@ public class EntitySpider extends EntityMonster { public EntitySpider(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -2623,8 +2843,14 @@ index d02db56595..c38ae96f23 100644 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)); + this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); + this.goalSelector.a(6, new PathfinderGoalRandomLookaround(this)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, new Class[0])); + this.targetSelector.a(2, new EntitySpider.PathfinderGoalSpiderNearestAttackableTarget<>(this, EntityHuman.class)); + this.targetSelector.a(3, new EntitySpider.PathfinderGoalSpiderNearestAttackableTarget<>(this, EntityIronGolem.class)); diff --git a/src/main/java/net/minecraft/server/EntitySquid.java b/src/main/java/net/minecraft/server/EntitySquid.java -index 92efe4e7f5..eb74f5d127 100644 +index 92efe4e7f..eb74f5d12 100644 --- a/src/main/java/net/minecraft/server/EntitySquid.java +++ b/src/main/java/net/minecraft/server/EntitySquid.java @@ -21,14 +21,16 @@ public class EntitySquid extends EntityWaterAnimal { @@ -2713,7 +2939,7 @@ index 92efe4e7f5..eb74f5d127 100644 } } diff --git a/src/main/java/net/minecraft/server/EntityTameableAnimal.java b/src/main/java/net/minecraft/server/EntityTameableAnimal.java -index 9b2eea71cc..4ac12ebe2c 100644 +index 9b2eea71c..4ac12ebe2 100644 --- a/src/main/java/net/minecraft/server/EntityTameableAnimal.java +++ b/src/main/java/net/minecraft/server/EntityTameableAnimal.java @@ -110,6 +110,12 @@ public abstract class EntityTameableAnimal extends EntityAnimal { @@ -2730,7 +2956,7 @@ index 9b2eea71cc..4ac12ebe2c 100644 this.setTamed(true); this.setOwnerUUID(entityhuman.getUniqueID()); diff --git a/src/main/java/net/minecraft/server/EntityTropicalFish.java b/src/main/java/net/minecraft/server/EntityTropicalFish.java -index ef8f373bea..b00ae70cb3 100644 +index ef8f373be..b00ae70cb 100644 --- a/src/main/java/net/minecraft/server/EntityTropicalFish.java +++ b/src/main/java/net/minecraft/server/EntityTropicalFish.java @@ -17,6 +17,7 @@ public class EntityTropicalFish extends EntityFishSchool { @@ -2742,7 +2968,7 @@ index ef8f373bea..b00ae70cb3 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityTurtle.java b/src/main/java/net/minecraft/server/EntityTurtle.java -index dd02cb3485..f18261197c 100644 +index dd02cb348..f18261197 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 { @@ -2869,7 +3095,7 @@ index dd02cb3485..f18261197c 100644 if (this.h == ControllerMove.Operation.MOVE_TO && !this.i.getNavigation().m()) { double d0 = this.b - this.i.locX(); diff --git a/src/main/java/net/minecraft/server/EntityTypes.java b/src/main/java/net/minecraft/server/EntityTypes.java -index 2157f08997..0dd9897b99 100644 +index 2157f0899..0dd9897b9 100644 --- a/src/main/java/net/minecraft/server/EntityTypes.java +++ b/src/main/java/net/minecraft/server/EntityTypes.java @@ -267,6 +267,10 @@ public class EntityTypes { @@ -2884,7 +3110,7 @@ index 2157f08997..0dd9897b99 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 cf274666c7..3ea0b47593 100644 +index cf274666c..75dab248b 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 { @@ -2895,7 +3121,7 @@ index cf274666c7..3ea0b47593 100644 this.moveController = new EntityVex.c(this); this.f = 3; } -@@ -42,6 +43,7 @@ public class EntityVex extends EntityMonster { +@@ -42,10 +43,12 @@ public class EntityVex extends EntityMonster { protected void initPathfinder() { super.initPathfinder(); this.goalSelector.a(0, new PathfinderGoalFloat(this)); @@ -2903,7 +3129,12 @@ index cf274666c7..3ea0b47593 100644 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 { + this.goalSelector.a(10, new PathfinderGoalLookAtPlayer(this, EntityInsentient.class, 8.0F)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[]{EntityRaider.class})).a(new Class[0])); // CraftBukkit - decompile error + this.targetSelector.a(2, new EntityVex.b(this)); + this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); +@@ -287,14 +290,22 @@ public class EntityVex extends EntityMonster { } } @@ -2928,11 +3159,41 @@ index cf274666c7..3ea0b47593 100644 if (this.h == ControllerMove.Operation.MOVE_TO) { 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/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java +index 6e0020ae0..7e7818903 100644 +--- a/src/main/java/net/minecraft/server/EntityVillager.java ++++ b/src/main/java/net/minecraft/server/EntityVillager.java +@@ -68,6 +68,13 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation + this.bo = this.a(new Dynamic(DynamicOpsNBT.a, new NBTTagCompound())); + } + ++ // Purpur start ++ @Override ++ protected void initPathfinder() { ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur ++ } ++ // Purpur end ++ + @Override + public BehaviorController getBehaviorController() { + return (BehaviorController) super.getBehaviorController(); // CraftBukkit - decompile error +diff --git a/src/main/java/net/minecraft/server/EntityVillagerTrader.java b/src/main/java/net/minecraft/server/EntityVillagerTrader.java +index 2ad8dba5c..d46488447 100644 +--- a/src/main/java/net/minecraft/server/EntityVillagerTrader.java ++++ b/src/main/java/net/minecraft/server/EntityVillagerTrader.java +@@ -29,6 +29,7 @@ public class EntityVillagerTrader extends EntityVillagerAbstract { + this.goalSelector.a(0, new PathfinderGoalUseItem<>(this, new ItemStack(Items.MILK_BUCKET), SoundEffects.ENTITY_WANDERING_TRADER_REAPPEARED, (entityvillagertrader) -> { + return this.world.isDay() && entityvillagertrader.isInvisible(); + })); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(1, new PathfinderGoalTradeWithPlayer(this)); + this.goalSelector.a(1, new PathfinderGoalAvoidTarget<>(this, EntityZombie.class, 8.0F, 0.5D, 0.5D)); + this.goalSelector.a(1, new PathfinderGoalAvoidTarget<>(this, EntityEvoker.class, 12.0F, 0.5D, 0.5D)); diff --git a/src/main/java/net/minecraft/server/EntityVindicator.java b/src/main/java/net/minecraft/server/EntityVindicator.java -index c974c02e92..e8f76209d7 100644 +index c974c02e9..c8deb00fb 100644 --- a/src/main/java/net/minecraft/server/EntityVindicator.java +++ b/src/main/java/net/minecraft/server/EntityVindicator.java -@@ -15,12 +15,14 @@ public class EntityVindicator extends EntityIllagerAbstract { +@@ -15,16 +15,19 @@ public class EntityVindicator extends EntityIllagerAbstract { public EntityVindicator(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -2947,8 +3208,13 @@ index c974c02e92..e8f76209d7 100644 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)); + this.goalSelector.a(4, new EntityVindicator.c(this)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[]{EntityRaider.class})).a(new Class[0])); // Paper - decompile fix + this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); + this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, true)); diff --git a/src/main/java/net/minecraft/server/EntityWitch.java b/src/main/java/net/minecraft/server/EntityWitch.java -index 7b6b1ad17b..9ef1b9e61c 100644 +index 7b6b1ad17..53de756bb 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 { @@ -2959,7 +3225,7 @@ index 7b6b1ad17b..9ef1b9e61c 100644 } @Override -@@ -30,8 +31,9 @@ public class EntityWitch extends EntityRaider implements IRangedEntity { +@@ -30,12 +31,14 @@ public class EntityWitch extends EntityRaider implements IRangedEntity { this.bz = new PathfinderGoalNearestHealableRaider<>(this, EntityRaider.class, true, (entityliving) -> { return entityliving != null && this.eF() && entityliving.getEntityType() != EntityTypes.WITCH; }); @@ -2971,8 +3237,13 @@ index 7b6b1ad17b..9ef1b9e61c 100644 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)); + this.goalSelector.a(3, new PathfinderGoalRandomLookaround(this)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, new Class[]{EntityRaider.class})); + this.targetSelector.a(2, this.bz); + this.targetSelector.a(3, this.bA); diff --git a/src/main/java/net/minecraft/server/EntityWither.java b/src/main/java/net/minecraft/server/EntityWither.java -index 8977c3516b..3e6c4eff5d 100644 +index 8977c3516..c2e888c7e 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 { @@ -2983,7 +3254,7 @@ index 8977c3516b..3e6c4eff5d 100644 this.bossBattle = (BossBattleServer) (new BossBattleServer(this.getScoreboardDisplayName(), BossBattle.BarColor.PURPLE, BossBattle.BarStyle.PROGRESS)).setDarkenSky(true); this.setHealth(this.getMaxHealth()); this.getNavigation().d(true); -@@ -43,7 +44,8 @@ public class EntityWither extends EntityMonster implements IRangedEntity { +@@ -43,11 +44,13 @@ public class EntityWither extends EntityMonster implements IRangedEntity { @Override protected void initPathfinder() { @@ -2993,8 +3264,13 @@ index 8977c3516b..3e6c4eff5d 100644 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)); + this.goalSelector.a(7, new PathfinderGoalRandomLookaround(this)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this, new Class[0])); + this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityInsentient.class, 0, false, false, EntityWither.bG)); + } diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java -index db15d5e0a2..738a9e1dbc 100644 +index db15d5e0a..3e2c4c732 100644 --- a/src/main/java/net/minecraft/server/EntityWolf.java +++ b/src/main/java/net/minecraft/server/EntityWolf.java @@ -27,6 +27,7 @@ public class EntityWolf extends EntityTameableAnimal { @@ -3013,7 +3289,15 @@ index db15d5e0a2..738a9e1dbc 100644 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)); -@@ -433,6 +435,13 @@ public class EntityWolf extends EntityTameableAnimal { +@@ -44,6 +46,7 @@ public class EntityWolf extends EntityTameableAnimal { + this.goalSelector.a(9, new PathfinderGoalBeg(this, 8.0F)); + this.goalSelector.a(10, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); + this.goalSelector.a(10, new PathfinderGoalRandomLookaround(this)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new PathfinderGoalOwnerHurtByTarget(this)); + this.targetSelector.a(2, new PathfinderGoalOwnerHurtTarget(this)); + this.targetSelector.a(3, (new PathfinderGoalHurtByTarget(this, new Class[0])).a(new Class[0])); // CraftBukkit - decompile error +@@ -433,6 +436,13 @@ public class EntityWolf extends EntityTameableAnimal { return !this.isAngry() && super.a(entityhuman); } @@ -3028,7 +3312,7 @@ index db15d5e0a2..738a9e1dbc 100644 private final EntityWolf j; diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java -index 8635d4f40c..6139281e5b 100644 +index 8635d4f40..d4672ff35 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java @@ -37,6 +37,7 @@ public class EntityZombie extends EntityMonster { @@ -3047,8 +3331,16 @@ index 8635d4f40c..6139281e5b 100644 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)); +@@ -56,6 +58,7 @@ public class EntityZombie extends EntityMonster { + this.goalSelector.a(2, new PathfinderGoalZombieAttack(this, 1.0D, false)); + this.goalSelector.a(6, new PathfinderGoalMoveThroughVillage(this, 1.0D, true, 4, this::ey)); + this.goalSelector.a(7, new PathfinderGoalRandomStrollLand(this, 1.0D)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, (new PathfinderGoalHurtByTarget(this, new Class[0])).a(EntityPigZombie.class)); + this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); + if ( world.spigotConfig.zombieAggressiveTowardsVillager ) this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, false)); // Spigot diff --git a/src/main/java/net/minecraft/server/EntityZombieHusk.java b/src/main/java/net/minecraft/server/EntityZombieHusk.java -index da8446d05d..350aaaeb0d 100644 +index da8446d05..350aaaeb0 100644 --- a/src/main/java/net/minecraft/server/EntityZombieHusk.java +++ b/src/main/java/net/minecraft/server/EntityZombieHusk.java @@ -6,6 +6,7 @@ public class EntityZombieHusk extends EntityZombie { @@ -3060,7 +3352,7 @@ index da8446d05d..350aaaeb0d 100644 public static boolean b(EntityTypes entitytypes, GeneratorAccess generatoraccess, EnumMobSpawn enummobspawn, BlockPosition blockposition, Random random) { diff --git a/src/main/java/net/minecraft/server/EntityZombieVillager.java b/src/main/java/net/minecraft/server/EntityZombieVillager.java -index 8082fa617a..0c51c8dea1 100644 +index 8082fa617..0c51c8dea 100644 --- a/src/main/java/net/minecraft/server/EntityZombieVillager.java +++ b/src/main/java/net/minecraft/server/EntityZombieVillager.java @@ -22,6 +22,7 @@ public class EntityZombieVillager extends EntityZombie implements VillagerDataHo @@ -3081,7 +3373,7 @@ index 8082fa617a..0c51c8dea1 100644 } diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSwell.java b/src/main/java/net/minecraft/server/PathfinderGoalSwell.java -index e07c7674a5..3c077b6870 100644 +index e07c7674a..3c077b687 100644 --- a/src/main/java/net/minecraft/server/PathfinderGoalSwell.java +++ b/src/main/java/net/minecraft/server/PathfinderGoalSwell.java @@ -4,8 +4,8 @@ import java.util.EnumSet; @@ -3104,7 +3396,7 @@ index e07c7674a5..3c077b6870 100644 this.a.a(-1); } else if (this.a.h((Entity) this.b) > 49.0D) { diff --git a/src/main/java/net/minecraft/server/Vec3D.java b/src/main/java/net/minecraft/server/Vec3D.java -index 0c7f094e54..212af252be 100644 +index 0c7f094e5..212af252b 100644 --- a/src/main/java/net/minecraft/server/Vec3D.java +++ b/src/main/java/net/minecraft/server/Vec3D.java @@ -89,6 +89,7 @@ public class Vec3D implements IPosition { @@ -3116,7 +3408,7 @@ index 0c7f094e54..212af252be 100644 return new Vec3D(this.x * d0, this.y * d1, this.z * d2); } diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 960361ff74..c4955fae62 100644 +index 960361ff7..c4955fae6 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -131,6 +131,11 @@ public class PurpurConfig { @@ -3257,7 +3549,7 @@ index 960361ff74..c4955fae62 100644 } diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java b/src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java new file mode 100644 -index 0000000000..7c79e23d34 +index 000000000..7c79e23d3 --- /dev/null +++ b/src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java @@ -0,0 +1,75 @@ @@ -3338,7 +3630,7 @@ index 0000000000..7c79e23d34 +} diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java new file mode 100644 -index 0000000000..cc2956f175 +index 000000000..cc2956f17 --- /dev/null +++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java @@ -0,0 +1,77 @@ @@ -3421,7 +3713,7 @@ index 0000000000..cc2956f175 +} diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java new file mode 100644 -index 0000000000..dc43fef37d +index 000000000..dc43fef37 --- /dev/null +++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java @@ -0,0 +1,62 @@ @@ -3489,7 +3781,7 @@ index 0000000000..dc43fef37d +} diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlyingWithSpacebar.java b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlyingWithSpacebar.java new file mode 100644 -index 0000000000..f8b3310b84 +index 000000000..f8b3310b8 --- /dev/null +++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlyingWithSpacebar.java @@ -0,0 +1,65 @@ @@ -3560,7 +3852,7 @@ index 0000000000..f8b3310b84 +} diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java new file mode 100644 -index 0000000000..74ff48259c +index 000000000..74ff48259 --- /dev/null +++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java @@ -0,0 +1,42 @@ @@ -3608,7 +3900,7 @@ index 0000000000..74ff48259c +} 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..e3a9fd9d21 +index 000000000..e3a9fd9d2 --- /dev/null +++ b/src/main/java/net/pl3x/purpur/pathfinder/PathfinderGoalHasRider.java @@ -0,0 +1,20 @@ @@ -3633,7 +3925,7 @@ index 0000000000..e3a9fd9d21 + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 33f56b85ea..ffd1372284 100644 +index 33f56b85e..ffd137228 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -723,5 +723,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -3653,7 +3945,7 @@ index 33f56b85ea..ffd1372284 100644 // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java -index 56c233872b..b19970c883 100644 +index 56c233872..b19970c88 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java @@ -75,4 +75,16 @@ public abstract class CraftMob extends CraftLivingEntity implements Mob { diff --git a/patches/server/0011-Make-giants-naturally-spawn-and-have-AI.patch b/patches/server/0011-Make-giants-naturally-spawn-and-have-AI.patch index 82eb7eb6d..69fb637dd 100644 --- a/patches/server/0011-Make-giants-naturally-spawn-and-have-AI.patch +++ b/patches/server/0011-Make-giants-naturally-spawn-and-have-AI.patch @@ -1,16 +1,16 @@ -From 6538d3e373f0bc9b0e65ac3c1a60047dab92a874 Mon Sep 17 00:00:00 2001 +From 14e75a22b2727e6dee6075860a42f6855535490d Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 12 May 2019 00:43:12 -0500 Subject: [PATCH] Make giants naturally spawn and have AI --- .../java/net/minecraft/server/BiomeBase.java | 1 + - .../java/net/minecraft/server/Biomes.java | 25 ++++++++++ - .../minecraft/server/EntityGiantZombie.java | 48 ++++++++++++++++++- + .../java/net/minecraft/server/Biomes.java | 25 ++++++++++++ + .../minecraft/server/EntityGiantZombie.java | 39 +++++++++++++++++-- .../minecraft/server/EntityInsentient.java | 2 + .../net/minecraft/server/SpawnerCreature.java | 8 ++++ - .../java/net/pl3x/purpur/PurpurConfig.java | 7 +++ - 6 files changed, 89 insertions(+), 2 deletions(-) + .../java/net/pl3x/purpur/PurpurConfig.java | 7 ++++ + 6 files changed, 78 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java index 0102a170d..963709846 100644 @@ -60,10 +60,10 @@ index 12742870c..d1f8695fe 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityGiantZombie.java b/src/main/java/net/minecraft/server/EntityGiantZombie.java -index b7e2022b1..c2408e721 100644 +index 12a96750c..4aaf4ea6c 100644 --- a/src/main/java/net/minecraft/server/EntityGiantZombie.java +++ b/src/main/java/net/minecraft/server/EntityGiantZombie.java -@@ -21,11 +21,55 @@ public class EntityGiantZombie extends EntityMonster { +@@ -21,14 +21,27 @@ public class EntityGiantZombie extends EntityMonster { super.initAttributes(); this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(100.0D); this.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).setValue(0.5D); @@ -71,30 +71,33 @@ index b7e2022b1..c2408e721 100644 + this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(12.0D); // Purpur - match ravager damage } -+ // Purpur start -+ @Override -+ protected void initPathfinder() { + // Purpur start + @Override + protected void initPathfinder() { +- this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur +- this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + if (net.pl3x.purpur.PurpurConfig.giantsHaveAI) { + this.goalSelector.a(0, new PathfinderGoalFloat(this)); ++ this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, 1.0D, false)); + this.goalSelector.a(7, new PathfinderGoalRandomStrollLand(this, 1.0D)); + this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 16.0F)); + this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this)); + this.goalSelector.a(5, new PathfinderGoalMoveTowardsRestriction(this, 1.0D)); ++ this.targetSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + this.targetSelector.a(1, new PathfinderGoalHurtByTarget(this).a(EntityPigZombie.class)); + this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); + this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillager.class, false)); + this.targetSelector.a(4, new PathfinderGoalNearestAttackableTarget<>(this, EntityIronGolem.class, true)); + this.targetSelector.a(5, new PathfinderGoalNearestAttackableTarget<>(this, EntityTurtle.class, true)); + } -+ } -+ -+ @Override -+ public float dp() { // jump height -+ // make giants jump as high as everything else relative to their size -+ // 1.0 makes bottom of feet about as high as their waist when they jump -+ return 1.0F; -+ } + } + + @Override +@@ -37,10 +50,28 @@ public class EntityGiantZombie extends EntityMonster { + // 1.0 makes bottom of feet about as high as their waist when they jump + return 1.0F; + } + + @Override + public GroupDataEntity prepare(GeneratorAccess world, DifficultyDamageScaler difficulty, EnumMobSpawn enummobspawn, GroupDataEntity groupDataEntity, NBTTagCompound nbt) { @@ -113,8 +116,8 @@ index b7e2022b1..c2408e721 100644 + setSlot(EnumItemSlot.MAINHAND, new ItemStack(Items.IRON_SWORD)); + } + } -+ // Purpur end -+ + // Purpur end + @Override public float a(BlockPosition blockposition, IWorldReader iworldreader) { - return iworldreader.w(blockposition) - 0.5F; diff --git a/patches/server/0035-Fix-pig-zombies-MC-56653.patch b/patches/server/0035-Fix-pig-zombies-MC-56653.patch index 533b8d70e..3c65919f4 100644 --- a/patches/server/0035-Fix-pig-zombies-MC-56653.patch +++ b/patches/server/0035-Fix-pig-zombies-MC-56653.patch @@ -1,4 +1,4 @@ -From 251d5327835fdede67ecee55e56f02395deabe36 Mon Sep 17 00:00:00 2001 +From 25737109224f0f03d2b5b05312c0a31b3952c424 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Tue, 9 Jul 2019 20:56:47 -0500 Subject: [PATCH] Fix pig zombies (MC-56653) @@ -9,10 +9,10 @@ Subject: [PATCH] Fix pig zombies (MC-56653) 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java -index 8d57c5f1b5..0a0ecaf197 100644 +index 3321e2257..9938e8a5f 100644 --- a/src/main/java/net/minecraft/server/EntityPigZombie.java +++ b/src/main/java/net/minecraft/server/EntityPigZombie.java -@@ -139,6 +139,7 @@ public class EntityPigZombie extends EntityZombie { +@@ -140,6 +140,7 @@ public class EntityPigZombie extends EntityZombie { boolean result = super.damageEntity(damagesource, f); if (result && entity instanceof EntityHuman && !((EntityHuman) entity).isCreative() && this.hasLineOfSight(entity)) { @@ -20,7 +20,7 @@ index 8d57c5f1b5..0a0ecaf197 100644 this.i((EntityLiving) entity); } -@@ -157,7 +158,7 @@ public class EntityPigZombie extends EntityZombie { +@@ -158,7 +159,7 @@ public class EntityPigZombie extends EntityZombie { this.angerLevel = event.getNewAnger(); // CraftBukkit end this.soundDelay = this.random.nextInt(40); @@ -29,7 +29,7 @@ index 8d57c5f1b5..0a0ecaf197 100644 return true; } -@@ -204,6 +205,12 @@ public class EntityPigZombie extends EntityZombie { +@@ -205,6 +206,12 @@ public class EntityPigZombie extends EntityZombie { return this.eA(); } @@ -43,7 +43,7 @@ index 8d57c5f1b5..0a0ecaf197 100644 public PathfinderGoalAnger(EntityPigZombie entitypigzombie) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 64128359c1..f8755060f1 100644 +index 64128359c..f8755060f 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -116,6 +116,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0040-Ladders-should-not-bypass-cramming-gamerule.patch b/patches/server/0040-Ladders-should-not-bypass-cramming-gamerule.patch index 9269c953a..b60795c1f 100644 --- a/patches/server/0040-Ladders-should-not-bypass-cramming-gamerule.patch +++ b/patches/server/0040-Ladders-should-not-bypass-cramming-gamerule.patch @@ -1,4 +1,4 @@ -From b83d33f69a3f2665db1515cac7a598bf539499cb Mon Sep 17 00:00:00 2001 +From 62f9b4c2a2a6b774754aaa30a8949001b3a57586 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 21 Jul 2019 18:06:20 -0500 Subject: [PATCH] Ladders should not bypass cramming gamerule @@ -17,7 +17,7 @@ Subject: [PATCH] Ladders should not bypass cramming gamerule 10 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index 5a5531c10..416eb5d77 100644 +index 2aa79391a..3be37a100 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -1509,6 +1509,10 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -58,7 +58,7 @@ index b19028fa8..56bdaf0e0 100644 } diff --git a/src/main/java/net/minecraft/server/EntityBoat.java b/src/main/java/net/minecraft/server/EntityBoat.java -index 399fdf2f0..cb1156901 100644 +index fdf306e80..563fc8ced 100644 --- a/src/main/java/net/minecraft/server/EntityBoat.java +++ b/src/main/java/net/minecraft/server/EntityBoat.java @@ -98,7 +98,7 @@ public class EntityBoat extends Entity { @@ -71,10 +71,10 @@ index 399fdf2f0..cb1156901 100644 } diff --git a/src/main/java/net/minecraft/server/EntityHorseAbstract.java b/src/main/java/net/minecraft/server/EntityHorseAbstract.java -index 5cd46c747..c02d2afbe 100644 +index dcfbc2313..ba5805de5 100644 --- a/src/main/java/net/minecraft/server/EntityHorseAbstract.java +++ b/src/main/java/net/minecraft/server/EntityHorseAbstract.java -@@ -165,7 +165,7 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven +@@ -173,7 +173,7 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven } @Override @@ -110,7 +110,7 @@ index 38948133e..31cfac0c8 100644 @Override diff --git a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java -index 5abd8a181..2aa8eb407 100644 +index 1b982a510..7ff7844d0 100644 --- a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java +++ b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java @@ -106,7 +106,7 @@ public abstract class EntityMinecartAbstract extends Entity { diff --git a/patches/server/0042-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0042-Implement-configurable-search-radius-for-villagers-t.patch index 5dbcfa252..e32d18672 100644 --- a/patches/server/0042-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0042-Implement-configurable-search-radius-for-villagers-t.patch @@ -1,4 +1,4 @@ -From b7be946d6da6ef9731a126cb8d881540d3b729d7 Mon Sep 17 00:00:00 2001 +From 52098952462100f7b41d327425281338603608e1 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Mon, 22 Jul 2019 17:32:17 -0500 Subject: [PATCH] Implement configurable search radius for villagers to spawn @@ -10,7 +10,7 @@ Subject: [PATCH] Implement configurable search radius for villagers to spawn 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index 5727230058..daa9544453 100644 +index 7e7818903..d7f7a0b48 100644 --- a/src/main/java/net/minecraft/server/EntityVillager.java +++ b/src/main/java/net/minecraft/server/EntityVillager.java @@ -12,18 +12,14 @@ import java.util.List; @@ -32,7 +32,7 @@ index 5727230058..daa9544453 100644 import org.bukkit.event.entity.VillagerReplenishTradeEvent; // CraftBukkit end -@@ -874,6 +870,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation +@@ -881,6 +877,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation @Nullable private EntityIronGolem fb() { @@ -41,7 +41,7 @@ index 5727230058..daa9544453 100644 int i = 0; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 66dd66f062..6cc6d8015f 100644 +index 66dd66f06..6cc6d8015 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -136,6 +136,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0044-Implement-configurable-villager-brain-ticks.patch b/patches/server/0044-Implement-configurable-villager-brain-ticks.patch index 7c55266b1..c0ec71a1c 100644 --- a/patches/server/0044-Implement-configurable-villager-brain-ticks.patch +++ b/patches/server/0044-Implement-configurable-villager-brain-ticks.patch @@ -1,4 +1,4 @@ -From d744f9a25cb9abcacac69541ced6cc0bf4acf046 Mon Sep 17 00:00:00 2001 +From d499ebe19055966a7138a8070538698b7b31397e Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Tue, 23 Jul 2019 08:28:21 -0500 Subject: [PATCH] Implement configurable villager brain ticks @@ -9,7 +9,7 @@ Subject: [PATCH] Implement configurable villager brain ticks 2 files changed, 13 insertions(+) diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index daa9544453..7d146d9783 100644 +index d7f7a0b48..a0137c7af 100644 --- a/src/main/java/net/minecraft/server/EntityVillager.java +++ b/src/main/java/net/minecraft/server/EntityVillager.java @@ -49,6 +49,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation @@ -27,8 +27,8 @@ index daa9544453..7d146d9783 100644 + brainTickOffset = getRandom().nextInt(100); // Purpur } - @Override -@@ -141,6 +143,10 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation + // Purpur start +@@ -148,6 +150,10 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation @Override protected void mobTick() { this.world.getMethodProfiler().enter("brain"); @@ -40,7 +40,7 @@ index daa9544453..7d146d9783 100644 this.world.getMethodProfiler().exit(); if (!this.et() && this.bB > 0) { diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index de0cf5c55e..c35d19f66f 100644 +index de0cf5c55..c35d19f66 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -209,6 +209,13 @@ public class PurpurConfig { diff --git a/patches/server/0060-Allow-leashing-villagers.patch b/patches/server/0060-Allow-leashing-villagers.patch index 4db156f22..9d1816d5c 100644 --- a/patches/server/0060-Allow-leashing-villagers.patch +++ b/patches/server/0060-Allow-leashing-villagers.patch @@ -1,4 +1,4 @@ -From 5951f8637bdb457ae59201563ce04832cb1595ae Mon Sep 17 00:00:00 2001 +From 35e3756e3ce2321954c38217ec665122095ce4cf Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 3 Oct 2019 18:08:03 -0500 Subject: [PATCH] Allow leashing villagers @@ -22,10 +22,10 @@ index 97081f6a4..491db81ba 100644 if (CraftEventFactory.callPlayerUnleashEntityEvent(this, entityhuman).isCancelled()) { ((EntityPlayer) entityhuman).playerConnection.sendPacket(new PacketPlayOutAttachEntity(this, this.getLeashHolder())); diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index 10625b3ab..cd8da30a1 100644 +index a0137c7af..a53decb2c 100644 --- a/src/main/java/net/minecraft/server/EntityVillager.java +++ b/src/main/java/net/minecraft/server/EntityVillager.java -@@ -980,4 +980,11 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation +@@ -987,4 +987,11 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation return optional.isPresent() && optional1.isPresent() ? i - ((MinecraftSerializableLong) optional.get()).a() < 24000L && i - ((MinecraftSerializableLong) optional1.get()).a() < 36000L : false; } diff --git a/patches/server/0065-Add-more-llama-API.patch b/patches/server/0065-Add-more-llama-API.patch index 318c11c8a..6483d0121 100644 --- a/patches/server/0065-Add-more-llama-API.patch +++ b/patches/server/0065-Add-more-llama-API.patch @@ -1,4 +1,4 @@ -From 0eb1d9482de3f315ebead0cac4ae90b1b152ca03 Mon Sep 17 00:00:00 2001 +From cb0af57ced6d7902fc27ec8c692f4918d5448c73 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Fri, 18 Oct 2019 22:50:12 -0500 Subject: [PATCH] Add more llama API @@ -11,7 +11,7 @@ Subject: [PATCH] Add more llama API 4 files changed, 63 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java -index ec0f57d90..c9d8a4e13 100644 +index 8d14c1817..03424ccf2 100644 --- a/src/main/java/net/minecraft/server/EntityLlama.java +++ b/src/main/java/net/minecraft/server/EntityLlama.java @@ -12,7 +12,8 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn @@ -46,7 +46,7 @@ index ec0f57d90..c9d8a4e13 100644 this.eI(); } -@@ -403,19 +408,24 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn +@@ -411,19 +416,24 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn } } @@ -71,7 +71,7 @@ index ec0f57d90..c9d8a4e13 100644 public boolean fc() { return this.bK != null; } -@@ -425,8 +435,7 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn +@@ -433,8 +443,7 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn return this.bJ != null; } diff --git a/patches/server/0068-Add-more-evoker-API.patch b/patches/server/0068-Add-more-evoker-API.patch index 3a1aa66ee..16a0ced11 100644 --- a/patches/server/0068-Add-more-evoker-API.patch +++ b/patches/server/0068-Add-more-evoker-API.patch @@ -1,4 +1,4 @@ -From 5b5b757044b8fe16128b67d4e858c3aa510d36d1 Mon Sep 17 00:00:00 2001 +From 47c58f252b1b581c205adf393344b7af163e8eb1 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 19 Oct 2019 00:29:02 -0500 Subject: [PATCH] Add more evoker API @@ -9,10 +9,10 @@ Subject: [PATCH] Add more evoker API 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraft/server/EntityEvoker.java b/src/main/java/net/minecraft/server/EntityEvoker.java -index 3560c95298..ed0111a722 100644 +index e60a42829..e3c80ad3f 100644 --- a/src/main/java/net/minecraft/server/EntityEvoker.java +++ b/src/main/java/net/minecraft/server/EntityEvoker.java -@@ -85,12 +85,14 @@ public class EntityEvoker extends EntityIllagerWizard { +@@ -86,12 +86,14 @@ public class EntityEvoker extends EntityIllagerWizard { return SoundEffects.ENTITY_EVOKER_HURT; } @@ -30,7 +30,7 @@ index 3560c95298..ed0111a722 100644 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEvoker.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEvoker.java -index 0636d26473..4ccb938909 100644 +index 0636d2647..4ccb93890 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEvoker.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEvoker.java @@ -36,4 +36,17 @@ public class CraftEvoker extends CraftSpellcaster implements Evoker { @@ -52,5 +52,5 @@ index 0636d26473..4ccb938909 100644 + // Purpur end } -- -2.24.0.rc1 +2.24.0 diff --git a/patches/server/0072-Add-option-to-allow-iron-golems-to-spawn-in-air.patch b/patches/server/0072-Add-option-to-allow-iron-golems-to-spawn-in-air.patch index 7e9703541..520a2ba64 100644 --- a/patches/server/0072-Add-option-to-allow-iron-golems-to-spawn-in-air.patch +++ b/patches/server/0072-Add-option-to-allow-iron-golems-to-spawn-in-air.patch @@ -1,4 +1,4 @@ -From bd25f55b2b0d9689844b8cc6f6b33718ed8dfefb Mon Sep 17 00:00:00 2001 +From 55c0eb9e453436d84fa0507abd25410a0280f1d1 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 19 Oct 2019 02:20:45 -0500 Subject: [PATCH] Add option to allow iron golems to spawn in air @@ -9,10 +9,10 @@ Subject: [PATCH] Add option to allow iron golems to spawn in air 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minecraft/server/EntityIronGolem.java b/src/main/java/net/minecraft/server/EntityIronGolem.java -index dbdc200ec3..314cb7fcfe 100644 +index 3054e0435..ffdd19c66 100644 --- a/src/main/java/net/minecraft/server/EntityIronGolem.java +++ b/src/main/java/net/minecraft/server/EntityIronGolem.java -@@ -224,7 +224,7 @@ public class EntityIronGolem extends EntityGolem { +@@ -225,7 +225,7 @@ public class EntityIronGolem extends EntityGolem { BlockPosition blockposition1 = blockposition.down(); IBlockData iblockdata = iworldreader.getType(blockposition1); @@ -22,7 +22,7 @@ index dbdc200ec3..314cb7fcfe 100644 } else { for (int i = 1; i < 3; ++i) { diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 7e06cd044e..148fc22ff7 100644 +index 7e06cd044..148fc22ff 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -221,8 +221,10 @@ public class PurpurConfig { diff --git a/patches/server/0080-Phantoms-only-attack-insomniacs.patch b/patches/server/0080-Phantoms-only-attack-insomniacs.patch index 6c94eb288..0da0f0b4f 100644 --- a/patches/server/0080-Phantoms-only-attack-insomniacs.patch +++ b/patches/server/0080-Phantoms-only-attack-insomniacs.patch @@ -1,4 +1,4 @@ -From c01cdfacaaa03c66a34485f1722291bcc07be971 Mon Sep 17 00:00:00 2001 +From b71b29f039e7ac4253de1ee80f21fafa3eeab00f Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Fri, 29 Nov 2019 20:33:41 -0600 Subject: [PATCH] Phantoms only attack insomniacs @@ -10,10 +10,10 @@ Subject: [PATCH] Phantoms only attack insomniacs 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java -index 5cfa69b32..a98453665 100644 +index 18bdc6717..2c1124a66 100644 --- a/src/main/java/net/minecraft/server/EntityPhantom.java +++ b/src/main/java/net/minecraft/server/EntityPhantom.java -@@ -392,8 +392,11 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -393,8 +393,11 @@ public class EntityPhantom extends EntityFlying implements IMonster { EntityHuman entityhuman = (EntityHuman) iterator.next(); if (EntityPhantom.this.a((EntityLiving) entityhuman, PathfinderTargetCondition.a)) { diff --git a/patches/server/0081-Villagers-follow-emerald-blocks.patch b/patches/server/0081-Villagers-follow-emerald-blocks.patch index 6ad8800a7..3c901323f 100644 --- a/patches/server/0081-Villagers-follow-emerald-blocks.patch +++ b/patches/server/0081-Villagers-follow-emerald-blocks.patch @@ -1,15 +1,15 @@ -From 48a7b50eaee27e05f1684414d1d21302d5fafa4c Mon Sep 17 00:00:00 2001 +From 37e66685cf13319e5f40f54c06b1ea4a6eea868e Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Fri, 29 Nov 2019 22:10:12 -0600 Subject: [PATCH] Villagers follow emerald blocks --- - src/main/java/net/minecraft/server/EntityVillager.java | 10 ++++++++++ - src/main/java/net/pl3x/purpur/PurpurConfig.java | 2 ++ - 2 files changed, 12 insertions(+) + src/main/java/net/minecraft/server/EntityVillager.java | 4 ++++ + src/main/java/net/pl3x/purpur/PurpurConfig.java | 2 ++ + 2 files changed, 6 insertions(+) diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java -index cd8da30a1..9415abeab 100644 +index a53decb2c..c3d805d07 100644 --- a/src/main/java/net/minecraft/server/EntityVillager.java +++ b/src/main/java/net/minecraft/server/EntityVillager.java @@ -25,6 +25,7 @@ import org.bukkit.event.entity.VillagerReplenishTradeEvent; @@ -20,22 +20,16 @@ index cd8da30a1..9415abeab 100644 private static final DataWatcherObject bz = DataWatcher.a(EntityVillager.class, DataWatcherRegistry.q); public static final Map bx = ImmutableMap.of(Items.BREAD, 4, Items.POTATO, 1, Items.CARROT, 1, Items.BEETROOT, 1); private static final Set bA = ImmutableSet.of(Items.BREAD, Items.POTATO, Items.CARROT, Items.WHEAT, Items.WHEAT_SEEDS, Items.BEETROOT, new Item[]{Items.BEETROOT_SEEDS}); -@@ -66,6 +67,15 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation - brainTickOffset = getRandom().nextInt(100); // Purpur - } - -+ // Purpur start -+ @Override -+ protected void initPathfinder() { +@@ -70,6 +71,9 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation + @Override + protected void initPathfinder() { + this.goalSelector.a(0, new net.pl3x.purpur.pathfinder.PathfinderGoalHasRider(this)); // Purpur + if (net.pl3x.purpur.PurpurConfig.villagersFollowEmeraldBlocks) { + this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.0D, false, TEMPT_ITEMS)); + } -+ } -+ // Purpur end -+ - @Override - public BehaviorController getBehaviorController() { - return (BehaviorController) super.getBehaviorController(); // CraftBukkit - decompile error + } + // Purpur end + diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java index 46dc8cf79..81f41ccc7 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java diff --git a/patches/server/0082-Add-charged-creeper-spawn-chance.patch b/patches/server/0082-Add-charged-creeper-spawn-chance.patch index 315becc7e..6aecba1eb 100644 --- a/patches/server/0082-Add-charged-creeper-spawn-chance.patch +++ b/patches/server/0082-Add-charged-creeper-spawn-chance.patch @@ -1,4 +1,4 @@ -From 0ddcaa13c2b1d7dd3a4f57fec987731661dc1d2e Mon Sep 17 00:00:00 2001 +From ae620aab7f3a4527b34d4a50d1959137f4c5e8a5 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Fri, 29 Nov 2019 22:37:44 -0600 Subject: [PATCH] Add charged creeper spawn chance @@ -9,7 +9,7 @@ Subject: [PATCH] Add charged creeper spawn chance 2 files changed, 21 insertions(+) diff --git a/src/main/java/net/minecraft/server/EntityCreeper.java b/src/main/java/net/minecraft/server/EntityCreeper.java -index d1acd38f9..cc155fa34 100644 +index af7d03e3a..2269c5dfc 100644 --- a/src/main/java/net/minecraft/server/EntityCreeper.java +++ b/src/main/java/net/minecraft/server/EntityCreeper.java @@ -1,11 +1,16 @@ @@ -29,7 +29,7 @@ index d1acd38f9..cc155fa34 100644 // CraftBukkit end public class EntityCreeper extends EntityMonster { -@@ -70,6 +75,17 @@ public class EntityCreeper extends EntityMonster { +@@ -71,6 +76,17 @@ public class EntityCreeper extends EntityMonster { this.datawatcher.register(EntityCreeper.d, false); } diff --git a/patches/server/0088-Add-option-for-zombie-villager-transformation-chance.patch b/patches/server/0088-Add-option-for-zombie-villager-transformation-chance.patch index d9d070994..486012502 100644 --- a/patches/server/0088-Add-option-for-zombie-villager-transformation-chance.patch +++ b/patches/server/0088-Add-option-for-zombie-villager-transformation-chance.patch @@ -1,4 +1,4 @@ -From 733bfd9678905290d1543d825475c93c71dad3b1 Mon Sep 17 00:00:00 2001 +From b7b30eb7a910ad16f455fd8071952320f82096ae Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 19 Dec 2019 16:59:46 -0600 Subject: [PATCH] Add option for zombie villager transformation chance @@ -9,10 +9,10 @@ Subject: [PATCH] Add option for zombie villager transformation chance 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java -index 11171b4a1..b6ec0b34b 100644 +index 71124f9f8..78f6c15b9 100644 --- a/src/main/java/net/minecraft/server/EntityZombie.java +++ b/src/main/java/net/minecraft/server/EntityZombie.java -@@ -457,8 +457,19 @@ public class EntityZombie extends EntityMonster { +@@ -458,8 +458,19 @@ public class EntityZombie extends EntityMonster { @Override public void b(EntityLiving entityliving) { super.b(entityliving); diff --git a/patches/server/0099-Fix-MC-167561-All-players-can-make-a-dog-stand-up-or.patch b/patches/server/0099-Fix-MC-167561-All-players-can-make-a-dog-stand-up-or.patch index 44127e155..cbeb5893a 100644 --- a/patches/server/0099-Fix-MC-167561-All-players-can-make-a-dog-stand-up-or.patch +++ b/patches/server/0099-Fix-MC-167561-All-players-can-make-a-dog-stand-up-or.patch @@ -1,4 +1,4 @@ -From 75194dba0e395c1afad5dac303ea0a6fe16f4f63 Mon Sep 17 00:00:00 2001 +From 991cdb09e0317cb0fd2b3e2b17e007879e62787a Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 30 Jan 2020 01:21:22 -0600 Subject: [PATCH] Fix MC-167561 All players can make a dog stand up or sit down @@ -9,7 +9,7 @@ Subject: [PATCH] Fix MC-167561 All players can make a dog stand up or sit down 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minecraft/server/EntityTameableAnimal.java b/src/main/java/net/minecraft/server/EntityTameableAnimal.java -index 4ac12ebe2c..3f7dde981d 100644 +index 4ac12ebe2..3f7dde981 100644 --- a/src/main/java/net/minecraft/server/EntityTameableAnimal.java +++ b/src/main/java/net/minecraft/server/EntityTameableAnimal.java @@ -141,6 +141,7 @@ public abstract class EntityTameableAnimal extends EntityAnimal { @@ -21,10 +21,10 @@ index 4ac12ebe2c..3f7dde981d 100644 return entityliving == this.getOwner(); } diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java -index 738a9e1dbc..92a56527a4 100644 +index 3e2c4c732..b57c3b347 100644 --- a/src/main/java/net/minecraft/server/EntityWolf.java +++ b/src/main/java/net/minecraft/server/EntityWolf.java -@@ -294,7 +294,7 @@ public class EntityWolf extends EntityTameableAnimal { +@@ -295,7 +295,7 @@ public class EntityWolf extends EntityTameableAnimal { return true; }