Skip to content

Commit 3658291

Browse files
mxuexegranny
andauthored
Fix llama not moving when ridden, Fixes #1507 (#1684)
Co-authored-by: granny <contact@granny.dev>
1 parent d0b705e commit 3658291

5 files changed

Lines changed: 25 additions & 18 deletions

purpur-server/minecraft-patches/features/0001-Ridables.patch

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2384,10 +2384,10 @@ index 2a1d720557c0bd4895a32723e34512c0a557e4f2..f1cb2e315e1d86f9fcd87db11d3ee7a8
23842384
protected void randomizeAttributes(RandomSource random) {
23852385
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt));
23862386
diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java
2387-
index 5e3382351b1b5728750534f64babc85c4da3ac54..da6450f7573ca9797577d5afae2bb1365d112177 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,21 +2433,28 @@ index 5e3382351b1b5728750534f64babc85c4da3ac54..da6450f7573ca9797577d5afae2bb136
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));

purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ index 8e8ddab59de508c84c4182e105a11554387dcce0..1896f91e10a5e17332836d5354813a18
2323
protected ParticleOptions getInkParticle() {
2424
return ParticleTypes.GLOW_SQUID_INK;
2525
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
26-
index d272f5e789cb6c03ede0bece14fc3fe976a02ff3..41b6b18130d89b3c3c31bbb2d184fa735a8cd99c 100644
26+
index 4f67ae2491d053d3d7261440c029da512dc1002b..7d0a8048cea101be9747a2b89713288f53ce6637 100644
2727
--- a/net/minecraft/world/entity/LivingEntity.java
2828
+++ b/net/minecraft/world/entity/LivingEntity.java
2929
@@ -291,6 +291,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -712,10 +712,10 @@ index f1cb2e315e1d86f9fcd87db11d3ee7a81cfe12f6..53c0eac62018a0d88e30b8c13de94216
712712
protected void randomizeAttributes(RandomSource random) {
713713
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt));
714714
diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java
715-
index da6450f7573ca9797577d5afae2bb1365d112177..6fe6507edbf4c3c2795b8fe000d230d5fe6a2486 100644
715+
index f7c6b2188ed3801417c7497dbc36749def3e5057..3bc0f670a84216e5a62d1e3a9fb26bd85a0cd79a 100644
716716
--- a/net/minecraft/world/entity/animal/horse/Llama.java
717717
+++ b/net/minecraft/world/entity/animal/horse/Llama.java
718-
@@ -130,6 +130,23 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
718+
@@ -137,6 +137,23 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
719719
}
720720
// Purpur end - Ridables
721721

@@ -1222,7 +1222,7 @@ index 0335e85f196363c06597812149e9a93cba57fa9e..5b0794bd87423715cada1f860b4141fd
12221222
EntityType<Husk> entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random
12231223
) {
12241224
diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java
1225-
index 304a1ce41071e5597859b1235fa014f966ff5cfb..c45786fa6b9c7834b73fa0266ad4f37dfdfb8937 100644
1225+
index bb2649001f0b31676a51378745818d5c5b15c443..6311261d71aa062ba497a73cd22cb5dbdf2a4cdb 100644
12261226
--- a/net/minecraft/world/entity/monster/Illusioner.java
12271227
+++ b/net/minecraft/world/entity/monster/Illusioner.java
12281228
@@ -74,6 +74,16 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob {

purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ index 869a0154c81593db8933f9daa6a7d3a9d02facc5..37b6bfa8dc1fd4ed0006f6531d2056bc
150150
this.partner.resetLove();
151151
serverLevel.addFreshEntityWithPassengers(fox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason
152152
diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java
153-
index 801fc7e1a6ec56a6cde5b787daebe3c8c008cc93..50a64a312cb6af0f39117993553b66de1f095150 100644
153+
index 6c80c12313147fb022d1bb0c8694fcf85174ae7c..136b918f053cacbc4fa60b0ed434619c5e07adf5 100644
154154
--- a/net/minecraft/world/entity/animal/HappyGhast.java
155155
+++ b/net/minecraft/world/entity/animal/HappyGhast.java
156156
@@ -140,6 +140,13 @@ public class HappyGhast extends Animal {
@@ -451,10 +451,10 @@ index 53c0eac62018a0d88e30b8c13de94216ff829cd8..3678c767818abb9e4180c2ade378ca09
451451
protected void randomizeAttributes(RandomSource random) {
452452
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt));
453453
diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java
454-
index 6fe6507edbf4c3c2795b8fe000d230d5fe6a2486..9cfc31b9acca44c56b78ba6d935bcb6c1d6c5697 100644
454+
index 3bc0f670a84216e5a62d1e3a9fb26bd85a0cd79a..45d0977b5016a8728b11ec13c528b160598c80e2 100644
455455
--- a/net/minecraft/world/entity/animal/horse/Llama.java
456456
+++ b/net/minecraft/world/entity/animal/horse/Llama.java
457-
@@ -147,6 +147,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
457+
@@ -154,6 +154,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
458458
}
459459
// Purpur end - Configurable entity base attributes
460460

purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -513,10 +513,10 @@ index 3678c767818abb9e4180c2ade378ca09761ad784..2928159447a87ea8cc945e73e2e81ad1
513513
protected void randomizeAttributes(RandomSource random) {
514514
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt));
515515
diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java
516-
index 9cfc31b9acca44c56b78ba6d935bcb6c1d6c5697..017482c8818a854b23237e27e3304498d800569d 100644
516+
index 45d0977b5016a8728b11ec13c528b160598c80e2..ea25c48cb60aff6fbc82a364789beff92b054a88 100644
517517
--- a/net/minecraft/world/entity/animal/horse/Llama.java
518518
+++ b/net/minecraft/world/entity/animal/horse/Llama.java
519-
@@ -154,6 +154,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
519+
@@ -161,6 +161,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
520520
}
521521
// Purpur end - Make entity breeding times configurable
522522

@@ -899,7 +899,7 @@ index 75cb1db5584c04e442583ab2f50a26132ed48bfb..9baec22561093d64157d93449e84c23b
899899
EntityType<Husk> entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random
900900
) {
901901
diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java
902-
index c45786fa6b9c7834b73fa0266ad4f37dfdfb8937..b2e59058c71eb0b05670be8dcddfff073ae2d0db 100644
902+
index 6311261d71aa062ba497a73cd22cb5dbdf2a4cdb..4b68c0e999c37b3a3b62b522e2fcc805d2483943 100644
903903
--- a/net/minecraft/world/entity/monster/Illusioner.java
904904
+++ b/net/minecraft/world/entity/monster/Illusioner.java
905905
@@ -84,6 +84,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob {

purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -509,10 +509,10 @@ index 2928159447a87ea8cc945e73e2e81ad1dbe13680..f1080a40f759b30b921b88b4f6edd35f
509509
protected void randomizeAttributes(RandomSource random) {
510510
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt));
511511
diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java
512-
index 017482c8818a854b23237e27e3304498d800569d..1bef43f42aee02a0a00556318607072ce9814860 100644
512+
index ea25c48cb60aff6fbc82a364789beff92b054a88..455a84ffa16152137409777e1fddbab5a21bd57d 100644
513513
--- a/net/minecraft/world/entity/animal/horse/Llama.java
514514
+++ b/net/minecraft/world/entity/animal/horse/Llama.java
515-
@@ -161,6 +161,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
515+
@@ -168,6 +168,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
516516
}
517517
// Purpur end - Toggle for water sensitive mob damage
518518

@@ -869,7 +869,7 @@ index 3f331215ef49c52fa3a53bcf744159d2221111f5..a4ce65911a5d778f60bcedb3acd9fe59
869869
EntityType<Husk> entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random
870870
) {
871871
diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java
872-
index b2e59058c71eb0b05670be8dcddfff073ae2d0db..93eaafe260312f26840a2afee8375b8a95d97ba2 100644
872+
index 4b68c0e999c37b3a3b62b522e2fcc805d2483943..2ea8c8480dcc15eb5b4bc9686554ec912ef1f3f4 100644
873873
--- a/net/minecraft/world/entity/monster/Illusioner.java
874874
+++ b/net/minecraft/world/entity/monster/Illusioner.java
875875
@@ -91,6 +91,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob {

0 commit comments

Comments
 (0)