Implement LivingEntity safeFallDistance

This commit is contained in:
William Blake Galbreath
2019-05-05 13:07:43 -05:00
parent aea4028037
commit 17ece600dc
4 changed files with 202 additions and 53 deletions

View File

@@ -0,0 +1,37 @@
From 5b9dd7186e204dd62aa6430c2dc97f639a8d0cb8 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Sun, 5 May 2019 12:58:19 -0500
Subject: [PATCH] Implement LivingEntity safeFallDistance
---
.../java/org/bukkit/entity/LivingEntity.java | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java
index 956d6886..a3baaecb 100644
--- a/src/main/java/org/bukkit/entity/LivingEntity.java
+++ b/src/main/java/org/bukkit/entity/LivingEntity.java
@@ -649,4 +649,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
*/
boolean isHandRaised();
// Paper end
+
+ // Purpur start
+ /**
+ * Gets the distance (in blocks) this entity can safely fall without taking damage
+ *
+ * @return Safe fall distance
+ */
+ float getSafeFallDistance();
+
+ /**
+ * Set the distance (in blocks) this entity can safely fall without taking damage
+ *
+ * @param safeFallDistance Safe fall distance
+ */
+ void setSafeFallDistance(float safeFallDistance);
+ // Purpur end
}
--
2.20.1

View File

@@ -1,22 +1,21 @@
From 16828d4dec0fbb8ce61a353ec4c952e4937211e8 Mon Sep 17 00:00:00 2001
From e8f6e9aeba7fe0b9bca877c2df79fea8c3ca9472 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Fri, 3 May 2019 06:08:35 -0500
Subject: [PATCH] Integrate ridables
---
.../java/org/bukkit/entity/LivingEntity.java | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
src/main/java/org/bukkit/entity/LivingEntity.java | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java
index 956d6886..c10e735e 100644
index a3baaecb..097e82a0 100644
--- a/src/main/java/org/bukkit/entity/LivingEntity.java
+++ b/src/main/java/org/bukkit/entity/LivingEntity.java
@@ -649,4 +649,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
@@ -664,5 +664,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
* @param safeFallDistance Safe fall distance
*/
boolean isHandRaised();
// Paper end
void setSafeFallDistance(float safeFallDistance);
+
+ // Purpur start
+ /**
+ * Whether or not this entity can be ridden in water
+ *
@@ -30,7 +29,7 @@ index 956d6886..c10e735e 100644
+ * @param canBeRiddenInWater Whether or not this entity can be ridden in water
+ */
+ void setCanBeRiddenInWater(boolean canBeRiddenInWater);
+ // Purpur end
// Purpur end
}
--
2.20.1

View File

@@ -0,0 +1,98 @@
From 9b22151ca279174b771b39bf13bea6f2422c9700 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 dd827aea..053a880c 100644
--- a/src/main/java/net/minecraft/server/EntityGiantZombie.java
+++ b/src/main/java/net/minecraft/server/EntityGiantZombie.java
@@ -7,6 +7,9 @@ public class EntityGiantZombie extends EntityMonster {
public EntityGiantZombie(World world) {
super(EntityTypes.GIANT, world);
this.setSize(this.width * 6.0F, this.length * 6.0F);
+ // Purpur start
+ this.safeFallDistance = 10.0F;
+ // Purpur end
}
public float getHeadHeight() {
diff --git a/src/main/java/net/minecraft/server/EntityHorseAbstract.java b/src/main/java/net/minecraft/server/EntityHorseAbstract.java
index 95327763..e211b95c 100644
--- a/src/main/java/net/minecraft/server/EntityHorseAbstract.java
+++ b/src/main/java/net/minecraft/server/EntityHorseAbstract.java
@@ -181,7 +181,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 4d5459d2..13a3bd02 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;
@@ -1368,7 +1369,7 @@ public abstract class EntityLiving extends Entity {
super.c(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 82a32c61..5e752b0c 100644
--- a/src/main/java/net/minecraft/server/EntityLlama.java
+++ b/src/main/java/net/minecraft/server/EntityLlama.java
@@ -318,7 +318,7 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn
}
public void c(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 d6a4bc64..89a49f03 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -633,4 +633,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

View File

@@ -1,4 +1,4 @@
From 91bed797863a9878e35581a4bae3099d44beac3f Mon Sep 17 00:00:00 2001
From e60b8c7f853e7a4708358f16fc60548e3c542318 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Tue, 30 Apr 2019 19:17:21 -0500
Subject: [PATCH] Integrate ridables
@@ -7,7 +7,7 @@ Subject: [PATCH] Integrate ridables
.../java/net/minecraft/server/BiomeBase.java | 26 ++++++-
.../net/minecraft/server/ControllerJump.java | 1 +
.../server/ControllerLookDolphin.java | 4 +-
.../java/net/minecraft/server/Entity.java | 13 ++++
.../java/net/minecraft/server/Entity.java | 16 +++-
.../net/minecraft/server/EntityChicken.java | 17 +++-
.../java/net/minecraft/server/EntityCow.java | 14 ++++
.../net/minecraft/server/EntityCreeper.java | 14 ++++
@@ -16,7 +16,7 @@ Subject: [PATCH] Integrate ridables
.../net/minecraft/server/EntityEnderman.java | 15 ++++
.../net/minecraft/server/EntityEndermite.java | 15 ++++
.../java/net/minecraft/server/EntityFish.java | 28 ++++++-
.../minecraft/server/EntityGiantZombie.java | 34 +++++++-
.../minecraft/server/EntityGiantZombie.java | 36 ++++++++-
.../net/minecraft/server/EntityGuardian.java | 36 ++++++++-
.../net/minecraft/server/EntityHorse.java | 10 ++-
.../minecraft/server/EntityHorseAbstract.java | 4 +-
@@ -47,8 +47,8 @@ Subject: [PATCH] Integrate ridables
.../purpur/controller/ControllerLookWASD.java | 46 +++++++++++
.../purpur/controller/ControllerMoveWASD.java | 77 +++++++++++++++++++
.../controller/ControllerMoveWASDWater.java | 42 ++++++++++
.../craftbukkit/entity/CraftLivingEntity.java | 12 +++
44 files changed, 849 insertions(+), 42 deletions(-)
.../craftbukkit/entity/CraftLivingEntity.java | 10 +++
44 files changed, 851 insertions(+), 43 deletions(-)
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java
@@ -131,7 +131,7 @@ index 8397aacb..92432ee6 100644
this.d = false;
double d0 = this.e - this.a.locX;
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 89a8bbe3..caa07f8b 100644
index 89a8bbe3..0abe7a99 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -96,6 +96,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -142,6 +142,15 @@ index 89a8bbe3..caa07f8b 100644
protected int k;
private Entity vehicle;
public boolean attachedToPlayer;
@@ -135,7 +136,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public double N;
public double O;
public double P;
- public float Q;
+ public float Q; public float getStepHeight() { return Q; } public void setStepHeight(float stepHeight) { this.Q = stepHeight; } // Purpur - OBFHELPER
public boolean noclip;
public float S;
protected Random random;
@@ -2115,6 +2116,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return this.k <= 0;
}
@@ -175,6 +184,14 @@ index 89a8bbe3..caa07f8b 100644
this.passengers.remove(entity);
entity.k = 60;
}
@@ -2991,6 +3004,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return null;
}
+ public List<Entity> getPassengers() { return bP(); } // Purpur - OBFHELPER
public List<Entity> bP() {
return (List) (this.passengers.isEmpty() ? Collections.emptyList() : Lists.newArrayList(this.passengers));
}
diff --git a/src/main/java/net/minecraft/server/EntityChicken.java b/src/main/java/net/minecraft/server/EntityChicken.java
index 070a9e7b..cf3730b3 100644
--- a/src/main/java/net/minecraft/server/EntityChicken.java
@@ -535,28 +552,28 @@ index 5da2d72a..ecfcbe31 100644
this.i.motY += 0.005D;
}
diff --git a/src/main/java/net/minecraft/server/EntityGiantZombie.java b/src/main/java/net/minecraft/server/EntityGiantZombie.java
index dd827aea..f7a4e87c 100644
index 053a880c..0786af8b 100644
--- a/src/main/java/net/minecraft/server/EntityGiantZombie.java
+++ b/src/main/java/net/minecraft/server/EntityGiantZombie.java
@@ -7,6 +7,11 @@ public class EntityGiantZombie extends EntityMonster {
public EntityGiantZombie(World world) {
@@ -8,7 +8,11 @@ public class EntityGiantZombie extends EntityMonster {
super(EntityTypes.GIANT, world);
this.setSize(this.width * 6.0F, this.length * 6.0F);
+ // Purpur start
// Purpur start
+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASD(this);
+ this.lookController = new net.pl3x.purpur.controller.ControllerLookWASD(this);
+ this.canBeRiddenInWater = true;
+ // Purpur end
this.safeFallDistance = 10.0F;
+ setStepHeight(2.0F);
// Purpur end
}
public float getHeadHeight() {
@@ -20,12 +25,39 @@ public class EntityGiantZombie extends EntityMonster {
@@ -23,8 +27,38 @@ public class EntityGiantZombie extends EntityMonster {
this.getAttributeInstance(GenericAttributes.ATTACK_DAMAGE).setValue(50.0D);
}
+ // Purpur start - initPathfinder
+ // Purpur start
+ @Override
+ protected void n() {
+ protected void n() { // initPathfinder
+ this.goalSelector.a(0, new PathfinderGoalFloat(this));
+ this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, 1.0D, false));
+ this.goalSelector.a(7, new PathfinderGoalRandomStrollLand(this, 1.0D));
@@ -569,7 +586,20 @@ index dd827aea..f7a4e87c 100644
+ this.targetSelector.a(4, new PathfinderGoalNearestAttackableTarget<>(this, EntityIronGolem.class, true));
+ this.targetSelector.a(5, new PathfinderGoalNearestAttackableTarget<>(this, EntityTurtle.class, true));
+ }
+ // Purpur
+
+ @Override
+ public float cG() { // jump height
+ return 1.0F;
+ }
+
+ @Override
+ public boolean a(EntityHuman entityhuman, EnumHand enumhand) { // processInteract
+ if (super.a(entityhuman, enumhand)) {
+ return true; // vanilla action handled
+ }
+ return tryRide(entityhuman, enumhand);
+ }
+ // Purpur end
+
public float a(BlockPosition blockposition, IWorldReader iworldreader) {
- return iworldreader.A(blockposition) - 0.5F;
@@ -577,20 +607,6 @@ index dd827aea..f7a4e87c 100644
}
@Nullable
protected MinecraftKey getDefaultLootTable() {
return LootTables.A;
}
+
+ // Purpur start - processInteract
+ @Override
+ public boolean a(EntityHuman entityhuman, EnumHand enumhand) {
+ if (super.a(entityhuman, enumhand)) {
+ return true; // vanilla action handled
+ }
+ return tryRide(entityhuman, enumhand);
+ }
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityGuardian.java b/src/main/java/net/minecraft/server/EntityGuardian.java
index 072236ec..e04cb7c0 100644
--- a/src/main/java/net/minecraft/server/EntityGuardian.java
@@ -690,7 +706,7 @@ index 1b9425f3..ff7f1a61 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityHorseAbstract.java b/src/main/java/net/minecraft/server/EntityHorseAbstract.java
index 95327763..3e80c82d 100644
index e211b95c..31e29b2e 100644
--- a/src/main/java/net/minecraft/server/EntityHorseAbstract.java
+++ b/src/main/java/net/minecraft/server/EntityHorseAbstract.java
@@ -80,7 +80,7 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven
@@ -967,7 +983,7 @@ index ae269270..8140fa12 100644
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 4d5459d2..d44ac353 100644
index 13a3bd02..3058c6ce 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -90,9 +90,9 @@ public abstract class EntityLiving extends Entity {
@@ -983,7 +999,7 @@ index 4d5459d2..d44ac353 100644
public float bk;
protected int bl;
protected double bm;
@@ -346,8 +346,16 @@ public abstract class EntityLiving extends Entity {
@@ -347,8 +347,16 @@ public abstract class EntityLiving extends Entity {
return false;
}
@@ -1001,7 +1017,7 @@ index 4d5459d2..d44ac353 100644
}
protected void cb() {
@@ -1838,6 +1846,7 @@ public abstract class EntityLiving extends Entity {
@@ -1839,6 +1847,7 @@ public abstract class EntityLiving extends Entity {
return 0.42F;
}
@@ -1009,7 +1025,7 @@ index 4d5459d2..d44ac353 100644
protected void cH() {
this.motY = (double) this.cG();
if (this.hasEffect(MobEffects.JUMP)) {
@@ -2082,10 +2091,12 @@ public abstract class EntityLiving extends Entity {
@@ -2083,10 +2092,12 @@ public abstract class EntityLiving extends Entity {
this.aK += this.aJ;
}
@@ -1022,7 +1038,7 @@ index 4d5459d2..d44ac353 100644
public void o(float f) {
this.bI = f;
}
@@ -2499,6 +2510,7 @@ public abstract class EntityLiving extends Entity {
@@ -2500,6 +2511,7 @@ public abstract class EntityLiving extends Entity {
this.fallDistance = 0.0F;
}
@@ -1030,7 +1046,7 @@ index 4d5459d2..d44ac353 100644
public void o(boolean flag) {
this.bg = flag;
}
@@ -2546,6 +2558,7 @@ public abstract class EntityLiving extends Entity {
@@ -2547,6 +2559,7 @@ public abstract class EntityLiving extends Entity {
this.aS = f;
}
@@ -1039,7 +1055,7 @@ index 4d5459d2..d44ac353 100644
this.aQ = f;
}
diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java
index 82a32c61..12b68665 100644
index 5e752b0c..8a54a6f2 100644
--- a/src/main/java/net/minecraft/server/EntityLlama.java
+++ b/src/main/java/net/minecraft/server/EntityLlama.java
@@ -18,6 +18,29 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn
@@ -1790,15 +1806,14 @@ index 00000000..74ff4825
+ }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
index d6a4bc64..7cfd33a7 100644
index 89a49f03..03593e70 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -633,4 +633,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
return getHandle().isHandRaised();
@@ -644,5 +644,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
public void setSafeFallDistance(float safeFallDistance) {
getHandle().safeFallDistance = safeFallDistance;
}
// Paper end
+
+ // Purpur start
+ @Override
+ public boolean canBeRiddenInWater() {
+ return getHandle().canBeRiddenInWater();
@@ -1808,7 +1823,7 @@ index d6a4bc64..7cfd33a7 100644
+ public void setCanBeRiddenInWater(boolean canBeRiddenInWater) {
+ getHandle().setCanBeRiddenInWater(canBeRiddenInWater);
+ }
+ // Purpur end
// Purpur end
}
--
2.20.1