From 814607187cab5886e006d548b9ca713a0745ed65 Mon Sep 17 00:00:00 2001 From: Sandertv Date: Wed, 24 Aug 2022 19:59:22 +0200 Subject: [PATCH] packet/move_actor_delta.go: Symmetrical encode/decode. --- minecraft/protocol/packet/move_actor_delta.go | 26 +++++++++++++++++-- minecraft/protocol/packet/play_sound.go | 2 +- .../protocol/packet/player_armour_damage.go | 12 ++++----- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/minecraft/protocol/packet/move_actor_delta.go b/minecraft/protocol/packet/move_actor_delta.go index 16a3005d..a2de691e 100644 --- a/minecraft/protocol/packet/move_actor_delta.go +++ b/minecraft/protocol/packet/move_actor_delta.go @@ -44,46 +44,68 @@ func (pk *MoveActorDelta) Marshal(w *protocol.Writer) { w.Uint16(&pk.Flags) if pk.Flags&MoveActorDeltaFlagHasX != 0 { w.Float32(&pk.Position[0]) + } else { + pk.Position[0] = 0 } if pk.Flags&MoveActorDeltaFlagHasY != 0 { w.Float32(&pk.Position[1]) + } else { + pk.Position[1] = 0 } if pk.Flags&MoveActorDeltaFlagHasZ != 0 { w.Float32(&pk.Position[2]) + } else { + pk.Position[2] = 0 } if pk.Flags&MoveActorDeltaFlagHasRotX != 0 { w.ByteFloat(&pk.Rotation[0]) + } else { + pk.Rotation[0] = 0 } if pk.Flags&MoveActorDeltaFlagHasRotY != 0 { w.ByteFloat(&pk.Rotation[1]) + } else { + pk.Rotation[1] = 0 } if pk.Flags&MoveActorDeltaFlagHasRotZ != 0 { w.ByteFloat(&pk.Rotation[2]) + } else { + pk.Rotation[2] = 0 } } // Unmarshal ... func (pk *MoveActorDelta) Unmarshal(r *protocol.Reader) { - pk.Position = mgl32.Vec3{} - pk.Rotation = mgl32.Vec3{} r.Varuint64(&pk.EntityRuntimeID) r.Uint16(&pk.Flags) if pk.Flags&MoveActorDeltaFlagHasX != 0 { r.Float32(&pk.Position[0]) + } else { + pk.Position[0] = 0 } if pk.Flags&MoveActorDeltaFlagHasY != 0 { r.Float32(&pk.Position[1]) + } else { + pk.Position[1] = 0 } if pk.Flags&MoveActorDeltaFlagHasZ != 0 { r.Float32(&pk.Position[2]) + } else { + pk.Position[2] = 0 } if pk.Flags&MoveActorDeltaFlagHasRotX != 0 { r.ByteFloat(&pk.Rotation[0]) + } else { + pk.Rotation[0] = 0 } if pk.Flags&MoveActorDeltaFlagHasRotY != 0 { r.ByteFloat(&pk.Rotation[1]) + } else { + pk.Rotation[1] = 0 } if pk.Flags&MoveActorDeltaFlagHasRotZ != 0 { r.ByteFloat(&pk.Rotation[2]) + } else { + pk.Rotation[2] = 0 } } diff --git a/minecraft/protocol/packet/play_sound.go b/minecraft/protocol/packet/play_sound.go index de9fbbb3..b3aa87cb 100644 --- a/minecraft/protocol/packet/play_sound.go +++ b/minecraft/protocol/packet/play_sound.go @@ -10,7 +10,7 @@ import ( type PlaySound struct { // SoundName is the name of the sound to play. SoundName string - // Position is the position at which the sound was played. Some of the sounds do not depend on a position, + // Position is the position at which the sound was played. Some sounds do not depend on a position, // which will then ignore it, but most of them will play with the direction based on the position compared // to the player's position. Position mgl32.Vec3 diff --git a/minecraft/protocol/packet/player_armour_damage.go b/minecraft/protocol/packet/player_armour_damage.go index 5ae1cdf0..17b7da43 100644 --- a/minecraft/protocol/packet/player_armour_damage.go +++ b/minecraft/protocol/packet/player_armour_damage.go @@ -37,17 +37,17 @@ func (pk *PlayerArmourDamage) Marshal(w *protocol.Writer) { if pk.Bitset&0b0010 != 0 { w.Varint32(&pk.ChestplateDamage) } else { - pk.HelmetDamage = 0 + pk.ChestplateDamage = 0 } if pk.Bitset&0b0100 != 0 { w.Varint32(&pk.LeggingsDamage) } else { - pk.HelmetDamage = 0 + pk.LeggingsDamage = 0 } if pk.Bitset&0b1000 != 0 { w.Varint32(&pk.BootsDamage) } else { - pk.HelmetDamage = 0 + pk.BootsDamage = 0 } } @@ -62,16 +62,16 @@ func (pk *PlayerArmourDamage) Unmarshal(r *protocol.Reader) { if pk.Bitset&0b0010 != 0 { r.Varint32(&pk.ChestplateDamage) } else { - pk.HelmetDamage = 0 + pk.ChestplateDamage = 0 } if pk.Bitset&0b0100 != 0 { r.Varint32(&pk.LeggingsDamage) } else { - pk.HelmetDamage = 0 + pk.LeggingsDamage = 0 } if pk.Bitset&0b1000 != 0 { r.Varint32(&pk.BootsDamage) } else { - pk.HelmetDamage = 0 + pk.BootsDamage = 0 } }