Fix ClientMovementPredictionSync packet

This commit is contained in:
AkmalFairuz
2025-12-11 12:24:48 +07:00
parent 6700cb7f9b
commit f32ad4cef8
3 changed files with 20 additions and 18 deletions

View File

@@ -48,19 +48,7 @@ func (*ClientMovementPredictionSync) ID() uint32 {
} }
func (pk *ClientMovementPredictionSync) Marshal(io protocol.IO) { func (pk *ClientMovementPredictionSync) Marshal(io protocol.IO) {
var bitsetSize int io.Bitset(&pk.ActorFlags, proto.EntityDataFlagsLength(proto.FetchProtoID(io)))
if proto.IsProtoGTE(io, proto.ID898) {
bitsetSize = 127
} else if proto.IsProtoGTE(io, proto.ID844) {
bitsetSize = 126
} else if proto.IsProtoGTE(io, proto.ID818) {
bitsetSize = 125
} else if proto.IsProtoGTE(io, proto.ID786) {
bitsetSize = 123
} else {
bitsetSize = 120
}
io.Bitset(&pk.ActorFlags, bitsetSize)
io.Float32(&pk.BoundingBoxScale) io.Float32(&pk.BoundingBoxScale)
io.Float32(&pk.BoundingBoxWidth) io.Float32(&pk.BoundingBoxWidth)
io.Float32(&pk.BoundingBoxHeight) io.Float32(&pk.BoundingBoxHeight)

View File

@@ -0,0 +1,17 @@
package proto
func EntityDataFlagsLength(protoID int32) int {
if protoID >= ID898 {
return 127
}
if protoID >= ID844 {
return 126
}
if protoID >= ID818 {
return 125
}
if protoID >= ID786 {
return 123
}
return 120
}

View File

@@ -702,10 +702,7 @@ func (p *Protocol) downgradePackets(pks []packet.Packet, conn *minecraft.Conn) [
case *packet.PlayerSkin: case *packet.PlayerSkin:
pk.Skin.GeometryDataEngineVersion = []byte(p.Ver()) pk.Skin.GeometryDataEngineVersion = []byte(p.Ver())
case *packet.ClientMovementPredictionSync: case *packet.ClientMovementPredictionSync:
actorFlags := pk.ActorFlags actorFlags := fitBitset(pk.ActorFlags, proto.EntityDataFlagsLength(p.ID()))
if p.ID() < proto.ID786 {
actorFlags = fitBitset(actorFlags, 120)
}
pks[pkIndex] = &legacypacket.ClientMovementPredictionSync{ pks[pkIndex] = &legacypacket.ClientMovementPredictionSync{
ActorFlags: actorFlags, ActorFlags: actorFlags,
BoundingBoxScale: pk.BoundingBoxScale, BoundingBoxScale: pk.BoundingBoxScale,
@@ -1308,7 +1305,7 @@ func (p *Protocol) upgradePackets(pks []packet.Packet, conn *minecraft.Conn) []p
pks[pkIndex] = &packet.UpdateAbilities{AbilityData: pk.AbilityData.ToLatest()} pks[pkIndex] = &packet.UpdateAbilities{AbilityData: pk.AbilityData.ToLatest()}
case *legacypacket.ClientMovementPredictionSync: case *legacypacket.ClientMovementPredictionSync:
pks[pkIndex] = &packet.ClientMovementPredictionSync{ pks[pkIndex] = &packet.ClientMovementPredictionSync{
ActorFlags: fitBitset(pk.ActorFlags, protocol.EntityDataFlagCount), ActorFlags: fitBitset(pk.ActorFlags, proto.EntityDataFlagsLength(p.ID())),
BoundingBoxScale: pk.BoundingBoxScale, BoundingBoxScale: pk.BoundingBoxScale,
BoundingBoxWidth: pk.BoundingBoxWidth, BoundingBoxWidth: pk.BoundingBoxWidth,
BoundingBoxHeight: pk.BoundingBoxHeight, BoundingBoxHeight: pk.BoundingBoxHeight,