From 0000000000000000000000000000000000000000 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/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java index e733c1e8f0b180bf1508e4f004124d44407f6c07..0fc358d5491900affb61545d89a788bbb2435c04 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -255,6 +255,7 @@ public abstract class LivingEntity extends Entity { // CraftBukkit start public int expToDrop; public int maxAirTicks = 300; + public float safeFallDistance = 3.0F; // Purpur public boolean forceDrops; public ArrayList drops = new ArrayList(); public final org.bukkit.craftbukkit.attribute.CraftAttributeMap craftAttributes; @@ -350,8 +351,8 @@ public abstract class LivingEntity extends Entity { this.tryAddSoulSpeed(); } - if (!this.level.isClientSide && this.fallDistance > 3.0F && onGround) { - float f = (float) Mth.ceil(this.fallDistance - 3.0F); + if (!this.level.isClientSide && this.fallDistance > this.safeFallDistance && onGround) { // Purpur + float f = (float) Mth.ceil(this.fallDistance - this.safeFallDistance); // Purpur if (!landedState.isAir()) { double d1 = Math.min((double) (0.2F + f / 15.0F), 2.5D); @@ -1880,7 +1881,7 @@ public abstract class LivingEntity extends Entity { MobEffectInstance mobeffect = this.getEffect(MobEffects.JUMP); float f2 = mobeffect == null ? 0.0F : (float) (mobeffect.getAmplifier() + 1); - return Mth.ceil((fallDistance - 3.0F - f2) * damageMultiplier); + return Mth.ceil((fallDistance - this.safeFallDistance - f2) * damageMultiplier); // Purpur } protected void playBlockFallSound() { 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..ff032dd031360cd4022dd19e772176d72e3e1340 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 @@ -285,7 +285,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, @Override protected int calculateFallDamage(float fallDistance, float damageMultiplier) { - return Mth.ceil((fallDistance * 0.5F - 3.0F) * damageMultiplier); + return Mth.ceil((fallDistance * 0.5F - this.safeFallDistance) * damageMultiplier); } protected int getInventorySize() { diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java index 0d578ab12c874bd2daccc4322a3fe1abafa4bc18..a183226bb0cf01c5aaf7babe1d08fa9ab7388648 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java @@ -12,6 +12,7 @@ import net.minecraft.world.level.LevelReader; public class Giant extends Monster { public Giant(EntityType type, Level world) { super(type, world); + this.safeFallDistance = 10.0F; // Purpur } @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java index 53b61b609361c305fb8d1f1a8700e81ce139fde4..3e4ad876fa34d0e509fe6331767d31068c4ddb20 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -872,4 +872,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { throw new IllegalArgumentException(entityCategory + " is an unrecognized entity category"); } // Paper end + + // Purpur start + @Override + public float getSafeFallDistance() { + return getHandle().safeFallDistance; + } + + @Override + public void setSafeFallDistance(float safeFallDistance) { + getHandle().safeFallDistance = safeFallDistance; + } + // Purpur end }