session->sendDataPacket(RespawnPacket::create( $this->player->getOffsetPosition($this->player->getSpawn()), RespawnPacket::SEARCHING_FOR_SPAWN, $this->player->getId() )); /** @var string[] $parameters */ $parameters = []; if($this->deathMessage instanceof Translatable){ $language = $this->player->getLanguage(); if(!$this->player->getServer()->isLanguageForced()){ //we can't send nested translations to the client, so make sure they are always pre-translated by the server $parameters = array_map(fn(string|Translatable $p) => $p instanceof Translatable ? $language->translate($p) : $p, $this->deathMessage->getParameters()); $message = $language->translateString($this->deathMessage->getText(), $parameters, "pocketmine."); }else{ $message = $language->translate($this->deathMessage); } }else{ $message = $this->deathMessage; } $this->session->sendDataPacket(DeathInfoPacket::create($message, $parameters)); } public function handlePlayerAction(PlayerActionPacket $packet) : bool{ if($packet->action === PlayerAction::RESPAWN){ $this->player->respawn(); return true; } return false; } public function handleContainerClose(ContainerClosePacket $packet) : bool{ $this->inventoryManager->onClientRemoveWindow($packet->windowId); return true; } public function handleRespawn(RespawnPacket $packet) : bool{ if($packet->respawnState === RespawnPacket::CLIENT_READY_TO_SPAWN){ $this->session->sendDataPacket(RespawnPacket::create( $this->player->getOffsetPosition($this->player->getSpawn()), RespawnPacket::READY_TO_SPAWN, $this->player->getId() )); return true; } return false; } }