Fix ClientMovementPredictionSync packet
This commit is contained in:
@@ -48,19 +48,7 @@ func (*ClientMovementPredictionSync) ID() uint32 {
|
||||
}
|
||||
|
||||
func (pk *ClientMovementPredictionSync) Marshal(io protocol.IO) {
|
||||
var bitsetSize int
|
||||
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.Bitset(&pk.ActorFlags, proto.EntityDataFlagsLength(proto.FetchProtoID(io)))
|
||||
io.Float32(&pk.BoundingBoxScale)
|
||||
io.Float32(&pk.BoundingBoxWidth)
|
||||
io.Float32(&pk.BoundingBoxHeight)
|
||||
|
||||
17
legacyver/proto/entity_metadata.go
Normal file
17
legacyver/proto/entity_metadata.go
Normal 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
|
||||
}
|
||||
@@ -702,10 +702,7 @@ func (p *Protocol) downgradePackets(pks []packet.Packet, conn *minecraft.Conn) [
|
||||
case *packet.PlayerSkin:
|
||||
pk.Skin.GeometryDataEngineVersion = []byte(p.Ver())
|
||||
case *packet.ClientMovementPredictionSync:
|
||||
actorFlags := pk.ActorFlags
|
||||
if p.ID() < proto.ID786 {
|
||||
actorFlags = fitBitset(actorFlags, 120)
|
||||
}
|
||||
actorFlags := fitBitset(pk.ActorFlags, proto.EntityDataFlagsLength(p.ID()))
|
||||
pks[pkIndex] = &legacypacket.ClientMovementPredictionSync{
|
||||
ActorFlags: actorFlags,
|
||||
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()}
|
||||
case *legacypacket.ClientMovementPredictionSync:
|
||||
pks[pkIndex] = &packet.ClientMovementPredictionSync{
|
||||
ActorFlags: fitBitset(pk.ActorFlags, protocol.EntityDataFlagCount),
|
||||
ActorFlags: fitBitset(pk.ActorFlags, proto.EntityDataFlagsLength(p.ID())),
|
||||
BoundingBoxScale: pk.BoundingBoxScale,
|
||||
BoundingBoxWidth: pk.BoundingBoxWidth,
|
||||
BoundingBoxHeight: pk.BoundingBoxHeight,
|
||||
|
||||
Reference in New Issue
Block a user