testPermissionSilent() public method

public testPermissionSilent ( pocketmine\command\CommandSender $target ) : boolean
$target pocketmine\command\CommandSender
return boolean
 public function testPermissionSilent(CommandSender $sender)
 {
     if ($sender instanceof Position) {
         if ($this->getName() === "f" and !$this->main->isFactionWorld($sender->getLevel()->getName())) {
             return false;
         }
     }
     return parent::testPermissionSilent($sender);
 }
Esempio n. 2
0
 public function onCommand(CommandSender $sender, Command $cmd, $alias, array $args)
 {
     if (!isset($args[0])) {
         return false;
     }
     $k = $sender instanceof Player ? $sender->getID() : get_class($sender);
     switch ($subcmd = array_shift($args)) {
         case "stop":
             if (!isset($this->stack[$k])) {
                 $sender->sendMessage("You don't have a recording macro to stop!");
                 break;
             }
             if (!isset($args[0])) {
                 $sender->sendMessage("Usage: /macro stop <name>");
                 $sender->sendMessage("Don't worry, this command will not be recorded.");
                 break;
             }
             if (strtolower($name = array_shift($args)) === "ng") {
                 $sender->sendMessage("This NG macro has been discarded.");
                 // continue to run: unset stack
             } else {
                 if ($this->getMacro($name) !== false) {
                     $sender->sendMessage("There is already a macro called \"{$name}\"!");
                     $sender->sendMessage("Don't worry, this command will not be recorded.");
                     break;
                 }
                 $success = $this->saveMacro($name, $this->stack[$k]);
                 if (!$success) {
                     $sender->sendMessage("Unable to create file. Perhaps \"{$name}\" is not a valid filename?");
                     $sender->sendMessage("Don't worry, this command will not be recorded.");
                     break;
                 }
                 // continue to run: unset stack
             }
             if (isset($this->stack[$id = $k])) {
                 // copied xD
                 unset($this->stack[$id]);
                 // avoid bugs if the entity ID gets reused
             }
             if (isset($this->paused[$id])) {
                 unset($this->stack[$id]);
             }
             $sender->sendMessage("You have successfully saved macro {$name}.");
             break;
         case "start":
             if (!$sender->hasPermission("simplemacros.record")) {
                 $sender->sendMessage("You don't have permission to record a macro.");
                 return true;
             }
             if (isset($this->stack[$k])) {
                 $sender->sendMessage("You have already started recording a macro!");
                 return true;
             }
             $this->stack[$k] = "";
             $sender->sendMessage("You are now recording a macro.");
             break;
         case "pause":
             if (!isset($this->stack[$k])) {
                 $sender->sendMessage("You are not recording a macro!");
                 return true;
             }
             $this->paused[$k] = true;
             $sender->sendMessage("Your macro is now paused.");
             $sender->sendMessage("Don't worry, this command will not be recorded.");
             break;
         case "resume":
             if (!isset($this->paused[$k]) or $this->paused[$k] === false) {
                 $sender->sendMessage("You do not have a paused recording macro!");
                 $sender->sendMessage("Don't worry, this command will not be recorded.");
                 return true;
             }
             $this->paused[$k] = false;
             $sender->sendMessage("You have now resumed your macro.");
             break;
         case "sudo":
             if (!$sender->hasPermission("simplemacros.sudo")) {
                 $sender->sendMessage("You don't have permision to sudo others with a macro.");
                 return true;
             }
             if (!isset($args[1])) {
                 $sender->sendMessage("Usage: /macro sudo <macro name> <player name> [-op]");
                 return true;
             }
             $macro = $this->getMacro($name = array_shift($args));
             if ($macro === false) {
                 $sender->sendMessage("{$macro} doesn't exist!");
                 return true;
             }
             if (!($p = $this->getServer()->getPlayer($args[1])) instanceof Player) {
                 $sender->sendMessage("Player {$args['1']} not found!");
                 return true;
             }
             if (isset($args[2]) and $args[2] === "-op" and !$sender->hasPermission("simplemacros.opsudo")) {
                 $sender->sendMessage("You do not have permission to op-sudo a player with a macro!");
             }
             foreach ($macro as $rline) {
                 $line = trim($rline);
                 if (isset($args[2]) and $args[2] === "-op") {
                     if (($rcmd = $this->getServer()->getCommandMap()->getCommand(strstr($line, " ", true))) instanceof Command) {
                         if (!$cmd->testPermissionSilent($p) and $cmd->testPermissionSilent($sender)) {
                             $perms = [$rcmd->getPermission()];
                             if (strpos($perms[0], ";") !== false) {
                                 $perms = explode(";", $perms[0]);
                             }
                             foreach ($perms as $perm) {
                                 $this->atts[$k]->setPermission($perm, true);
                             }
                         }
                     }
                 }
                 $this->getServer()->dispatchCommand($p, $line);
                 if (isset($perms)) {
                     foreach ($perms as $perm) {
                         $this->atts[$k]->unsetPermission($perm);
                     }
                 }
             }
             $sender->sendMessage("Command run as " . $p->getName() . ".");
             break;
         case "run":
             if (!$sender->hasPermission("simplemacros.run")) {
                 $sender->sendMessage("You don't have permission to run a macro.");
                 return true;
             }
             if (!isset($args[0])) {
                 $sender->sendMessage("Usage: /macro run <name>");
                 return true;
             }
             foreach ($this->getMacro($args[0]) as $line) {
                 $this->getServer()->dispatchCommand($sender, $line);
             }
             break;
         default:
             return false;
     }
     return true;
 }