From 9cd51989f8d31b988b3cbdb9ad7f60fd1c1b33da Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 5 May 2019 12:58:45 -0500 Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/net/minecraft/server/EntityGiantZombie.java b/src/main/java/net/minecraft/server/EntityGiantZombie.java index 702242653a47051c9ed32304c427c27652af6157..9f4f56c47ecd4b35ebf33ca0bf9a040074ababf2 100644 --- a/src/main/java/net/minecraft/server/EntityGiantZombie.java +++ b/src/main/java/net/minecraft/server/EntityGiantZombie.java @@ -4,6 +4,7 @@ public class EntityGiantZombie extends EntityMonster { public EntityGiantZombie(EntityTypes entitytypes, World world) { super(entitytypes, world); + this.safeFallDistance = 10.0F; // Purpur } @Override diff --git a/src/main/java/net/minecraft/server/EntityHorseAbstract.java b/src/main/java/net/minecraft/server/EntityHorseAbstract.java index fcb31147622b4b81934be05ffc8de5e821ce69b7..ce26e65aaf25a41663ecd8c935967c33ff3de1dc 100644 --- a/src/main/java/net/minecraft/server/EntityHorseAbstract.java +++ b/src/main/java/net/minecraft/server/EntityHorseAbstract.java @@ -210,7 +210,7 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven @Override protected int e(float f, float f1) { - return MathHelper.f((f * 0.5F - 3.0F) * f1); + return MathHelper.f((f * 0.5F - this.safeFallDistance) * f1); // Purpur } protected int getChestSlots() { diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java index c57e7e1bccfc3a0cccfbaca44d9f369ec1f5683c..309a20e06461aeb362080b9aeb256f2c73d548a5 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -132,6 +132,7 @@ public abstract class EntityLiving extends Entity { // CraftBukkit start public int expToDrop; public int maxAirTicks = 300; + public float safeFallDistance = 3.0F; // Purpur boolean forceDrops; ArrayList drops = new ArrayList(); public final org.bukkit.craftbukkit.attribute.CraftAttributeMap craftAttributes; @@ -226,8 +227,8 @@ public abstract class EntityLiving extends Entity { this.cR(); } - if (!this.world.isClientSide && this.fallDistance > 3.0F && flag) { - float f = (float) MathHelper.f(this.fallDistance - 3.0F); + if (!this.world.isClientSide && this.fallDistance > this.safeFallDistance && flag) { // Purpur + float f = (float) MathHelper.f(this.fallDistance - this.safeFallDistance); // Purpur if (!iblockdata.isAir()) { double d1 = Math.min((double) (0.2F + f / 15.0F), 2.5D); @@ -1679,7 +1680,7 @@ public abstract class EntityLiving extends Entity { MobEffect mobeffect = this.getEffect(MobEffects.JUMP); float f2 = mobeffect == null ? 0.0F : (float) (mobeffect.getAmplifier() + 1); - return MathHelper.f((f - 3.0F - f2) * f1); + return MathHelper.f((f - this.safeFallDistance - f2) * f1); // Purpur } protected void playBlockStepSound() { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java index 1fc356d0b74c1cbb19bf7527088f1f61b6da5422..66447231244dbe3d6fadaa0d00710f9ec7f72445 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -816,4 +816,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { getHandle().receive(((CraftItem) item).getHandle(), quantity); } // Paper end + + // Purpur start + @Override + public float getSafeFallDistance() { + return getHandle().safeFallDistance; + } + + @Override + public void setSafeFallDistance(float safeFallDistance) { + getHandle().safeFallDistance = safeFallDistance; + } + // Purpur end }