1: <?php
2:
3:
4:
5: namespace aliuly\common;
6:
7: use pocketmine\Player;
8: use pocketmine\level\Position;
9: use pocketmine\Server;
10:
11: use pocketmine\math\Vector3;
12:
13: 14: 15:
16: abstract class TPUtils {
17: 18: 19: 20: 21: 22: 23: 24:
25: static public function tpNearBy(Player $player,Position $target,$rand = 3,$dist = null) {
26: $mv = new Vector3($target->getX()+mt_rand(-$rand,$rand),
27: $target->getY(),
28: $target->getZ()+mt_rand(-$rand,$rand));
29: $pos = $target->getLevel()->getSafeSpawn($mv);
30: if ($dist !== null) {
31: $newdist = $pos->distance($target);
32: if ($newdist > $dist) return false;
33: }
34: $player->teleport($pos);
35: return true;
36: }
37: 38: 39: 40: 41: 42: 43:
44: static public function getLevelByName(Server $server, $world) {
45: if (!$server->isLevelGenerated($world)) return null;
46: if (!$server->isLevelLoaded($world)) $server->loadLevel($world);
47: return $server->getLevelByName($world);
48: }
49:
50: }
51: