Player: move toggle* rollback handling to network session

this allows network sessions to react to it how they want, or (in the case of things like Specter) perhaps ignore it.
This commit is contained in:
Dylan K. Taylor
2019-04-02 19:49:53 +01:00
parent 80a6fc5dd1
commit f332550e52
2 changed files with 30 additions and 21 deletions

View File

@ -362,16 +362,24 @@ class SimpleSessionHandler extends SessionHandler{
$this->player->jump();
return true;
case PlayerActionPacket::ACTION_START_SPRINT:
$this->player->toggleSprint(true);
if(!$this->player->toggleSprint(true)){
$this->player->sendData($this->player);
}
return true;
case PlayerActionPacket::ACTION_STOP_SPRINT:
$this->player->toggleSprint(false);
if(!$this->player->toggleSprint(false)){
$this->player->sendData($this->player);
}
return true;
case PlayerActionPacket::ACTION_START_SNEAK:
$this->player->toggleSneak(true);
if(!$this->player->toggleSneak(true)){
$this->player->sendData($this->player);
}
return true;
case PlayerActionPacket::ACTION_STOP_SNEAK:
$this->player->toggleSneak(false);
if(!$this->player->toggleSneak(false)){
$this->player->sendData($this->player);
}
return true;
case PlayerActionPacket::ACTION_START_GLIDE:
case PlayerActionPacket::ACTION_STOP_GLIDE:
@ -423,7 +431,9 @@ class SimpleSessionHandler extends SessionHandler{
$isFlying = $packet->getFlag(AdventureSettingsPacket::FLYING);
if($isFlying !== $this->player->isFlying()){
$this->player->toggleFlight($isFlying);
if(!$this->player->toggleFlight($isFlying)){
$this->session->syncAdventureSettings($this->player);
}
$handled = true;
}