From e9aba34e6bc20f45ad71dc2fa3eae3f1537089d4 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Thu, 10 Apr 2014 18:50:41 +0200 Subject: [PATCH] Added /setworldspawn --- src/pocketmine/command/SimpleCommandMap.php | 2 + .../command/defaults/SetWorldSpawnCommand.php | 70 +++++++++++++++++++ .../permission/DefaultPermissions.php | 2 + 3 files changed, 74 insertions(+) create mode 100644 src/pocketmine/command/defaults/SetWorldSpawnCommand.php diff --git a/src/pocketmine/command/SimpleCommandMap.php b/src/pocketmine/command/SimpleCommandMap.php index 2e96e3039..15018b3dc 100644 --- a/src/pocketmine/command/SimpleCommandMap.php +++ b/src/pocketmine/command/SimpleCommandMap.php @@ -44,6 +44,7 @@ use pocketmine\command\defaults\SaveOffCommand; use pocketmine\command\defaults\SaveOnCommand; use pocketmine\command\defaults\SayCommand; use pocketmine\command\defaults\SeedCommand; +use pocketmine\command\defaults\SetWorldSpawnCommand; use pocketmine\command\defaults\SpawnpointCommand; use pocketmine\command\defaults\StatusCommand; use pocketmine\command\defaults\StopCommand; @@ -97,6 +98,7 @@ class SimpleCommandMap implements CommandMap{ $this->register("pocketmine", new GamemodeCommand("gamemode")); $this->register("pocketmine", new KillCommand("kill")); $this->register("pocketmine", new SpawnpointCommand("spawnpoint")); + $this->register("pocketmine", new SetWorldSpawnCommand("setworldspawn")); $this->register("pocketmine", new TeleportCommand("tp")); $this->register("pocketmine", new ReloadCommand("reload")); diff --git a/src/pocketmine/command/defaults/SetWorldSpawnCommand.php b/src/pocketmine/command/defaults/SetWorldSpawnCommand.php new file mode 100644 index 000000000..43a148999 --- /dev/null +++ b/src/pocketmine/command/defaults/SetWorldSpawnCommand.php @@ -0,0 +1,70 @@ + " + ); + $this->setPermission("pocketmine.command.setworldspawn"); + } + + public function execute(CommandSender $sender, $currentAlias, array $args){ + if(!$this->testPermission($sender)){ + return true; + } + + if(count($args) === 0){ + if($sender instanceof Player){ + $level = $sender->getLevel(); + $pos = $sender->round(); + }else{ + $sender->sendMessage(TextFormat::RED . "You can only perform this command as a player"); + return true; + } + }elseif(count($args) === 3){ + $level = Server::getInstance()->getDefaultLevel(); + $pos = new Vector3($this->getInteger($sender, $args[0]), $this->getInteger($sender, $args[1]), $this->getInteger($sender, $args[2])); + }else{ + $sender->sendMessage(TextFormat::RED . "Usage: ".$this->usageMessage); + return true; + } + + $level->setSpawn($pos); + + Command::broadcastCommandMessage($sender, "Set world ".$level->getName()."'s spawnpoint to ".$pos->x.", ".$pos->y.", ".$pos->z); + return true; + } +} diff --git a/src/pocketmine/permission/DefaultPermissions.php b/src/pocketmine/permission/DefaultPermissions.php index 6e85f8d06..c9b7ad036 100644 --- a/src/pocketmine/permission/DefaultPermissions.php +++ b/src/pocketmine/permission/DefaultPermissions.php @@ -107,6 +107,8 @@ abstract class DefaultPermissions{ self::registerPermission(new Permission(self::ROOT . ".command.defaultgamemode", "Allows the user to change the default gamemode", Permission::DEFAULT_OP), $commands); self::registerPermission(new Permission(self::ROOT . ".command.seed", "Allows the user to view the seed of the world", Permission::DEFAULT_OP), $commands); self::registerPermission(new Permission(self::ROOT . ".command.status", "Allows the user to view the server performance", Permission::DEFAULT_OP), $commands); + self::registerPermission(new Permission(self::ROOT . ".command.spawnpoint", "Allows the user to change player's spawnpoint", Permission::DEFAULT_OP), $commands); + self::registerPermission(new Permission(self::ROOT . ".command.setworldspawn", "Allows the user to change the world spawn", Permission::DEFAULT_OP), $commands); $commands->recalculatePermissibles();