fix movement in singleplayer

This commit is contained in:
LabyStudio
2022-06-20 15:21:06 +02:00
parent 19a131bd94
commit 1f4e90c9f3
2 changed files with 66 additions and 70 deletions
@@ -73,7 +73,73 @@ export default class PlayerEntity extends EntityLiving {
}
onLivingUpdate() {
this.prevCameraYaw = this.cameraYaw;
this.prevCameraPitch = this.cameraPitch;
if (this.sprintToggleTimer > 0) {
--this.sprintToggleTimer;
}
if (this.flyToggleTimer > 0) {
--this.flyToggleTimer;
}
let prevMoveForward = this.moveForward;
let prevJumping = this.jumping;
this.updateKeyboardInput();
// Toggle jumping
if (!prevJumping && this.jumping) {
if (this.flyToggleTimer === 0) {
this.flyToggleTimer = 7;
} else {
this.flying = !this.flying;
this.flyToggleTimer = 0;
this.updateFOVModifier();
}
}
// Toggle sprint
if (prevMoveForward === 0 && this.moveForward > 0) {
if (this.sprintToggleTimer === 0) {
this.sprintToggleTimer = 7;
} else {
this.sprinting = true;
this.sprintToggleTimer = 0;
this.updateFOVModifier();
}
}
if (this.sprinting && (this.moveForward <= 0 || this.collision || this.isSneaking())) {
this.sprinting = false;
this.updateFOVModifier();
}
super.onLivingUpdate();
this.jumpMovementFactor = this.speedInAir;
if (this.sprinting) {
this.jumpMovementFactor = this.jumpMovementFactor + this.speedInAir * 0.3;
}
let speedXZ = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ);
let speedY = (Math.atan(-this.motionY * 0.2) * 15.0);
if (speedXZ > 0.1) {
speedXZ = 0.1;
}
if (!this.onGround || this.health <= 0.0) {
speedXZ = 0.0;
}
if (this.onGround || this.health <= 0.0) {
speedY = 0.0;
}
this.cameraYaw += (speedXZ - this.cameraYaw) * 0.4;
this.cameraPitch += (speedY - this.cameraPitch) * 0.8;
}
isInWater() {
@@ -36,76 +36,6 @@ export default class PlayerEntityMultiplayer extends PlayerEntity {
this.networkHandler.sendPacket(new ClientSwingArmPacket());
}
onLivingUpdate() {
this.prevCameraYaw = this.cameraYaw;
this.prevCameraPitch = this.cameraPitch;
if (this.sprintToggleTimer > 0) {
--this.sprintToggleTimer;
}
if (this.flyToggleTimer > 0) {
--this.flyToggleTimer;
}
let prevMoveForward = this.moveForward;
let prevJumping = this.jumping;
this.updateKeyboardInput();
// Toggle jumping
if (!prevJumping && this.jumping) {
if (this.flyToggleTimer === 0) {
this.flyToggleTimer = 7;
} else {
this.flying = !this.flying;
this.flyToggleTimer = 0;
this.updateFOVModifier();
}
}
// Toggle sprint
if (prevMoveForward === 0 && this.moveForward > 0) {
if (this.sprintToggleTimer === 0) {
this.sprintToggleTimer = 7;
} else {
this.sprinting = true;
this.sprintToggleTimer = 0;
this.updateFOVModifier();
}
}
if (this.sprinting && (this.moveForward <= 0 || this.collision || this.isSneaking())) {
this.sprinting = false;
this.updateFOVModifier();
}
super.onLivingUpdate();
this.jumpMovementFactor = this.speedInAir;
if (this.sprinting) {
this.jumpMovementFactor = this.jumpMovementFactor + this.speedInAir * 0.3;
}
let speedXZ = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ);
let speedY = (Math.atan(-this.motionY * 0.2) * 15.0);
if (speedXZ > 0.1) {
speedXZ = 0.1;
}
if (!this.onGround || this.health <= 0.0) {
speedXZ = 0.0;
}
if (this.onGround || this.health <= 0.0) {
speedY = 0.0;
}
this.cameraYaw += (speedXZ - this.cameraYaw) * 0.4;
this.cameraPitch += (speedY - this.cameraPitch) * 0.8;
}
onUpdateWalkingPlayer() {
// Send sprinting to server
let isSprinting = this.isSprinting();