mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-19 09:27:43 +01:00
re-add "abstract horse" attribute logic
This commit is contained in:
@@ -474,6 +474,274 @@ index f30aad7e722f895b8f6966f042021fc80f470994..eaf2e6b9865a36b7c648bd1205db922a
|
||||
// Purpur end
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
|
||||
index 05c7680569346bb863b896bcc9515f3e7cfb8114..a58028bfd3722210e801e85c355d679cd8557e85 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java
|
||||
@@ -314,6 +314,23 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Rider
|
||||
return this.dashCooldown;
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ @Override
|
||||
+ public float generateMaxHealth(net.minecraft.util.RandomSource random) {
|
||||
+ return (float) generateMaxHealth(this.level.purpurConfig.camelMaxHealthMin, this.level.purpurConfig.camelMaxHealthMax);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public double generateJumpStrength(net.minecraft.util.RandomSource random) {
|
||||
+ return generateJumpStrength(this.level.purpurConfig.camelJumpStrengthMin, this.level.purpurConfig.camelJumpStrengthMax);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public double generateSpeed(net.minecraft.util.RandomSource random) {
|
||||
+ return generateSpeed(this.level.purpurConfig.camelMovementSpeedMin, this.level.purpurConfig.camelMovementSpeedMax);
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
@Override
|
||||
protected SoundEvent getAmbientSound() {
|
||||
return SoundEvents.CAMEL_AMBIENT;
|
||||
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 2d298960afe61ed2b73ca72908849879408738b9..28dbaeb4de0c133a68878f65da33d2939c7344b2 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
|
||||
@@ -155,6 +155,44 @@ public abstract class AbstractHorse extends Animal implements ContainerListener,
|
||||
public boolean isRidable() {
|
||||
return false; // vanilla handles
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ public void initAttributes() {
|
||||
+ this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.generateMaxHealth(random));
|
||||
+ this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(this.generateSpeed(random));
|
||||
+ this.getAttribute(Attributes.JUMP_STRENGTH).setBaseValue(this.generateJumpStrength(random));
|
||||
+ }
|
||||
+
|
||||
+ protected double generateMaxHealth(double min, double max) {
|
||||
+ if (min == max) return min;
|
||||
+ int diff = Mth.floor(max - min);
|
||||
+ double base = max - diff;
|
||||
+ int first = Mth.floor((double) diff / 2);
|
||||
+ int rest = diff - first;
|
||||
+ return base + random.nextInt(first + 1) + random.nextInt(rest + 1);
|
||||
+ }
|
||||
+
|
||||
+ protected double generateJumpStrength(double min, double max) {
|
||||
+ if (min == max) return min;
|
||||
+ return min + (max - min) * this.random.nextDouble();
|
||||
+ }
|
||||
+
|
||||
+ protected double generateSpeed(double min, double max) {
|
||||
+ if (min == max) return min;
|
||||
+ return min + (max - min) * this.random.nextDouble();
|
||||
+ }
|
||||
+
|
||||
+ protected float generateMaxHealth(RandomSource random) {
|
||||
+ return 15.0F + (float) random.nextInt(8) + (float) random.nextInt(9);
|
||||
+ }
|
||||
+
|
||||
+ protected double generateJumpStrength(RandomSource random) {
|
||||
+ return 0.4000000059604645D + random.nextDouble() * 0.2D + random.nextDouble() * 0.2D + random.nextDouble() * 0.2D;
|
||||
+ }
|
||||
+
|
||||
+ protected double generateSpeed(RandomSource random) {
|
||||
+ return (0.44999998807907104D + random.nextDouble() * 0.3D + random.nextDouble() * 0.3D + random.nextDouble() * 0.3D) * 0.25D;
|
||||
+ }
|
||||
// Purpur end
|
||||
|
||||
@Override
|
||||
@@ -1263,7 +1301,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener,
|
||||
entityData = new AgeableMob.AgeableMobGroupData(0.2F);
|
||||
}
|
||||
|
||||
- this.randomizeAttributes(world.getRandom());
|
||||
+ // this.randomizeAttributes(world.getRandom()); // Purpur - replaced by initAttributes()
|
||||
return super.finalizeSpawn(world, difficulty, spawnReason, (SpawnGroupData) entityData, entityNbt);
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java
|
||||
index 6ed4ef1c628b77448629388bfc4a8575dd4afefd..7afd065d6a5d5b9650e64a26449dcf81724744bb 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java
|
||||
@@ -20,6 +20,21 @@ public class Donkey extends AbstractChestedHorse {
|
||||
public boolean dismountsUnderwater() {
|
||||
return level.purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level.purpurConfig.donkeyRidableInWater;
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ public float generateMaxHealth(net.minecraft.util.RandomSource random) {
|
||||
+ return (float) generateMaxHealth(this.level.purpurConfig.donkeyMaxHealthMin, this.level.purpurConfig.donkeyMaxHealthMax);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public double generateJumpStrength(net.minecraft.util.RandomSource random) {
|
||||
+ return generateJumpStrength(this.level.purpurConfig.donkeyJumpStrengthMin, this.level.purpurConfig.donkeyJumpStrengthMax);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public double generateSpeed(net.minecraft.util.RandomSource random) {
|
||||
+ return generateSpeed(this.level.purpurConfig.donkeyMovementSpeedMin, this.level.purpurConfig.donkeyMovementSpeedMax);
|
||||
+ }
|
||||
// Purpur end
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java
|
||||
index 9d8879fc2f7afafdd42cd8ee471c698b31159209..fcd5afe0e25482877894fde500ddf7a0cb290b62 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java
|
||||
@@ -45,6 +45,21 @@ public class Horse extends AbstractHorse implements VariantHolder<Variant> {
|
||||
public boolean dismountsUnderwater() {
|
||||
return level.purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level.purpurConfig.horseRidableInWater;
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ public float generateMaxHealth(RandomSource random) {
|
||||
+ return (float) generateMaxHealth(this.level.purpurConfig.horseMaxHealthMin, this.level.purpurConfig.horseMaxHealthMax);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public double generateJumpStrength(RandomSource random) {
|
||||
+ return generateJumpStrength(this.level.purpurConfig.horseJumpStrengthMin, this.level.purpurConfig.horseJumpStrengthMax);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public double generateSpeed(RandomSource random) {
|
||||
+ return generateSpeed(this.level.purpurConfig.horseMovementSpeedMin, this.level.purpurConfig.horseMovementSpeedMax);
|
||||
+ }
|
||||
// Purpur end
|
||||
|
||||
@Override
|
||||
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 42861ddab4397187eb6a5d4a729bc58e6fc7ddeb..9953f80e924e8843ceebdbfa675c2315bf6cf63f 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
|
||||
@@ -120,6 +120,21 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
|
||||
public boolean isSaddled() {
|
||||
return super.isSaddled() || (isTamed() && getSwag() != null);
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ public float generateMaxHealth(RandomSource random) {
|
||||
+ return (float) generateMaxHealth(this.level.purpurConfig.llamaMaxHealthMin, this.level.purpurConfig.llamaMaxHealthMax);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public double generateJumpStrength(RandomSource random) {
|
||||
+ return generateJumpStrength(this.level.purpurConfig.llamaJumpStrengthMin, this.level.purpurConfig.llamaJumpStrengthMax);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public double generateSpeed(RandomSource random) {
|
||||
+ return generateSpeed(this.level.purpurConfig.llamaMovementSpeedMin, this.level.purpurConfig.llamaMovementSpeedMax);
|
||||
+ }
|
||||
// Purpur end
|
||||
|
||||
public boolean isTraderLlama() {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java b/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java
|
||||
index 84d265aaa4a2c5942e3ca04deab644570bb8ee83..c18806e6adeccafcd4731aab0c9949788e72164b 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Mule.java
|
||||
@@ -19,6 +19,21 @@ public class Mule extends AbstractChestedHorse {
|
||||
public boolean dismountsUnderwater() {
|
||||
return level.purpurConfig.useDismountsUnderwaterTag ? super.dismountsUnderwater() : !level.purpurConfig.muleRidableInWater;
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ public float generateMaxHealth(net.minecraft.util.RandomSource random) {
|
||||
+ return (float) generateMaxHealth(this.level.purpurConfig.muleMaxHealthMin, this.level.purpurConfig.muleMaxHealthMax);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public double generateJumpStrength(net.minecraft.util.RandomSource random) {
|
||||
+ return generateJumpStrength(this.level.purpurConfig.muleJumpStrengthMin, this.level.purpurConfig.muleJumpStrengthMax);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public double generateSpeed(net.minecraft.util.RandomSource random) {
|
||||
+ return generateSpeed(this.level.purpurConfig.muleMovementSpeedMin, this.level.purpurConfig.muleMovementSpeedMax);
|
||||
+ }
|
||||
// Purpur end
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java
|
||||
index 7c891be8b94a6438910a53c0473393d49b19f5d9..6d68ac4a6cd65baaf7789cc0567492e43ad5bf91 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/SkeletonHorse.java
|
||||
@@ -33,6 +33,21 @@ public class SkeletonHorse extends AbstractHorse {
|
||||
public boolean isTamed() {
|
||||
return true;
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ public float generateMaxHealth(RandomSource random) {
|
||||
+ return (float) generateMaxHealth(this.level.purpurConfig.skeletonHorseMaxHealthMin, this.level.purpurConfig.skeletonHorseMaxHealthMax);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public double generateJumpStrength(RandomSource random) {
|
||||
+ return generateJumpStrength(this.level.purpurConfig.skeletonHorseJumpStrengthMin, this.level.purpurConfig.skeletonHorseJumpStrengthMax);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public double generateSpeed(RandomSource random) {
|
||||
+ return generateSpeed(this.level.purpurConfig.skeletonHorseMovementSpeedMin, this.level.purpurConfig.skeletonHorseMovementSpeedMax);
|
||||
+ }
|
||||
// Purpur end
|
||||
|
||||
public static AttributeSupplier.Builder createAttributes() {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java b/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java
|
||||
index 6747dbd11a883249f18cd51320daa663d6203bb7..17b29f0245c8c140528871aeada7ee36ce22944c 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/TraderLlama.java
|
||||
@@ -47,6 +47,21 @@ public class TraderLlama extends Llama {
|
||||
public boolean isSaddled() {
|
||||
return super.isSaddled() || isTamed();
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ public float generateMaxHealth(net.minecraft.util.RandomSource random) {
|
||||
+ return (float) generateMaxHealth(this.level.purpurConfig.traderLlamaMaxHealthMin, this.level.purpurConfig.traderLlamaMaxHealthMax);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public double generateJumpStrength(net.minecraft.util.RandomSource random) {
|
||||
+ return generateJumpStrength(this.level.purpurConfig.traderLlamaJumpStrengthMin, this.level.purpurConfig.traderLlamaJumpStrengthMax);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public double generateSpeed(net.minecraft.util.RandomSource random) {
|
||||
+ return generateSpeed(this.level.purpurConfig.traderLlamaMovementSpeedMin, this.level.purpurConfig.traderLlamaMovementSpeedMax);
|
||||
+ }
|
||||
// Purpur end
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java
|
||||
index b6e2e7398413296449e8f132a2a6296da231f4d4..e818bd705b03aa1fedfd981ec44c9b8267c67a00 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/ZombieHorse.java
|
||||
@@ -31,6 +31,21 @@ public class ZombieHorse extends AbstractHorse {
|
||||
public boolean isTamed() {
|
||||
return true;
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ public float generateMaxHealth(RandomSource random) {
|
||||
+ return (float) generateMaxHealth(this.level.purpurConfig.zombieHorseMaxHealthMin, this.level.purpurConfig.zombieHorseMaxHealthMax);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public double generateJumpStrength(RandomSource random) {
|
||||
+ return generateJumpStrength(this.level.purpurConfig.zombieHorseJumpStrengthMin, this.level.purpurConfig.zombieHorseJumpStrengthMax);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public double generateSpeed(RandomSource random) {
|
||||
+ return generateSpeed(this.level.purpurConfig.zombieHorseMovementSpeedMin, this.level.purpurConfig.zombieHorseMovementSpeedMax);
|
||||
+ }
|
||||
// Purpur end
|
||||
|
||||
public static AttributeSupplier.Builder createAttributes() {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
||||
index 473b801645a62c89ed680f993761dcb64f73bc01..30ff9967aa19a9e77bdf7d32e494276b1b72ab72 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java
|
||||
|
||||
Reference in New Issue
Block a user