From 4197a16281fc9dfa77cd5f5ed098db1fe2fdfe79 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 5 May 2019 12:58:45 -0500 Subject: [PATCH] Implement LivingEntity safeFallDistance --- .../java/net/minecraft/server/EntityGiantZombie.java | 3 +++ .../net/minecraft/server/EntityHorseAbstract.java | 2 +- src/main/java/net/minecraft/server/EntityLiving.java | 3 ++- src/main/java/net/minecraft/server/EntityLlama.java | 2 +- .../bukkit/craftbukkit/entity/CraftLivingEntity.java | 12 ++++++++++++ 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/minecraft/server/EntityGiantZombie.java b/src/main/java/net/minecraft/server/EntityGiantZombie.java index d9e5eaad12..bcbade19ea 100644 --- a/src/main/java/net/minecraft/server/EntityGiantZombie.java +++ b/src/main/java/net/minecraft/server/EntityGiantZombie.java @@ -4,6 +4,9 @@ public class EntityGiantZombie extends EntityMonster { public EntityGiantZombie(EntityTypes entitytypes, World world) { super(entitytypes, world); + // Purpur start + this.safeFallDistance = 10.0F; + // Purpur end } @Override diff --git a/src/main/java/net/minecraft/server/EntityHorseAbstract.java b/src/main/java/net/minecraft/server/EntityHorseAbstract.java index b06bbc45cf..e08eaddef3 100644 --- a/src/main/java/net/minecraft/server/EntityHorseAbstract.java +++ b/src/main/java/net/minecraft/server/EntityHorseAbstract.java @@ -179,7 +179,7 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven this.a(SoundEffects.ENTITY_HORSE_LAND, 0.4F, 1.0F); } - int i = MathHelper.f((f * 0.5F - 3.0F) * f1); + int i = MathHelper.f((f * 0.5F - this.safeFallDistance) * f1); // Purpur if (i > 0) { this.damageEntity(DamageSource.FALL, (float) i); diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java index d44ea9ec5d..c2d83bf3eb 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -122,6 +122,7 @@ public abstract class EntityLiving extends Entity { // CraftBukkit start public int expToDrop; public int maxAirTicks = 300; + public float safeFallDistance = 3.0F; boolean forceDrops; ArrayList drops = new ArrayList(); public org.bukkit.craftbukkit.attribute.CraftAttributeMap craftAttributes; @@ -1530,7 +1531,7 @@ public abstract class EntityLiving extends Entity { super.b(f, f1); MobEffect mobeffect = this.getEffect(MobEffects.JUMP); float f2 = mobeffect == null ? 0.0F : (float) (mobeffect.getAmplifier() + 1); - int i = MathHelper.f((f - 3.0F - f2) * f1); + int i = MathHelper.f((f - this.safeFallDistance - f2) * f1); // Purpur if (i > 0) { // CraftBukkit start diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java index 156a70a6cd..75616ac878 100644 --- a/src/main/java/net/minecraft/server/EntityLlama.java +++ b/src/main/java/net/minecraft/server/EntityLlama.java @@ -344,7 +344,7 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn @Override public void b(float f, float f1) { - int i = MathHelper.f((f * 0.5F - 3.0F) * f1); + int i = MathHelper.f((f * 0.5F - this.safeFallDistance) * f1); // Purpur if (i > 0) { if (f >= 6.0F) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java index c4aa1945ff..98f62d7760 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -699,4 +699,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { return getHandle().isHandRaised(); } // Paper end + + // Purpur start + @Override + public float getSafeFallDistance() { + return getHandle().safeFallDistance; + } + + @Override + public void setSafeFallDistance(float safeFallDistance) { + getHandle().safeFallDistance = safeFallDistance; + } + // Purpur end } -- 2.20.1