diff --git a/src/main/java/de/bixilon/minosoft/data/entities/EntityRotation.kt b/src/main/java/de/bixilon/minosoft/data/entities/EntityRotation.kt index 381a2e116..3dc802e08 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/EntityRotation.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/EntityRotation.kt @@ -12,11 +12,11 @@ */ package de.bixilon.minosoft.data.entities -data class EntityRotation(var yaw: Double, var pitch: Double, var headYaw: Double = yaw) { +data class EntityRotation(var bodyYaw: Double, var pitch: Double, var headYaw: Double = bodyYaw) { - constructor(yaw: Float, pitch: Float, headYaw: Float = yaw) : this(yaw.toDouble(), pitch.toDouble(), headYaw.toDouble()) + constructor(bodyYaw: Float, pitch: Float, headYaw: Float = bodyYaw) : this(bodyYaw.toDouble(), pitch.toDouble(), headYaw.toDouble()) override fun toString(): String { - return "(yaw=$yaw, pitch=$pitch, headYaw=$headYaw)" + return "(bodyYaw=$bodyYaw, pitch=$pitch, headYaw=$headYaw)" } } diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/Entity.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/Entity.kt index ee4aaa653..4d3c9bd20 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/Entity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/Entity.kt @@ -161,7 +161,7 @@ abstract class Entity( } fun setHeadRotation(headYaw: Int) { - rotation = EntityRotation(rotation.yaw, rotation.pitch, headYaw.toDouble()) + rotation = EntityRotation(rotation.bodyYaw, rotation.pitch, headYaw.toDouble()) } private fun getEntityFlag(bitMask: Int): Boolean { diff --git a/src/main/java/de/bixilon/minosoft/data/player/LocalPlayerEntity.kt b/src/main/java/de/bixilon/minosoft/data/player/LocalPlayerEntity.kt index 8fce7b557..c27ab7888 100644 --- a/src/main/java/de/bixilon/minosoft/data/player/LocalPlayerEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/player/LocalPlayerEntity.kt @@ -156,7 +156,7 @@ class LocalPlayerEntity( val positionChanged = positionDiff.length() > 0.01f || (currentTime - lastPositionPacketSent >= 1000) val rotation = rotation.copy() - val yawDiff = rotation.yaw - lastRotation.yaw + val yawDiff = rotation.headYaw - lastRotation.headYaw val pitchDiff = rotation.pitch - lastRotation.pitch val rotationChanged = yawDiff != 0.0 && pitchDiff != 0.0 @@ -275,7 +275,7 @@ class LocalPlayerEntity( private fun move(sidewaysSpeed: Float, forwardSpeed: Float, slipperiness: Double): Vec3d { - velocity = velocity + calculateVelocity(sidewaysSpeed, forwardSpeed, slipperinessToMovementSpeed(slipperiness), rotation.yaw) + velocity = velocity + calculateVelocity(sidewaysSpeed, forwardSpeed, slipperinessToMovementSpeed(slipperiness), rotation.headYaw) move(velocity) return adjustVelocityForClimbing(velocity) @@ -442,7 +442,7 @@ class LocalPlayerEntity( this.velocity.y = velocity if (isSprinting) { - val yawRad = rotation.yaw.rad + val yawRad = rotation.headYaw.rad this.velocity = this.velocity + Vec3(-(sin(yawRad) * 0.2f), 0.0f, cos(yawRad) * 0.2f) } dirtyVelocity = true diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/PositionAndRotationC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/PositionAndRotationC2SP.kt index 1b84df036..cb37e7cd2 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/PositionAndRotationC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/PositionAndRotationC2SP.kt @@ -34,7 +34,7 @@ class PositionAndRotationC2SP( buffer.writeDouble(position.y - 1.62) // ToDo } buffer.writeDouble(position.z) - buffer.writeFloat(rotation.yaw) + buffer.writeFloat(rotation.headYaw) buffer.writeFloat(rotation.pitch) buffer.writeBoolean(onGround) } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/RotationC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/RotationC2SP.kt index 04319ab39..b6269f8f9 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/RotationC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/RotationC2SP.kt @@ -25,7 +25,7 @@ class RotationC2SP( ) : PlayC2SPacket { override fun write(buffer: PlayOutByteBuffer) { - buffer.writeFloat(rotation.yaw) + buffer.writeFloat(rotation.headYaw) buffer.writeFloat(rotation.pitch) buffer.writeBoolean(onGround) } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PositionAndRotationS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PositionAndRotationS2CP.kt index b0163e1a7..c8652aaa5 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PositionAndRotationS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PositionAndRotationS2CP.kt @@ -64,8 +64,9 @@ class PositionAndRotationS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { } if (BitByte.isBitMask(flags, 0x08)) { - rotation.yaw += entity.rotation.yaw + rotation.headYaw += entity.rotation.headYaw } + rotation.bodyYaw = rotation.headYaw if (BitByte.isBitMask(flags, 0x10)) { rotation.pitch += entity.rotation.pitch