/**
  * Техническая функция перемещения персонажа
  * персонаж, комната назначения
  * @param Player                                  $char
  * @param \Rottenwood\UtopiaMudBundle\Entity\Room $room
  * @return bool
  */
 public function techGotoRoom($char, $room)
 {
     if ($room !== null) {
         $char->setRoom($room);
         $this->em->persist($char);
         $this->em->flush();
     }
     return true;
 }
 /**
  * Телепортация к персонажу
  * @param Player $char
  * @param        $arguments
  * @return array
  */
 public function jumptp(Player $char, $arguments)
 {
     $result = array();
     if ($arguments && $arguments[1]) {
         $charName = $char->getUsername();
         // приведение первого аргумента введенной команды в нижний регистр
         $targetPlayer = mb_strtolower($arguments[1], 'UTF-8');
         $playersOnlineIds = $this->container->get('datachannel')->getOnlineIds();
         $playersOnline = $this->playerRepository->findPlayersOnline($playersOnlineIds);
         foreach ($playersOnline as $player) {
             /** @var Player $player */
             $playerName = $player->getUsernameCanonical();
             $playerNameFull = $player->getUsername();
             if (strpos($playerName, $targetPlayer) !== false) {
                 // если персонаж найден
                 $result["system"] = "Ты прыгнул к {$playerNameFull}!";
                 // перемещение
                 $destinationRoom = $player->getRoom();
                 $char->setRoom($destinationRoom);
                 $this->em->persist($char);
                 $this->em->flush();
                 // отправка сообщения адресату
                 $result["3rd"] = array($player);
                 $result["3rdecho"] = array("system" => "{$charName} прыгнул к тебе!");
                 return $result;
             }
         }
     } else {
         $result["system"] = "Персонаж не найден. Применение: jumptp [имя-персонажа]";
     }
     return $result;
 }