From 922fad1dfc9d4f5fd3339eb933e6b39749b876fa Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 12 May 2019 06:42:14 -0500 Subject: [PATCH] Reduce ridables patch by using object inheritance more --- patches/server/0011-Integrate-ridables.patch | 975 ++++-------------- ...e-giants-naturally-spawn-and-have-AI.patch | 21 +- .../server/0016-Pigs-give-saddle-back.patch | 32 +- 3 files changed, 209 insertions(+), 819 deletions(-) diff --git a/patches/server/0011-Integrate-ridables.patch b/patches/server/0011-Integrate-ridables.patch index e7dfede88..b7dc34242 100644 --- a/patches/server/0011-Integrate-ridables.patch +++ b/patches/server/0011-Integrate-ridables.patch @@ -1,56 +1,42 @@ -From 00b6ffb99f648b7920bfdcf2a896820f116108c6 Mon Sep 17 00:00:00 2001 +From bbc58082cd946c920f9856dfc17795e53d1fb651 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Tue, 30 Apr 2019 19:17:21 -0500 Subject: [PATCH] Integrate ridables --- .../server/ControllerLookDolphin.java | 4 +- - .../java/net/minecraft/server/Entity.java | 15 +++- - .../net/minecraft/server/EntityChicken.java | 14 +++- - .../java/net/minecraft/server/EntityCow.java | 11 +++ - .../net/minecraft/server/EntityCreeper.java | 11 +++ - .../net/minecraft/server/EntityDolphin.java | 24 +++++- + .../java/net/minecraft/server/Entity.java | 9 ++- + .../net/minecraft/server/EntityAgeable.java | 2 +- + .../net/minecraft/server/EntityChicken.java | 2 +- + .../net/minecraft/server/EntityDolphin.java | 17 +++- .../net/minecraft/server/EntityDrowned.java | 6 +- - .../net/minecraft/server/EntityEnderman.java | 12 +++ - .../net/minecraft/server/EntityEndermite.java | 14 +++- - .../java/net/minecraft/server/EntityFish.java | 30 ++++++-- - .../minecraft/server/EntityGiantZombie.java | 11 +++ - .../net/minecraft/server/EntityGuardian.java | 34 ++++++-- - .../net/minecraft/server/EntityHorse.java | 10 ++- + .../net/minecraft/server/EntityEndermite.java | 2 +- + .../java/net/minecraft/server/EntityFish.java | 20 +++-- + .../minecraft/server/EntityGiantZombie.java | 1 + + .../net/minecraft/server/EntityGuardian.java | 26 +++++-- + .../net/minecraft/server/EntityHorse.java | 2 +- .../minecraft/server/EntityHorseAbstract.java | 4 +- - .../server/EntityHorseChestedAbstract.java | 18 +++-- - .../minecraft/server/EntityHorseDonkey.java | 3 + - .../net/minecraft/server/EntityHorseMule.java | 3 + - .../minecraft/server/EntityHorseSkeleton.java | 15 ++-- - .../minecraft/server/EntityHorseZombie.java | 12 +-- + .../server/EntityHorseChestedAbstract.java | 10 ++- + .../minecraft/server/EntityHorseSkeleton.java | 6 +- + .../minecraft/server/EntityHorseZombie.java | 6 +- .../net/minecraft/server/EntityHuman.java | 14 +++- - .../minecraft/server/EntityInsentient.java | 39 ++++++++++ - .../net/minecraft/server/EntityIronGolem.java | 12 +++ - .../net/minecraft/server/EntityLiving.java | 28 +++++-- - .../net/minecraft/server/EntityLlama.java | 37 ++++++++- - .../minecraft/server/EntityMushroomCow.java | 11 +++ - .../net/minecraft/server/EntityOcelot.java | 11 +++ - .../net/minecraft/server/EntityPhantom.java | 36 +++++++-- - .../java/net/minecraft/server/EntityPig.java | 11 +++ - .../net/minecraft/server/EntityPolarBear.java | 12 +++ + .../minecraft/server/EntityInsentient.java | 54 ++++++++++++- + .../net/minecraft/server/EntityLiving.java | 24 ++++-- + .../net/minecraft/server/EntityLlama.java | 36 ++++++++- + .../net/minecraft/server/EntityPhantom.java | 31 ++++++-- + .../java/net/minecraft/server/EntityPig.java | 33 ++++---- .../net/minecraft/server/EntityRabbit.java | 2 +- - .../net/minecraft/server/EntitySheep.java | 11 +++ - .../minecraft/server/EntitySilverfish.java | 12 +++ - .../server/EntitySkeletonAbstract.java | 12 +++ .../net/minecraft/server/EntitySlime.java | 2 +- - .../net/minecraft/server/EntitySnowman.java | 12 +++ - .../net/minecraft/server/EntitySpider.java | 12 +++ - .../net/minecraft/server/EntitySquid.java | 54 +++++++++++++ + .../net/minecraft/server/EntitySnowman.java | 1 + + .../net/minecraft/server/EntitySquid.java | 46 +++++++++++ .../server/EntityTameableAnimal.java | 6 ++ .../net/minecraft/server/EntityTypes.java | 6 ++ - .../java/net/minecraft/server/EntityWolf.java | 11 +++ - .../net/minecraft/server/EntityZombie.java | 12 +++ .../purpur/controller/ControllerLookWASD.java | 46 +++++++++++ .../purpur/controller/ControllerMoveWASD.java | 77 +++++++++++++++++++ .../controller/ControllerMoveWASDFlying.java | 58 ++++++++++++++ .../controller/ControllerMoveWASDWater.java | 42 ++++++++++ .../craftbukkit/entity/CraftLivingEntity.java | 10 +++ - 46 files changed, 789 insertions(+), 58 deletions(-) + 32 files changed, 533 insertions(+), 72 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 @@ -78,14 +64,14 @@ index 454627f65..df3d6cf28 100644 this.d = false; this.a.aM = this.a(this.a.aM, 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 9834a8928..1b38ac55c 100644 +index 9834a8928..cfb2192b9 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -101,6 +101,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke private int id; public boolean i; public final boolean blocksEntitySpawning() { return this.i; } // Paper - OBFHELPER public final List passengers; -+ private EntityHuman rider; // Purpur ++ private EntityHuman rider; public EntityHuman getRider() { return rider; } // Purpur protected int j; private Entity vehicle; public boolean attachedToPlayer; @@ -98,20 +84,7 @@ index 9834a8928..1b38ac55c 100644 public boolean noclip; public float M; protected final Random random; -@@ -2015,6 +2016,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke - return this.world.getCubes(this, this.d(entitypose)); - } - -+ // Purpur start -+ public EntityHuman getRider() { -+ return rider; -+ } -+ // Purpur end -+ - public void ejectPassengers() { - for (int i = this.passengers.size() - 1; i >= 0; --i) { - ((Entity) this.passengers.get(i)).stopRiding(); -@@ -2073,6 +2080,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2073,6 +2074,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke // Spigot end if (!this.world.isClientSide && entity instanceof EntityHuman && !(this.getRidingPassenger() instanceof EntityHuman)) { this.passengers.add(0, entity); @@ -119,7 +92,7 @@ index 9834a8928..1b38ac55c 100644 } else { this.passengers.add(entity); } -@@ -2111,6 +2119,11 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke +@@ -2111,6 +2113,11 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke return false; } // Spigot end @@ -131,129 +104,37 @@ index 9834a8928..1b38ac55c 100644 this.passengers.remove(entity); entity.j = 60; } -diff --git a/src/main/java/net/minecraft/server/EntityChicken.java b/src/main/java/net/minecraft/server/EntityChicken.java -index a374c3051..600eb1335 100644 ---- a/src/main/java/net/minecraft/server/EntityChicken.java -+++ b/src/main/java/net/minecraft/server/EntityChicken.java -@@ -15,6 +15,11 @@ public class EntityChicken extends EntityAnimal { - super(entitytypes, world); - this.eggLayTime = this.random.nextInt(6000) + 6000; - this.a(PathType.WATER, 0.0F); -+ // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; -+ // Purpur end +diff --git a/src/main/java/net/minecraft/server/EntityAgeable.java b/src/main/java/net/minecraft/server/EntityAgeable.java +index e87754ef3..553245ebe 100644 +--- a/src/main/java/net/minecraft/server/EntityAgeable.java ++++ b/src/main/java/net/minecraft/server/EntityAgeable.java +@@ -70,7 +70,7 @@ public abstract class EntityAgeable extends EntityCreature { + + return true; + } else { +- return false; ++ return super.a(entityhuman, enumhand); // Purpur + } } - @Override -@@ -65,7 +70,7 @@ public class EntityChicken extends EntityAnimal { +diff --git a/src/main/java/net/minecraft/server/EntityChicken.java b/src/main/java/net/minecraft/server/EntityChicken.java +index a374c3051..9af1c2a09 100644 +--- a/src/main/java/net/minecraft/server/EntityChicken.java ++++ b/src/main/java/net/minecraft/server/EntityChicken.java +@@ -65,7 +65,7 @@ public class EntityChicken extends EntityAnimal { } this.bz += this.bE * 2.0F; - if (!this.world.isClientSide && this.isAlive() && !this.isBaby() && !this.isChickenJockey() && --this.eggLayTime <= 0) { -+ if (this.isAlive() && !this.isBaby() && !this.isChickenJockey() && --this.eggLayTime <= 0 && getRider() == null) { // Purpur ++ if (!this.world.isClientSide && this.isAlive() && !this.isBaby() && !this.isChickenJockey() && --this.eggLayTime <= 0 && getRider() == null) { // Purpur this.a(SoundEffects.ENTITY_CHICKEN_EGG, 1.0F, (this.random.nextFloat() - this.random.nextFloat()) * 0.2F + 1.0F); this.forceDrops = true; // CraftBukkit this.a((IMaterial) Items.EGG); -@@ -75,6 +80,13 @@ public class EntityChicken extends EntityAnimal { - - } - -+ // Purpur start - processInteract -+ @Override -+ public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ return super.a(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ // Purpur end -+ - @Override - public void b(float f, float f1) {} - -diff --git a/src/main/java/net/minecraft/server/EntityCow.java b/src/main/java/net/minecraft/server/EntityCow.java -index 4b460a0a7..aa1335b68 100644 ---- a/src/main/java/net/minecraft/server/EntityCow.java -+++ b/src/main/java/net/minecraft/server/EntityCow.java -@@ -13,6 +13,11 @@ public class EntityCow extends EntityAnimal { - - public EntityCow(EntityTypes entitytypes, World world) { - super(entitytypes, world); -+ // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - @Override -@@ -61,6 +66,12 @@ public class EntityCow extends EntityAnimal { - - @Override - public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur start - processInteract -+ return processInteract(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ -+ private boolean processInteract(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur end - ItemStack itemstack = entityhuman.b(enumhand); - - if (itemstack.getItem() == Items.BUCKET && !entityhuman.abilities.canInstantlyBuild && !this.isBaby()) { -diff --git a/src/main/java/net/minecraft/server/EntityCreeper.java b/src/main/java/net/minecraft/server/EntityCreeper.java -index 0c2c3c730..fa92d23a8 100644 ---- a/src/main/java/net/minecraft/server/EntityCreeper.java -+++ b/src/main/java/net/minecraft/server/EntityCreeper.java -@@ -20,6 +20,11 @@ public class EntityCreeper extends EntityMonster { - - public EntityCreeper(EntityTypes entitytypes, World world) { - super(entitytypes, world); -+ // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - @Override -@@ -184,6 +189,12 @@ public class EntityCreeper extends EntityMonster { - - @Override - protected boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur start - processInteract -+ return processInteract(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ -+ private boolean processInteract(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur end - ItemStack itemstack = entityhuman.b(enumhand); - - if (itemstack.getItem() == Items.FLINT_AND_STEEL) { diff --git a/src/main/java/net/minecraft/server/EntityDolphin.java b/src/main/java/net/minecraft/server/EntityDolphin.java -index 56394ccdc..e42c16603 100644 +index 56394ccdc..9e5542ade 100644 --- a/src/main/java/net/minecraft/server/EntityDolphin.java +++ b/src/main/java/net/minecraft/server/EntityDolphin.java -@@ -20,6 +20,7 @@ public class EntityDolphin extends EntityWaterAnimal { - this.moveController = new EntityDolphin.a(this); - this.lookController = new ControllerLookDolphin(this, 10); - this.setCanPickupLoot(true); -+ this.canBeRiddenInWater = true; // Purpur - } - - @Nullable -@@ -224,6 +225,12 @@ public class EntityDolphin extends EntityWaterAnimal { - - @Override - protected boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur start - processInteract -+ return processInteract(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ -+ protected boolean processInteract(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur end - ItemStack itemstack = entityhuman.b(enumhand); - - if (!itemstack.isEmpty() && itemstack.getItem().a(TagsItem.FISHES)) { -@@ -519,7 +526,7 @@ public class EntityDolphin extends EntityWaterAnimal { +@@ -519,7 +519,7 @@ public class EntityDolphin extends EntityWaterAnimal { } } @@ -262,12 +143,13 @@ index 56394ccdc..e42c16603 100644 private final EntityDolphin i; -@@ -528,8 +535,21 @@ public class EntityDolphin extends EntityWaterAnimal { +@@ -528,8 +528,21 @@ public class EntityDolphin extends EntityWaterAnimal { this.i = entitydolphin; } + // Purpur start -+ @Override + @Override +- public void a() { + public void tick(EntityHuman rider) { + if (this.i.getAirTicks() < 150) { + // if drowning override player WASD controls to find air @@ -278,8 +160,7 @@ index 56394ccdc..e42c16603 100644 + } + } + - @Override -- public void a() { ++ @Override + public void tick() { + // Purpur end if (this.i.isInWater()) { @@ -316,53 +197,11 @@ index 449fbee60..c692ea296 100644 } } -diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java -index f08f139e9..1a8b3392e 100644 ---- a/src/main/java/net/minecraft/server/EntityEnderman.java -+++ b/src/main/java/net/minecraft/server/EntityEnderman.java -@@ -24,6 +24,11 @@ public class EntityEnderman extends EntityMonster { - super(entitytypes, world); - this.K = 1.0F; - this.a(PathType.WATER, -1.0F); -+ // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - @Override -@@ -256,6 +261,13 @@ public class EntityEnderman extends EntityMonster { - - } - -+ // Purpur start - processInteract -+ @Override -+ public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ return super.a(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ // Purpur end -+ - public void setCarried(@Nullable IBlockData iblockdata) { - this.datawatcher.set(EntityEnderman.d, Optional.ofNullable(iblockdata)); - } diff --git a/src/main/java/net/minecraft/server/EntityEndermite.java b/src/main/java/net/minecraft/server/EntityEndermite.java -index 10b0f9653..a3f01d3af 100644 +index 10b0f9653..9425a7998 100644 --- a/src/main/java/net/minecraft/server/EntityEndermite.java +++ b/src/main/java/net/minecraft/server/EntityEndermite.java -@@ -9,6 +9,11 @@ public class EntityEndermite extends EntityMonster { - public EntityEndermite(EntityTypes entitytypes, World world) { - super(entitytypes, world); - this.f = 3; -+ // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - @Override -@@ -18,7 +23,7 @@ public class EntityEndermite extends EntityMonster { +@@ -18,7 +18,7 @@ public class EntityEndermite extends EntityMonster { this.goalSelector.a(3, new PathfinderGoalRandomStrollLand(this, 1.0D)); this.goalSelector.a(7, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F)); this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this)); @@ -371,34 +210,11 @@ index 10b0f9653..a3f01d3af 100644 this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)); } -@@ -138,4 +143,11 @@ public class EntityEndermite extends EntityMonster { - public EnumMonsterType getMonsterType() { - return EnumMonsterType.ARTHROPOD; - } -+ -+ // Purpur start - processInteract -+ @Override -+ public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ return super.a(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ // Purpur end - } diff --git a/src/main/java/net/minecraft/server/EntityFish.java b/src/main/java/net/minecraft/server/EntityFish.java -index a28fbdf1e..607386791 100644 +index a28fbdf1e..36229a2c4 100644 --- a/src/main/java/net/minecraft/server/EntityFish.java +++ b/src/main/java/net/minecraft/server/EntityFish.java -@@ -9,6 +9,10 @@ public abstract class EntityFish extends EntityWaterAnimal { - public EntityFish(EntityTypes entitytypes, World world) { - super(entitytypes, world); - this.moveController = new EntityFish.a(this); -+ // Purpur start -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - @Override -@@ -75,11 +79,7 @@ public abstract class EntityFish extends EntityWaterAnimal { +@@ -75,11 +75,7 @@ public abstract class EntityFish extends EntityWaterAnimal { protected void initPathfinder() { super.initPathfinder(); this.goalSelector.a(0, new PathfinderGoalPanic(this, 1.25D)); @@ -411,7 +227,7 @@ index a28fbdf1e..607386791 100644 this.goalSelector.a(4, new EntityFish.b(this)); } -@@ -91,7 +91,7 @@ public abstract class EntityFish extends EntityWaterAnimal { +@@ -91,7 +87,7 @@ public abstract class EntityFish extends EntityWaterAnimal { @Override public void e(Vec3D vec3d) { if (this.de() && this.isInWater()) { @@ -420,20 +236,7 @@ index a28fbdf1e..607386791 100644 this.move(EnumMoveType.SELF, this.getMot()); this.setMot(this.getMot().a(0.9D)); if (this.getGoalTarget() == null) { -@@ -117,6 +117,12 @@ public abstract class EntityFish extends EntityWaterAnimal { - - @Override - protected boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur start - processInteract -+ return processInteract(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ -+ protected boolean processInteract(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur end - ItemStack itemstack = entityhuman.b(enumhand); - - if (itemstack.getItem() == Items.WATER_BUCKET && this.isAlive()) { -@@ -162,7 +168,7 @@ public abstract class EntityFish extends EntityWaterAnimal { +@@ -162,7 +158,7 @@ public abstract class EntityFish extends EntityWaterAnimal { return SoundEffects.ENTITY_FISH_SWIM; } @@ -442,7 +245,7 @@ index a28fbdf1e..607386791 100644 private final EntityFish i; -@@ -171,8 +177,16 @@ public abstract class EntityFish extends EntityWaterAnimal { +@@ -171,8 +167,16 @@ public abstract class EntityFish extends EntityWaterAnimal { this.i = entityfish; } @@ -461,40 +264,22 @@ index a28fbdf1e..607386791 100644 this.i.setMot(this.i.getMot().add(0.0D, 0.005D, 0.0D)); } diff --git a/src/main/java/net/minecraft/server/EntityGiantZombie.java b/src/main/java/net/minecraft/server/EntityGiantZombie.java -index bcbade19e..e9962c2a7 100644 +index bcbade19e..19b8312f2 100644 --- a/src/main/java/net/minecraft/server/EntityGiantZombie.java +++ b/src/main/java/net/minecraft/server/EntityGiantZombie.java -@@ -5,7 +5,11 @@ public class EntityGiantZombie extends EntityMonster { - public EntityGiantZombie(EntityTypes entitytypes, World world) { +@@ -6,6 +6,7 @@ public class EntityGiantZombie extends EntityMonster { super(entitytypes, world); // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; this.safeFallDistance = 10.0F; + setStepHeight(2.0F); // Purpur end } -@@ -22,6 +26,13 @@ public class EntityGiantZombie extends EntityMonster { - this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(50.0D); - } - -+ // Purpur start -+ @Override -+ public boolean a(EntityHuman entityhuman, EnumHand enumhand) { // processInteract -+ return super.a(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ // 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 335416d96..62d1f2536 100644 +index 335416d96..6599bce9a 100644 --- a/src/main/java/net/minecraft/server/EntityGuardian.java +++ b/src/main/java/net/minecraft/server/EntityGuardian.java -@@ -22,8 +22,15 @@ public class EntityGuardian extends EntityMonster { +@@ -22,8 +22,14 @@ public class EntityGuardian extends EntityMonster { super(entitytypes, world); this.f = 10; this.moveController = new EntityGuardian.ControllerMoveGuardian(this); @@ -507,12 +292,11 @@ index 335416d96..62d1f2536 100644 + super.setYawPitch(yaw, pitch * 0.35F); + } + }; -+ this.canBeRiddenInWater = true; + // Purpur end } @Override -@@ -77,6 +84,7 @@ public class EntityGuardian extends EntityMonster { +@@ -77,6 +83,7 @@ public class EntityGuardian extends EntityMonster { return (Boolean) this.datawatcher.get(EntityGuardian.b); } @@ -520,7 +304,7 @@ index 335416d96..62d1f2536 100644 private void r(boolean flag) { this.datawatcher.set(EntityGuardian.b, flag); } -@@ -302,7 +310,7 @@ public class EntityGuardian extends EntityMonster { +@@ -302,7 +309,7 @@ public class EntityGuardian extends EntityMonster { @Override public void e(Vec3D vec3d) { if (this.de() && this.isInWater()) { @@ -529,23 +313,16 @@ index 335416d96..62d1f2536 100644 this.move(EnumMoveType.SELF, this.getMot()); this.setMot(this.getMot().a(0.9D)); if (!this.dY() && this.getGoalTarget() == null) { -@@ -314,7 +322,14 @@ public class EntityGuardian extends EntityMonster { +@@ -314,7 +321,7 @@ public class EntityGuardian extends EntityMonster { } - static class ControllerMoveGuardian extends ControllerMove { -+ // Purpur start - processInteract -+ @Override -+ public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ return super.a(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ // Purpur end -+ + static class ControllerMoveGuardian extends net.pl3x.purpur.controller.ControllerMoveWASDWater { // Purpur private final EntityGuardian i; -@@ -324,7 +339,16 @@ public class EntityGuardian extends EntityMonster { +@@ -324,7 +331,16 @@ public class EntityGuardian extends EntityMonster { } @Override @@ -564,30 +341,20 @@ index 335416d96..62d1f2536 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/EntityHorse.java b/src/main/java/net/minecraft/server/EntityHorse.java -index 401f00561..0e6759303 100644 +index 401f00561..d689e1173 100644 --- a/src/main/java/net/minecraft/server/EntityHorse.java +++ b/src/main/java/net/minecraft/server/EntityHorse.java -@@ -201,12 +201,14 @@ public class EntityHorse extends EntityHorseAbstract { +@@ -201,7 +201,7 @@ public class EntityHorse extends EntityHorseAbstract { } } - if (this.isBaby()) { -- return super.a(entityhuman, enumhand); -- } else { -+ // Purpur start - allow riding babies -+ //if (this.isBaby()) { -+ // return super.a(entityhuman, enumhand); -+ //} else { ++ if (false && this.isBaby()) { // Purpur - allow riding babies + return super.a(entityhuman, enumhand); + } else { this.g(entityhuman); - return true; -- } -+ //} -+ // Purpur end - } - } - diff --git a/src/main/java/net/minecraft/server/EntityHorseAbstract.java b/src/main/java/net/minecraft/server/EntityHorseAbstract.java -index 686bca4f2..0250a5653 100644 +index 686bca4f2..3cc908955 100644 --- a/src/main/java/net/minecraft/server/EntityHorseAbstract.java +++ b/src/main/java/net/minecraft/server/EntityHorseAbstract.java @@ -81,7 +81,7 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven @@ -595,7 +362,7 @@ index 686bca4f2..0250a5653 100644 public boolean isTamed() { - return this.r(2); -+ return this.r(2) || isBaby(); // Purpur ++ return this.r(2) || isBaby(); // Purpur - allow riding babies } @Nullable @@ -616,7 +383,7 @@ index 686bca4f2..0250a5653 100644 this.eB(); SoundEffect soundeffect = this.getSoundAngry(); diff --git a/src/main/java/net/minecraft/server/EntityHorseChestedAbstract.java b/src/main/java/net/minecraft/server/EntityHorseChestedAbstract.java -index e61d8f07d..371f2dcb9 100644 +index e61d8f07d..17819fc92 100644 --- a/src/main/java/net/minecraft/server/EntityHorseChestedAbstract.java +++ b/src/main/java/net/minecraft/server/EntityHorseChestedAbstract.java @@ -152,8 +152,12 @@ public abstract class EntityHorseChestedAbstract extends EntityHorseAbstract { @@ -634,82 +401,28 @@ index e61d8f07d..371f2dcb9 100644 } if (!this.isCarryingChest() && itemstack.getItem() == Blocks.CHEST.getItem()) { -@@ -178,12 +182,14 @@ public abstract class EntityHorseChestedAbstract extends EntityHorseAbstract { +@@ -178,7 +182,7 @@ public abstract class EntityHorseChestedAbstract extends EntityHorseAbstract { } } - if (this.isBaby()) { -- return super.a(entityhuman, enumhand); -- } else { -+ // Purpur start - allow riding babies -+ //if (this.isBaby()) { -+ // return super.a(entityhuman, enumhand); -+ //} else { ++ if (false && this.isBaby()) { // Purpur - allow riding babies + return super.a(entityhuman, enumhand); + } else { this.g(entityhuman); - return true; -- } -+ //} -+ // Purpur end - } - } - -diff --git a/src/main/java/net/minecraft/server/EntityHorseDonkey.java b/src/main/java/net/minecraft/server/EntityHorseDonkey.java -index 46338f0f8..3083269a5 100644 ---- a/src/main/java/net/minecraft/server/EntityHorseDonkey.java -+++ b/src/main/java/net/minecraft/server/EntityHorseDonkey.java -@@ -4,6 +4,9 @@ public class EntityHorseDonkey extends EntityHorseChestedAbstract { - - public EntityHorseDonkey(EntityTypes entitytypes, World world) { - super(entitytypes, world); -+ // Purpur start -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - @Override -diff --git a/src/main/java/net/minecraft/server/EntityHorseMule.java b/src/main/java/net/minecraft/server/EntityHorseMule.java -index ef930d194..119ca47d0 100644 ---- a/src/main/java/net/minecraft/server/EntityHorseMule.java -+++ b/src/main/java/net/minecraft/server/EntityHorseMule.java -@@ -4,6 +4,9 @@ public class EntityHorseMule extends EntityHorseChestedAbstract { - - public EntityHorseMule(EntityTypes entitytypes, World world) { - super(entitytypes, world); -+ // Purpur start -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - @Override diff --git a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java -index b96726456..2193f218a 100644 +index b96726456..b60bb4d17 100644 --- a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java +++ b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java -@@ -10,6 +10,9 @@ public class EntityHorseSkeleton extends EntityHorseAbstract { - - public EntityHorseSkeleton(EntityTypes entitytypes, World world) { - super(entitytypes, world); -+ // Purpur start -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - @Override -@@ -154,18 +157,20 @@ public class EntityHorseSkeleton extends EntityHorseAbstract { - - if (itemstack.getItem() instanceof ItemMonsterEgg) { +@@ -156,16 +156,16 @@ public class EntityHorseSkeleton extends EntityHorseAbstract { return super.a(entityhuman, enumhand); -- } else if (!this.isTamed()) { -+ // Purpur start - allow riding babies -+ } else if (!this.isTamed() && !this.isBaby()) { + } else if (!this.isTamed()) { return false; - } else if (this.isBaby()) { -- return super.a(entityhuman, enumhand); ++ } else if (false && this.isBaby()) { // Purpur - allow riding babies + return super.a(entityhuman, enumhand); - } else if (entityhuman.isSneaking()) { -+ //} else if (this.isBaby()) { -+ // return super.a(entityhuman, enumhand); -+ // Purpur end -+ } else if (entityhuman.isSneaking() && !this.isBaby()) { // Purpur - don't open inventory on babies ++ } else if (!this.isBaby() && entityhuman.isSneaking()) { // Purpur - don't open inventory on babies this.e(entityhuman); return true; } else if (this.isVehicle()) { @@ -722,24 +435,18 @@ index b96726456..2193f218a 100644 return true; } diff --git a/src/main/java/net/minecraft/server/EntityHorseZombie.java b/src/main/java/net/minecraft/server/EntityHorseZombie.java -index 1160929e1..e25511ef1 100644 +index 1160929e1..d94063885 100644 --- a/src/main/java/net/minecraft/server/EntityHorseZombie.java +++ b/src/main/java/net/minecraft/server/EntityHorseZombie.java -@@ -51,18 +51,20 @@ public class EntityHorseZombie extends EntityHorseAbstract { - - if (itemstack.getItem() instanceof ItemMonsterEgg) { +@@ -53,16 +53,16 @@ public class EntityHorseZombie extends EntityHorseAbstract { return super.a(entityhuman, enumhand); -- } else if (!this.isTamed()) { -+ // Purpur start - allow riding babies -+ } else if (!this.isTamed() && !this.isBaby()) { + } else if (!this.isTamed()) { return false; - } else if (this.isBaby()) { -- return super.a(entityhuman, enumhand); ++ } else if (false && this.isBaby()) { // Purpur - allow riding babies + return super.a(entityhuman, enumhand); - } else if (entityhuman.isSneaking()) { -+ //} else if (this.isBaby()) { -+ // return super.a(entityhuman, enumhand); -+ // Purpur end -+ } else if (entityhuman.isSneaking() && !this.isBaby()) { // Purpur - don't open inventory on babies ++ } else if (!this.isBaby() && entityhuman.isSneaking()) { // Purpur - don't open inventory on babies this.e(entityhuman); return true; } else if (this.isVehicle()) { @@ -779,10 +486,24 @@ index e811a2917..f25c394e3 100644 this.setSneaking(false); } else { diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java -index a0c089477..db5284f48 100644 +index a0c089477..d7bc766cb 100644 --- a/src/main/java/net/minecraft/server/EntityInsentient.java +++ b/src/main/java/net/minecraft/server/EntityInsentient.java -@@ -492,6 +492,7 @@ public abstract class EntityInsentient extends EntityLiving { +@@ -63,8 +63,11 @@ public abstract class EntityInsentient extends EntityLiving { + this.bL = -1.0F; + this.goalSelector = new PathfinderGoalSelector(world != null && world.getMethodProfiler() != null ? world.getMethodProfiler() : null); + this.targetSelector = new PathfinderGoalSelector(world != null && world.getMethodProfiler() != null ? world.getMethodProfiler() : null); +- this.lookController = new ControllerLook(this); +- this.moveController = new ControllerMove(this); ++ // Purpur start ++ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); ++ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); ++ this.canBeRiddenInWater = true; ++ // Purpur end + this.bt = new ControllerJump(this); + this.c = this.o(); + this.navigation = this.b(world); +@@ -492,6 +495,7 @@ public abstract class EntityInsentient extends EntityLiving { this.bb = f; } @@ -790,7 +511,16 @@ index a0c089477..db5284f48 100644 @Override public void o(float f) { super.o(f); -@@ -1359,4 +1360,42 @@ public abstract class EntityInsentient extends EntityLiving { +@@ -1061,7 +1065,7 @@ public abstract class EntityInsentient extends EntityLiving { + } + + protected boolean a(EntityHuman entityhuman, EnumHand enumhand) { +- return false; ++ return tryRide(entityhuman, enumhand); // Purpur + } + + public boolean dH() { +@@ -1359,4 +1363,48 @@ public abstract class EntityInsentient extends EntityLiving { public boolean a(Item item) { return this.getItemInMainHand().getItem() == item || this.getItemInOffHand().getItem() == item; } @@ -810,6 +540,12 @@ index a0c089477..db5284f48 100644 + if (!passengers.isEmpty() || entityhuman.isPassenger()) { + return false; + } ++ if (this instanceof EntityTameableAnimal) { ++ EntityTameableAnimal tameable = (EntityTameableAnimal) this; ++ if (tameable.isTamed() && !tameable.isOwner(entityhuman)) { ++ return false; ++ } ++ } + if (!hasRidePermission(entityhuman)) { + entityhuman.getBukkitEntity().sendMessage("You cannot mount that mob"); + return false; @@ -831,54 +567,28 @@ index a0c089477..db5284f48 100644 + public boolean onSpacebar() { + return false; + } -+ // Purpur end - } -diff --git a/src/main/java/net/minecraft/server/EntityIronGolem.java b/src/main/java/net/minecraft/server/EntityIronGolem.java -index 7aebc90af..d9d77ab44 100644 ---- a/src/main/java/net/minecraft/server/EntityIronGolem.java -+++ b/src/main/java/net/minecraft/server/EntityIronGolem.java -@@ -9,6 +9,11 @@ public class EntityIronGolem extends EntityGolem { - public EntityIronGolem(EntityTypes entitytypes, World world) { - super(entitytypes, world); - this.K = 1.0F; -+ // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - @Override -@@ -175,4 +180,11 @@ public class EntityIronGolem extends EntityGolem { - return SpawnerCreature.a((IBlockAccess) iworldreader, blockposition2, iblockdata1, iblockdata1.p()) && SpawnerCreature.a((IBlockAccess) iworldreader, blockposition, iworldreader.getType(blockposition), FluidTypes.EMPTY.i()) && iworldreader.i(this); - } - } -+ -+ // Purpur start - processInteract -+ @Override -+ public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ return super.a(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index b27a9efcc..40264185a 100644 +index b27a9efcc..8f0c05959 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java -@@ -88,9 +88,9 @@ public abstract class EntityLiving extends Entity { +@@ -87,10 +87,10 @@ public abstract class EntityLiving extends Entity { + protected float aX; protected int aY; protected int getKillCount() { return this.aY; } // Paper - OBFHELPER public float lastDamage; - protected boolean jumping; +- protected boolean jumping; - public float bb; - public float bc; - public float bd; ++ protected boolean jumping; public boolean isJumping() { return jumping; } // Purpur - OBFHELPER + public float bb; public float getStrafe() { return bb; } public void setStrafe(float strafe) { bb = strafe; } // Purpur - OBFHELPER + public float bc; public float getVertical() { return bc; } public void setVertical(float vertical) { bc = vertical; } // Purpur - OBFHELPER + public float bd; public float getForward() { return bd; } public void setForward(float forward) { bd = forward; } // Purpur - OBFHELPER public float be; protected int bf; protected double bg; -@@ -369,10 +369,19 @@ public abstract class EntityLiving extends Entity { +@@ -369,9 +369,18 @@ public abstract class EntityLiving extends Entity { return this.isBaby() ? 0.5F : 1.0F; } @@ -888,17 +598,16 @@ index b27a9efcc..40264185a 100644 + public void setCanBeRiddenInWater(boolean canBeRiddenInWater) { + this.canBeRiddenInWater = canBeRiddenInWater; + } ++ // Purpur end + -+ public boolean canBeRiddenInWater() { return be(); } ++ public boolean canBeRiddenInWater() { return be(); } // Purpur - OBFHELPER @Override public boolean be() { - return false; -+ return canBeRiddenInWater; ++ return canBeRiddenInWater; // Purpur } -+ // Purpur end protected void cn() { - ++this.deathTicks; @@ -2027,7 +2036,7 @@ public abstract class EntityLiving extends Entity { return 0.42F; } @@ -921,20 +630,7 @@ index b27a9efcc..40264185a 100644 public void o(float f) { this.bD = f; } -@@ -2683,6 +2694,12 @@ public abstract class EntityLiving extends Entity { - this.fallDistance = 0.0F; - } - -+ // Purpur start -+ public boolean isJumping() { -+ return jumping; -+ } -+ // Purpur end -+ - public void setJumping(boolean flag) { - this.jumping = flag; - } -@@ -2735,6 +2752,7 @@ public abstract class EntityLiving extends Entity { +@@ -2735,6 +2746,7 @@ public abstract class EntityLiving extends Entity { this.aM = f; } @@ -943,10 +639,10 @@ index b27a9efcc..40264185a 100644 public void l(float f) { this.aK = f; diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java -index f8a8da637..6870fb875 100644 +index f8a8da637..cfb80b34c 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 +@@ -16,6 +16,28 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn public EntityLlama(EntityTypes entitytypes, World world) { super(entitytypes, world); @@ -971,99 +667,40 @@ index f8a8da637..6870fb875 100644 + } + } + }; -+ this.canBeRiddenInWater = true; + // Purpur end } public void setStrength(int i) { -@@ -371,6 +394,18 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn +@@ -371,6 +393,18 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn } } + // Purpur start + @Override + public boolean isLeashed() { -+ return getRider() != null || super.isLeashed(); ++ return (getRider() != null && isSaddled()) || super.isLeashed(); + } + + @Override + public Entity getLeashHolder() { -+ return getRider() != null ? getRider() : super.getLeashHolder(); ++ return (getRider() != null && isSaddled()) ? getRider() : super.getLeashHolder(); + } + // Purpur end + public void eG() { if (this.bN != null) { this.bN.bO = null; -@@ -385,7 +420,7 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn +@@ -385,7 +419,7 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn } public boolean eH() { - return this.bO != null; -+ return getRider() != null || this.bO != null; // Purpur ++ return (getRider() != null && isSaddled()) || this.bO != null; // Purpur } public boolean eI() { -diff --git a/src/main/java/net/minecraft/server/EntityMushroomCow.java b/src/main/java/net/minecraft/server/EntityMushroomCow.java -index d2de3589a..9aa7a8adb 100644 ---- a/src/main/java/net/minecraft/server/EntityMushroomCow.java -+++ b/src/main/java/net/minecraft/server/EntityMushroomCow.java -@@ -18,6 +18,11 @@ public class EntityMushroomCow extends EntityCow { - public EntityMushroomCow(EntityTypes entitytypes, World world) { - super(entitytypes, world); - this.bC = Blocks.MYCELIUM; -+ // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - @Override -@@ -40,6 +45,12 @@ public class EntityMushroomCow extends EntityCow { - - @Override - public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur start - processInteract -+ return processInteract(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ -+ public boolean processInteract(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur end - ItemStack itemstack = entityhuman.b(enumhand); - - if (itemstack.getItem() == Items.BOWL && this.getAge() >= 0 && !entityhuman.abilities.canInstantlyBuild) { -diff --git a/src/main/java/net/minecraft/server/EntityOcelot.java b/src/main/java/net/minecraft/server/EntityOcelot.java -index 1713bead2..3200ac91b 100644 ---- a/src/main/java/net/minecraft/server/EntityOcelot.java -+++ b/src/main/java/net/minecraft/server/EntityOcelot.java -@@ -14,6 +14,11 @@ public class EntityOcelot extends EntityAnimal { - public EntityOcelot(EntityTypes entitytypes, World world) { - super(entitytypes, world); - this.dV(); -+ // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - private boolean isTrusting() { -@@ -127,6 +132,12 @@ public class EntityOcelot extends EntityAnimal { - - @Override - public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur start - processInteract -+ return processInteract(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ -+ public boolean processInteract(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur end - ItemStack itemstack = entityhuman.b(enumhand); - - if ((this.bD == null || this.bD.h()) && !this.isTrusting() && this.i(itemstack) && entityhuman.h((Entity) this) < 9.0D) { diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java -index 6aa116f4b..15f6d612d 100644 +index 6aa116f4b..033d8e05a 100644 --- a/src/main/java/net/minecraft/server/EntityPhantom.java +++ b/src/main/java/net/minecraft/server/EntityPhantom.java @@ -22,6 +22,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { @@ -1083,19 +720,7 @@ index 6aa116f4b..15f6d612d 100644 this.setOnFire(8); } -@@ -227,6 +228,11 @@ public class EntityPhantom extends EntityFlying implements IMonster { - // Paper end - - // Purpur start -+ @Override -+ public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ return super.a(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ - class FindCrystalGoal extends PathfinderGoal { - private final EntityPhantom phantom; - private EntityEnderCrystal crystal; -@@ -605,14 +611,23 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -605,14 +606,23 @@ public class EntityPhantom extends EntityFlying implements IMonster { } } @@ -1121,7 +746,7 @@ index 6aa116f4b..15f6d612d 100644 } class d extends EntityAIBodyControl { -@@ -628,7 +643,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -628,7 +638,7 @@ public class EntityPhantom extends EntityFlying implements IMonster { } } @@ -1130,7 +755,7 @@ index 6aa116f4b..15f6d612d 100644 private float j = 0.1F; -@@ -636,8 +651,19 @@ public class EntityPhantom extends EntityFlying implements IMonster { +@@ -636,8 +646,19 @@ public class EntityPhantom extends EntityFlying implements IMonster { super(entityinsentient); } @@ -1152,64 +777,51 @@ index 6aa116f4b..15f6d612d 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 616075569..50906c5bd 100644 +index 616075569..e51054b23 100644 --- a/src/main/java/net/minecraft/server/EntityPig.java +++ b/src/main/java/net/minecraft/server/EntityPig.java -@@ -18,6 +18,11 @@ public class EntityPig extends EntityAnimal { - - public EntityPig(EntityTypes entitytypes, World world) { - super(entitytypes, world); -+ // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - @Override -@@ -111,6 +116,12 @@ public class EntityPig extends EntityAnimal { +@@ -111,27 +111,22 @@ public class EntityPig extends EntityAnimal { @Override public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur start - processInteract -+ return processInteract(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ -+ public boolean processInteract(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur end - if (!super.a(entityhuman, enumhand)) { - ItemStack itemstack = entityhuman.b(enumhand); - -diff --git a/src/main/java/net/minecraft/server/EntityPolarBear.java b/src/main/java/net/minecraft/server/EntityPolarBear.java -index 182a3195e..7458f3ff6 100644 ---- a/src/main/java/net/minecraft/server/EntityPolarBear.java -+++ b/src/main/java/net/minecraft/server/EntityPolarBear.java -@@ -14,6 +14,11 @@ public class EntityPolarBear extends EntityAnimal { - - public EntityPolarBear(EntityTypes entitytypes, World world) { - super(entitytypes, world); -+ // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; +- if (!super.a(entityhuman, enumhand)) { +- ItemStack itemstack = entityhuman.b(enumhand); +- +- if (itemstack.getItem() == Items.NAME_TAG) { +- itemstack.a(entityhuman, (EntityLiving) this, enumhand); +- return true; +- } else if (this.hasSaddle() && !this.isVehicle()) { +- if (!this.world.isClientSide) { +- entityhuman.startRiding(this); +- } +- +- return true; +- } else if (itemstack.getItem() == Items.SADDLE) { +- itemstack.a(entityhuman, (EntityLiving) this, enumhand); +- return true; +- } else { +- return false; +- } +- } else { ++ // Purpur start - reorder logic so super is last (so tryRide is last) ++ ItemStack itemstack = entityhuman.b(enumhand); ++ if (itemstack.getItem() == Items.NAME_TAG) { ++ itemstack.a(entityhuman, this, enumhand); ++ return true; ++ } ++ if (hasSaddle() && !isVehicle()) { ++ entityhuman.startRiding(this); ++ return true; ++ } ++ if (itemstack.getItem() == Items.SADDLE) { ++ itemstack.a(entityhuman, this, enumhand); + return true; + } ++ return super.a(entityhuman, enumhand); + // Purpur end } @Override -@@ -154,6 +159,13 @@ public class EntityPolarBear extends EntityAnimal { - return 0.98F; - } - -+ // Purpur start - processInteract -+ @Override -+ public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ return super.a(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ // Purpur end -+ - @Override - public GroupDataEntity prepare(GeneratorAccess generatoraccess, DifficultyDamageScaler difficultydamagescaler, EnumMobSpawn enummobspawn, @Nullable GroupDataEntity groupdataentity, @Nullable NBTTagCompound nbttagcompound) { - if (groupdataentity instanceof EntityPolarBear.b) { diff --git a/src/main/java/net/minecraft/server/EntityRabbit.java b/src/main/java/net/minecraft/server/EntityRabbit.java index f6fa87158..bd0679e74 100644 --- a/src/main/java/net/minecraft/server/EntityRabbit.java @@ -1223,93 +835,6 @@ index f6fa87158..bd0679e74 100644 super.jump(); double d0 = this.moveController.c(); -diff --git a/src/main/java/net/minecraft/server/EntitySheep.java b/src/main/java/net/minecraft/server/EntitySheep.java -index f0cd951ac..d52a320a6 100644 ---- a/src/main/java/net/minecraft/server/EntitySheep.java -+++ b/src/main/java/net/minecraft/server/EntitySheep.java -@@ -55,6 +55,11 @@ public class EntitySheep extends EntityAnimal { - - public EntitySheep(EntityTypes entitytypes, World world) { - super(entitytypes, world); -+ // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - @Override -@@ -144,6 +149,12 @@ public class EntitySheep extends EntityAnimal { - - @Override - public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur start - processInteract -+ return processInteract(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ -+ public boolean processInteract(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur end - ItemStack itemstack = entityhuman.b(enumhand); - - if (itemstack.getItem() == Items.SHEARS && !this.isSheared() && !this.isBaby()) { -diff --git a/src/main/java/net/minecraft/server/EntitySilverfish.java b/src/main/java/net/minecraft/server/EntitySilverfish.java -index d823c6b6d..e0a52dbe9 100644 ---- a/src/main/java/net/minecraft/server/EntitySilverfish.java -+++ b/src/main/java/net/minecraft/server/EntitySilverfish.java -@@ -10,6 +10,11 @@ public class EntitySilverfish extends EntityMonster { - - public EntitySilverfish(EntityTypes entitytypes, World world) { - super(entitytypes, world); -+ // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - @Override -@@ -117,6 +122,13 @@ public class EntitySilverfish extends EntityMonster { - return EnumMonsterType.ARTHROPOD; - } - -+ // Purpur start - processInteract -+ @Override -+ public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ return super.a(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ // Purpur end -+ - static class PathfinderGoalSilverfishHideInBlock extends PathfinderGoalRandomStroll { - - private EnumDirection h; -diff --git a/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java b/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java -index 85157e80d..4317d9703 100644 ---- a/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java -+++ b/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java -@@ -24,6 +24,11 @@ public abstract class EntitySkeletonAbstract extends EntityMonster implements IR - protected EntitySkeletonAbstract(EntityTypes entitytypes, World world) { - super(entitytypes, world); - this.dV(); -+ // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - @Override -@@ -199,4 +204,11 @@ public abstract class EntitySkeletonAbstract extends EntityMonster implements IR - public double aN() { - return -0.6D; - } -+ -+ // Purpur start - processInteract -+ @Override -+ public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ return super.a(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ // Purpur end - } diff --git a/src/main/java/net/minecraft/server/EntitySlime.java b/src/main/java/net/minecraft/server/EntitySlime.java index d720d0fae..e4f7797ed 100644 --- a/src/main/java/net/minecraft/server/EntitySlime.java @@ -1324,22 +849,10 @@ index d720d0fae..e4f7797ed 100644 this.setMot(vec3d.x, 0.41999998688697815D, vec3d.z); diff --git a/src/main/java/net/minecraft/server/EntitySnowman.java b/src/main/java/net/minecraft/server/EntitySnowman.java -index c13dfc6cc..9997ef494 100644 +index c13dfc6cc..fca5fde34 100644 --- a/src/main/java/net/minecraft/server/EntitySnowman.java +++ b/src/main/java/net/minecraft/server/EntitySnowman.java -@@ -13,6 +13,11 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity { - - public EntitySnowman(EntityTypes entitytypes, World world) { - super(entitytypes, world); -+ // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - @Override -@@ -74,6 +79,7 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity { +@@ -74,6 +74,7 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity { return; } @@ -1347,62 +860,11 @@ index c13dfc6cc..9997ef494 100644 IBlockData iblockdata = Blocks.SNOW.getBlockData(); for (int l = 0; l < 4; ++l) { -@@ -111,6 +117,12 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity { - - @Override - protected boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur start - processInteract -+ return processInteract(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ -+ public boolean processInteract(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur end - ItemStack itemstack = entityhuman.b(enumhand); - - if (this.hasPumpkin()) { if (itemstack.getItem() == Items.SHEARS) { // Purpur -diff --git a/src/main/java/net/minecraft/server/EntitySpider.java b/src/main/java/net/minecraft/server/EntitySpider.java -index b560a8969..3089314a8 100644 ---- a/src/main/java/net/minecraft/server/EntitySpider.java -+++ b/src/main/java/net/minecraft/server/EntitySpider.java -@@ -9,6 +9,11 @@ public class EntitySpider extends EntityMonster { - - public EntitySpider(EntityTypes entitytypes, World world) { - super(entitytypes, world); -+ // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - @Override -@@ -115,6 +120,13 @@ public class EntitySpider extends EntityMonster { - this.datawatcher.set(EntitySpider.b, b0); - } - -+ // Purpur start - processInteract -+ @Override -+ public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ return super.a(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ // Purpur end -+ - @Nullable - @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/EntitySquid.java b/src/main/java/net/minecraft/server/EntitySquid.java -index 77c0ed42f..8dff2065c 100644 +index 77c0ed42f..a7434fbe1 100644 --- a/src/main/java/net/minecraft/server/EntitySquid.java +++ b/src/main/java/net/minecraft/server/EntitySquid.java -@@ -21,6 +21,7 @@ public class EntitySquid extends EntityWaterAnimal { - super(entitytypes, world); - //this.random.setSeed((long) this.getId()); // Paper - this.bF = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; -+ this.canBeRiddenInWater = true; // Purpur - } - - @Override -@@ -174,6 +175,7 @@ public class EntitySquid extends EntityWaterAnimal { +@@ -174,6 +174,7 @@ public class EntitySquid extends EntityWaterAnimal { return this.locY > this.world.spigotConfig.squidSpawnRangeMin && this.locY < maxHeight; // Spigot // Paper } @@ -1410,21 +872,7 @@ index 77c0ed42f..8dff2065c 100644 public void a(float f, float f1, float f2) { this.bH = f; this.bI = f1; -@@ -184,6 +186,13 @@ public class EntitySquid extends EntityWaterAnimal { - return this.bH != 0.0F || this.bI != 0.0F || this.bJ != 0.0F; - } - -+ // Purpur start - processInteract -+ @Override -+ public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ return super.a(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ // Purpur end -+ - class a extends PathfinderGoal { - - private int b; -@@ -258,6 +267,39 @@ public class EntitySquid extends EntityWaterAnimal { +@@ -258,6 +259,39 @@ public class EntitySquid extends EntityWaterAnimal { @Override public void e() { @@ -1464,7 +912,7 @@ index 77c0ed42f..8dff2065c 100644 int i = this.b.cv(); if (i > 100) { -@@ -272,5 +314,17 @@ public class EntitySquid extends EntityWaterAnimal { +@@ -272,5 +306,17 @@ public class EntitySquid extends EntityWaterAnimal { } } @@ -1516,65 +964,6 @@ index 483c97692..181e92980 100644 public String e() { if (this.be == null) { this.be = SystemUtils.a("entity", IRegistry.ENTITY_TYPE.getKey(this)); -diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java -index 4167ce8f8..245d36084 100644 ---- a/src/main/java/net/minecraft/server/EntityWolf.java -+++ b/src/main/java/net/minecraft/server/EntityWolf.java -@@ -29,6 +29,11 @@ public class EntityWolf extends EntityTameableAnimal { - public EntityWolf(EntityTypes entitytypes, World world) { - super(entitytypes, world); - this.setTamed(false); -+ // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - @Override -@@ -275,6 +280,12 @@ public class EntityWolf extends EntityTameableAnimal { - - @Override - public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur start - processInteract -+ return processInteract(entityhuman, enumhand) || ((!isTamed() || isOwner(entityhuman)) && tryRide(entityhuman, enumhand)); -+ } -+ -+ public boolean processInteract(EntityHuman entityhuman, EnumHand enumhand) { -+ // Purpur end - ItemStack itemstack = entityhuman.b(enumhand); - Item item = itemstack.getItem(); - -diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java -index b06235d46..f013cfe5b 100644 ---- a/src/main/java/net/minecraft/server/EntityZombie.java -+++ b/src/main/java/net/minecraft/server/EntityZombie.java -@@ -36,6 +36,11 @@ public class EntityZombie extends EntityMonster { - public EntityZombie(EntityTypes entitytypes, World world) { - super(entitytypes, world); - this.bD = new PathfinderGoalBreakDoor(this, EntityZombie.bC); -+ // Purpur start -+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this); -+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this); -+ this.canBeRiddenInWater = true; -+ // Purpur end - } - - public EntityZombie(World world) { -@@ -460,6 +465,13 @@ public class EntityZombie extends EntityMonster { - return itemstack.getItem() == Items.EGG && this.isBaby() && this.isPassenger() ? false : super.g(itemstack); - } - -+ // Purpur start - processInteract -+ @Override -+ public boolean a(EntityHuman entityhuman, EnumHand enumhand) { -+ return super.a(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -+ } -+ // Purpur end -+ - @Nullable - @Override - public GroupDataEntity prepare(GeneratorAccess generatoraccess, DifficultyDamageScaler difficultydamagescaler, EnumMobSpawn enummobspawn, @Nullable GroupDataEntity groupdataentity, @Nullable NBTTagCompound nbttagcompound) { 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 000000000..851ab80e4 diff --git a/patches/server/0015-Make-giants-naturally-spawn-and-have-AI.patch b/patches/server/0015-Make-giants-naturally-spawn-and-have-AI.patch index 7c0625852..ffc25460b 100644 --- a/patches/server/0015-Make-giants-naturally-spawn-and-have-AI.patch +++ b/patches/server/0015-Make-giants-naturally-spawn-and-have-AI.patch @@ -1,13 +1,13 @@ -From e0c7eb5d24016ff2501d6375be196188724376dd Mon Sep 17 00:00:00 2001 +From 43efafd95754423de1ddcfbc5c5e2bba5bb230b6 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 | 23 ++++++++++++++++++ - .../minecraft/server/EntityGiantZombie.java | 24 ++++++++++++++++++- - 3 files changed, 47 insertions(+), 1 deletion(-) + .../java/net/minecraft/server/Biomes.java | 23 ++++++++++++++++ + .../minecraft/server/EntityGiantZombie.java | 26 ++++++++++++++++++- + 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minecraft/server/BiomeBase.java b/src/main/java/net/minecraft/server/BiomeBase.java index 72eb669c5..f1500f7a0 100644 @@ -55,13 +55,14 @@ index 317db4b12..69ba98b66 100644 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/EntityGiantZombie.java b/src/main/java/net/minecraft/server/EntityGiantZombie.java -index e9962c2a7..5c44c794c 100644 +index 19b8312f2..1731e0fe3 100644 --- a/src/main/java/net/minecraft/server/EntityGiantZombie.java +++ b/src/main/java/net/minecraft/server/EntityGiantZombie.java -@@ -27,6 +27,28 @@ public class EntityGiantZombie extends EntityMonster { +@@ -23,8 +23,32 @@ public class EntityGiantZombie extends EntityMonster { + this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(50.0D); } - // Purpur start ++ // Purpur start + @Override + protected void initPathfinder() { + this.goalSelector.a(0, new PathfinderGoalFloat(this)); @@ -83,12 +84,8 @@ index e9962c2a7..5c44c794c 100644 + // 1.0 makes bottom of feet about as high as their waist when they jump + return 1.0F; + } ++ // Purpur end + - @Override - public boolean a(EntityHuman entityhuman, EnumHand enumhand) { // processInteract - return super.a(entityhuman, enumhand) || tryRide(entityhuman, enumhand); -@@ -35,6 +57,6 @@ public class EntityGiantZombie extends EntityMonster { - @Override public float a(BlockPosition blockposition, IWorldReader iworldreader) { - return iworldreader.w(blockposition) - 0.5F; diff --git a/patches/server/0016-Pigs-give-saddle-back.patch b/patches/server/0016-Pigs-give-saddle-back.patch index 1f85818c6..0a4494688 100644 --- a/patches/server/0016-Pigs-give-saddle-back.patch +++ b/patches/server/0016-Pigs-give-saddle-back.patch @@ -1,22 +1,21 @@ -From 8ecb109d918232b222e2a67747f8df204722dcd0 Mon Sep 17 00:00:00 2001 +From 95c80f781546d30bbf63b8135e18e1a23933a3d8 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 12 May 2019 01:14:46 -0500 Subject: [PATCH] Pigs give saddle back --- - src/main/java/net/minecraft/server/EntityPig.java | 11 +++++++++++ - 1 file changed, 11 insertions(+) + src/main/java/net/minecraft/server/EntityPig.java | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minecraft/server/EntityPig.java b/src/main/java/net/minecraft/server/EntityPig.java -index 50906c5bd..a2ba6ef0a 100644 +index e51054b23..2b078211d 100644 --- a/src/main/java/net/minecraft/server/EntityPig.java +++ b/src/main/java/net/minecraft/server/EntityPig.java -@@ -137,6 +137,17 @@ public class EntityPig extends EntityAnimal { - } else if (itemstack.getItem() == Items.SADDLE) { - itemstack.a(entityhuman, (EntityLiving) this, enumhand); - return true; -+ // Purpur start - get saddle back -+ } else if (hasSaddle() && entityhuman.isSneaking() && itemstack.getItem() == Items.AIR) { +@@ -118,10 +118,20 @@ public class EntityPig extends EntityAnimal { + return true; + } + if (hasSaddle() && !isVehicle()) { ++ if (entityhuman.isSneaking()) { + setSaddle(false); + if (!entityhuman.abilities.canInstantlyBuild) { + ItemStack saddle = new ItemStack(Items.SADDLE); @@ -25,10 +24,15 @@ index 50906c5bd..a2ba6ef0a 100644 + } + } + return true; -+ // Purpur end - } else { - return false; - } ++ } + entityhuman.startRiding(this); + return true; + } +- if (itemstack.getItem() == Items.SADDLE) { ++ if (itemstack.getItem() == Items.SADDLE && !entityhuman.isSneaking()) { + itemstack.a(entityhuman, this, enumhand); + return true; + } -- 2.20.1