Files
Purpur/patches/server/0008-Implement-LivingEntity-safeFallDistance.patch
William Blake Galbreath 4bc7fbcdfa Update to 1.14.3
2019-06-25 21:12:19 -05:00

99 lines
4.4 KiB
Diff

From 4197a16281fc9dfa77cd5f5ed098db1fe2fdfe79 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
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<? extends EntityGiantZombie> 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<org.bukkit.inventory.ItemStack> drops = new ArrayList<org.bukkit.inventory.ItemStack>();
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