Fix #452 - Untamed horses/llamas lose AI when ridden

This commit is contained in:
William Blake Galbreath
2021-06-30 19:04:03 -05:00
parent 617db08a07
commit 009096aa62

View File

@@ -2106,7 +2106,7 @@ index 580f3e8de2e10ddc01430e84fc42e243736c4810..c0d85eb70dbe1d85d07b47a41a43d195
this.level.getProfiler().pop();
this.level.getProfiler().push("goatActivityUpdate");
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java
index ba58e066cca533dfed7610a730c4dd7423fe124d..919410ce27e7e42e297c2caba7d3d7c1b623aede 100644
index ba58e066cca533dfed7610a730c4dd7423fe124d..d91b6951dc25097e6f84296406634e48e1f13404 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java
@@ -114,12 +114,22 @@ public abstract class AbstractHorse extends Animal implements ContainerListener,
@@ -2128,7 +2128,7 @@ index ba58e066cca533dfed7610a730c4dd7423fe124d..919410ce27e7e42e297c2caba7d3d7c1
+
@Override
protected void registerGoals() {
+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur
+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HorseHasRider(this)); // Purpur
this.goalSelector.addGoal(1, new PanicGoal(this, 1.2D));
this.goalSelector.addGoal(1, new RunAroundLikeCrazyGoal(this, 1.2D));
this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D, AbstractHorse.class));
@@ -2136,7 +2136,7 @@ index ba58e066cca533dfed7610a730c4dd7423fe124d..919410ce27e7e42e297c2caba7d3d7c1
this.goalSelector.addGoal(6, new WaterAvoidingRandomStrollGoal(this, 0.7D));
this.goalSelector.addGoal(7, new LookAtPlayerGoal(this, Player.class, 6.0F));
this.goalSelector.addGoal(8, new RandomLookAroundGoal(this));
+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur
+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HorseHasRider(this)); // Purpur
this.addBehaviourGoals();
}
@@ -2177,7 +2177,7 @@ index 6326471fe48133bef94e98fd028e60a951bccf2b..c7b0d6a987644e0b589c143b0b6b6805
protected void randomizeAttributes() {
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)this.generateRandomMaxHealth());
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
index 5c31519193126b715105e1e83bb54f6a1681d19e..0671185c358398fe0c4c1dbf4ede2f3e8c4794fb 100644
index 5c31519193126b715105e1e83bb54f6a1681d19e..d336e2c63b39b22f9f3a7a84ee059c2d9d71239c 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
@@ -68,7 +68,46 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob {
@@ -2231,7 +2231,7 @@ index 5c31519193126b715105e1e83bb54f6a1681d19e..0671185c358398fe0c4c1dbf4ede2f3e
@Override
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur
+ this.goalSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HorseHasRider(this)); // Purpur
this.goalSelector.addGoal(1, new RunAroundLikeCrazyGoal(this, 1.2D));
this.goalSelector.addGoal(2, new LlamaFollowCaravanGoal(this, (double)2.1F));
this.goalSelector.addGoal(3, new RangedAttackGoal(this, 1.25D, 40, 20.0F));
@@ -2239,7 +2239,7 @@ index 5c31519193126b715105e1e83bb54f6a1681d19e..0671185c358398fe0c4c1dbf4ede2f3e
this.goalSelector.addGoal(6, new WaterAvoidingRandomStrollGoal(this, 0.7D));
this.goalSelector.addGoal(7, new LookAtPlayerGoal(this, Player.class, 6.0F));
this.goalSelector.addGoal(8, new RandomLookAroundGoal(this));
+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HasRider(this)); // Purpur
+ this.targetSelector.addGoal(0, new net.pl3x.purpur.entity.ai.HorseHasRider(this)); // Purpur
this.targetSelector.addGoal(1, new Llama.LlamaHurtByTargetGoal(this));
this.targetSelector.addGoal(2, new Llama.LlamaAttackWolfGoal(this));
}