Prevent fall damage if in water

This commit is contained in:
Holly Stubbs 2023-11-05 13:30:17 +00:00
parent f9d4c6b1f9
commit 617cebe2e0
Signed by: tgpholly
GPG key ID: B8583C4B7D18119E
2 changed files with 11 additions and 10 deletions

View file

@ -187,8 +187,7 @@ export class Entity implements IEntity {
updateFalling(distance:number) { updateFalling(distance:number) {
if (this.onGround) { if (this.onGround) {
if (this.fallDistance > 0) if (this.fallDistance > 0) {
{
this.fall(this.fallDistance); this.fall(this.fallDistance);
this.fallDistance = 0; this.fallDistance = 0;
} }

View file

@ -21,9 +21,11 @@ export class EntityLiving extends Entity {
public constructor(world:World) { public constructor(world:World) {
super(world); super(world);
this.fallDistance = this.timeInWater = 0; this.timeInWater = 0;
this.headHeight = 1.62; this.headHeight = 1.62;
this.fallDistance = Number.MIN_VALUE;
this.lastHealth = this.health; this.lastHealth = this.health;
} }
@ -41,8 +43,8 @@ export class EntityLiving extends Entity {
} }
} }
isInWater() { isInWater(fromHead:boolean) {
return this.world.getChunkBlockId(this.chunk, this.position.x, this.position.y + this.headHeight, this.position.z) === Block.waterStill.blockId; return this.world.getChunkBlockId(this.chunk, this.position.x, this.position.y + (fromHead ? this.headHeight : 0), this.position.z) === Block.waterStill.blockId;
} }
fall(distance:number) { fall(distance:number) {
@ -55,12 +57,8 @@ export class EntityLiving extends Entity {
onTick() { onTick() {
super.onTick(); super.onTick();
if (!this.onGround) {
this.fallDistance
}
// Drowning // Drowning
if (this.isInWater()) { if (this.isInWater(true)) {
if (this.timeInWater == Number.MIN_SAFE_INTEGER) { if (this.timeInWater == Number.MIN_SAFE_INTEGER) {
this.timeInWater = 320; this.timeInWater = 320;
} }
@ -71,5 +69,9 @@ export class EntityLiving extends Entity {
} else { } else {
this.timeInWater = Number.MIN_SAFE_INTEGER; this.timeInWater = Number.MIN_SAFE_INTEGER;
} }
if (this.isInWater(false)) {
this.fallDistance = 0;
}
} }
} }