22declare(strict_types=1);
24namespace pocketmine\command\defaults;
36use
function array_shift;
42 public function __construct(){
45 KnownTranslationFactory::pocketmine_command_tp_description(),
46 KnownTranslationFactory::commands_tp_usage(),
50 DefaultPermissionNames::COMMAND_TELEPORT_SELF,
51 DefaultPermissionNames::COMMAND_TELEPORT_OTHER
56 $subject = $sender->getServer()->getPlayerByPrefix($playerName);
57 if($subject ===
null){
58 $sender->sendMessage(TextFormat::RED .
"Can't find player " . $playerName);
74 $subjectName = array_shift($args);
80 $subject = $this->fetchPermittedPlayerTarget($sender, $subjectName, DefaultPermissionNames::COMMAND_TELEPORT_SELF, DefaultPermissionNames::COMMAND_TELEPORT_OTHER);
81 if($subject ===
null){
87 $targetPlayer = $this->findPlayer($sender, $args[0]);
88 if($targetPlayer ===
null){
92 $subject->teleport($targetPlayer->getLocation());
93 Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_tp_success($subject->getName(), $targetPlayer->getName()));
98 $base = $subject->getLocation();
99 if(count($args) === 5){
100 $yaw = (float) $args[3];
101 $pitch = (float) $args[4];
104 $pitch = $base->pitch;
107 $x = $this->getRelativeDouble($base->x, $sender, $args[0]);
108 $y = $this->getRelativeDouble($base->y, $sender, $args[1], World::Y_MIN, World::Y_MAX);
109 $z = $this->getRelativeDouble($base->z, $sender, $args[2]);
110 $targetLocation =
new Location($x, $y, $z, $base->getWorld(), $yaw, $pitch);
112 $subject->teleport($targetLocation);
113 Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_tp_success_coordinates(
115 (
string) round($targetLocation->x, 2),
116 (
string) round($targetLocation->y, 2),
117 (
string) round($targetLocation->z, 2)
setPermissions(array $permissions)
execute(CommandSender $sender, string $commandLabel, array $args)