@@ -2384,10 +2384,10 @@ index 2a1d720557c0bd4895a32723e34512c0a557e4f2..f1cb2e315e1d86f9fcd87db11d3ee7a8
23842384 protected void randomizeAttributes(RandomSource random) {
23852385 this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt));
23862386diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java
2387- index 5e3382351b1b5728750534f64babc85c4da3ac54..cb7af093a452b6febf6727e934e1492b67fbc18b 100644
2387+ index 5e3382351b1b5728750534f64babc85c4da3ac54..f7c6b2188ed3801417c7497dbc36749def3e5057 100644
23882388--- a/net/minecraft/world/entity/animal/horse/Llama.java
23892389+++ b/net/minecraft/world/entity/animal/horse/Llama.java
2390- @@ -84,7 +84,51 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
2390+ @@ -84,7 +84,58 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
23912391 super(entityType, level);
23922392 this.getNavigation().setRequiredPathLength(40.0F);
23932393 this.maxDomestication = 30; // Paper - Missing entity API; configure max temper instead of a hardcoded value
@@ -2433,40 +2433,35 @@ index 5e3382351b1b5728750534f64babc85c4da3ac54..cb7af093a452b6febf6727e934e1492b
24332433+
24342434+ @Override
24352435+ public boolean isSaddled() {
2436- + return super.isSaddled() || (isTamed());
2436+ + return super.isWearingBodyArmor() || this.isTamed();
2437+ + }
2438+ +
2439+ + @Nullable
2440+ + @Override
2441+ + public LivingEntity getControllingPassenger() {
2442+ + Entity firstPassenger = this.getFirstPassenger();
2443+ + return !this.isNoAi() && firstPassenger instanceof net.minecraft.world.entity.Mob mob && firstPassenger.canControlVehicle() ? mob : null;
24372444 }
24382445+ // Purpur end - Ridables
24392446
24402447 public boolean isTraderLlama() {
24412448 return false;
2442- @@ -127,6 +171 ,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
2449+ @@ -127,6 +178 ,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
24432450 @Override
24442451 protected void registerGoals() {
24452452 this.goalSelector.addGoal(0, new FloatGoal(this));
24462453+ this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.LlamaHasRider(this)); // Purpur - Ridables
24472454 this.goalSelector.addGoal(1, new RunAroundLikeCrazyGoal(this, 1.2));
24482455 this.goalSelector.addGoal(2, new LlamaFollowCaravanGoal(this, 2.1F));
24492456 this.goalSelector.addGoal(3, new RangedAttackGoal(this, 1.25, 40, 20.0F));
2450- @@ -137,6 +182 ,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
2457+ @@ -137,6 +189 ,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
24512458 this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 0.7));
24522459 this.goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 6.0F));
24532460 this.goalSelector.addGoal(9, new RandomLookAroundGoal(this));
24542461+ this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.LlamaHasRider(this)); // Purpur - Ridables
24552462 this.targetSelector.addGoal(1, new Llama.LlamaHurtByTargetGoal(this));
24562463 this.targetSelector.addGoal(2, new Llama.LlamaAttackWolfGoal(this));
24572464 }
2458- @@ -540,4 +586,11 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
2459- return this.name;
2460- }
2461- }
2462- +
2463- + @Nullable
2464- + @Override
2465- + public LivingEntity getControllingPassenger() {
2466- + Entity firstPassenger = this.getFirstPassenger();
2467- + return !this.isNoAi() && firstPassenger instanceof net.minecraft.world.entity.Mob mob && firstPassenger.canControlVehicle() ? mob : null;
2468- + }
2469- }
24702465diff --git a/net/minecraft/world/entity/animal/horse/Mule.java b/net/minecraft/world/entity/animal/horse/Mule.java
24712466index 39725b7a6bac9390406733cd51d7341d0cb363d1..b1c96936ba8dcba4435a649dd7e6ec3c921c3702 100644
24722467--- a/net/minecraft/world/entity/animal/horse/Mule.java
0 commit comments