public function onSCommand(CommandSender $c, Command $cc, $scmd, $data, array $args) { if (count($args) == 0) { return false; } $player = $c; if (count($args) > 1) { $player = $this->owner->getServer()->getPlayer($args[0]); if ($player !== null) { if (!MPMU::access($c, "mw.cmd.tp.others")) { return true; } array_shift($args); } else { // Compatibility with old versions... $player = $this->owner->getServer()->getPlayer($args[count($args) - 1]); if ($player !== null) { if (!MPMU::access($c, "mw.cmd.tp.others")) { return true; } array_pop($args); } else { $player = $c; } } } if (!MPMU::inGame($player)) { return true; } $wname = implode(" ", $args); if ($player->getLevel() == $this->owner->getServer()->getLevelByName($wname)) { $c->sendMessage($c == $player ? mc::_("You are already in %1%", $wname) : mc::_("%1% is already in %2%", $player->getName(), $wname)); return true; } if (!$this->owner->autoLoad($c, $wname)) { $c->sendMessage(TextFormat::RED . mc::_("Teleport failed")); return true; } $level = $this->owner->getServer()->getLevelByName($wname); if ($level === null) { $c->sendMessage(TextFormat::RED . mc::_("Error GetLevelByName %1%")); return true; } if ($c != $player) { $player->sendMessage(TextFormat::YELLOW . mc::_("Teleporting you to %1% by %2%", $wname, $c->getName())); } else { $c->sendMessage(TextFormat::GREEN . mc::_("Teleporting to %1%", $wname)); } $player->teleport($level->getSafeSpawn()); return true; }
public function autoLoad(CommandSender $c, $world) { if ($this->getServer()->isLevelLoaded($world)) { return true; } if ($c !== null && !MPMU::access($c, "mw.cmd.world.load")) { return false; } if (!$this->getServer()->isLevelGenerated($world)) { if ($c !== null) { $c->sendMessage(mc::_("[MW] No world with the name %1% exists!", $world)); } return false; } $this->getServer()->loadLevel($world); return $this->getServer()->isLevelLoaded($world); }