InGamePacketHandler: fixed missing synchronization of metadata when plugins cancel PlayerToggle*Event

This commit is contained in:
Dylan K. Taylor 2021-12-29 18:23:05 +00:00
parent e102339637
commit a1d217e12b
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D

View File

@ -194,20 +194,16 @@ class InGamePacketHandler extends PacketHandler{
$this->forceMoveSync = false;
$sneaking = $this->resolveOnOffInputFlags($packet, PlayerAuthInputFlags::START_SNEAKING, PlayerAuthInputFlags::STOP_SNEAKING);
if($sneaking !== null){
$this->player->toggleSneak($sneaking);
}
$sprinting = $this->resolveOnOffInputFlags($packet, PlayerAuthInputFlags::START_SPRINTING, PlayerAuthInputFlags::STOP_SPRINTING);
if($sprinting !== null){
$this->player->toggleSprint($sprinting);
}
$swimming = $this->resolveOnOffInputFlags($packet, PlayerAuthInputFlags::START_SWIMMING, PlayerAuthInputFlags::STOP_SWIMMING);
if($swimming !== null){
$this->player->toggleSwim($swimming);
}
$gliding = $this->resolveOnOffInputFlags($packet, PlayerAuthInputFlags::START_GLIDING, PlayerAuthInputFlags::STOP_GLIDING);
if($gliding !== null){
$this->player->toggleGlide($gliding);
$mismatch =
($sneaking !== null && !$this->player->toggleSneak($sneaking)) |
($sprinting !== null && !$this->player->toggleSprint($sprinting)) |
($swimming !== null && !$this->player->toggleSwim($swimming)) |
($gliding !== null && !$this->player->toggleGlide($gliding));
if((bool) $mismatch){
$this->player->sendData([$this->player]);
}
//TODO: this packet has WAYYYYY more useful information that we're not using