Why my command not detected?? PHP: public function onCommand(CommandSender $player, Command $cmd, $label, array $args) : bool{ switch($cmd->getName()){ case "bb": if($player->isOp()) { if(!empty($args[0])) { if(file_exists($this->getServer()->getDataPath() . "/worlds/" . $args[0])) { $this->getServer()->loadLevel($args[0]); $this->getServer()->getLevelByName($args[0])->loadChunk($this->getServer()->getLevelByName($args[0])->getSafeSpawn()->getFloorX(), $this->getServer()->getLevelByName($args[0])->getSafeSpawn()->getFloorZ()); array_push($this->arenas,$args[0]); $this->currentLevel = $args[0]; $this->mode = 1; $player->sendMessage($this->prefix . "Registra los plot!"); $player->setGamemode(1); array_push($this->op, $player->getName()); $player->teleport($this->getServer()->getLevelByName($args[0])->getSafeSpawn(),0,0); $name = $args[0]; $this->zipper($player, $name); } else { $player->sendMessage($this->prefix . "ERROR missing world."); } } } else { } return true; case "join": if(!$player instanceof Player) { $player->sendMessage(TextFormat::RED . $this->commandnotconsole); break; } $server = $this->getServer(); $level = $server->getLevelByName($this->getConfig()->get("arenas")); $res = $server->loadLevel($this->getConfig()->get("arenas")); if($res) $level = $server->getLevelByName($this->getConfig()->get("arenas")); $res = $player->teleport($level->getSafeSpawn()); $player->setGamemode(0); $player->setScale(1.0); $player->getInventory()->clearAll(); $this->getKits($player); $this->players[$player->getName()] = $player; break; case "quit": if(!$player instanceof Player) { $player->sendMessage(TextFormat::RED . $this->commandnotconsole); break; } unset($this->players[$player->getName()]); $this->removeKits($player); $player->teleport($this->getServer()->getDefaultLevel()->getSpawnLocation()); $player->sendMessage(TextFormat::GREEN . "You have returned to the lobby."); break; case "npc": if(!$player instanceof Player) { $player->sendMessage(TextFormat::RED . $this->commandnotconsole); break; } if(!$player->hasPermission("bb.cmd.npc")) { $player->sendMessage(TextFormat::RED . $this->notpermission); break; } $this->spawnEntityJoin($player); break; case "removenpc": if(!$player instanceof Player) { $player->sendMessage(TextFormat::RED . $this->commandnotconsole); break; } if(!$player->hasPermission("bb.cmd.npc")) { $player->sendMessage(TextFormat::RED . $this->notpermission); break; } $player->sendMessage("Hit an entity to remove it."); $this->removenpcmode[$player->getName()] = 0; } return true; }
name: BuildBattle main: Kai\BB api: [3.0.0] version: 1.0.0 author: DragonPlayzMC Fixed MCCreeperYT Remake by moch commands: bb: usage: /bb <make> description: CreateGame permissions: bb.op: default: op npc: usage: /npc <npc> description: npc permissions: bb.cmd.npc: default: op removenpc: usage: /removenpc <remove npc> description: remove npc permissions: bb.cmd.removenpc: default: op
Code: name: BuildBattle main: Kai\BB api: [3.0.0] version: 1.0.0 author: DragonPlayzMC Fixed MCCreeperYT Remake by moch commands: bb: usage: "/bb <make>" description: "CreateGame" permission: bb.op npc: usage: "/npc <npc>" description: "npc" permission: bb.cmd.npc removenpc: usage: "/removenpc <remove npc>" description: "remove npc" permission: bb.cmd.removenpc permissions: bb: default: op children: bb.op: default: op bb.cmd: default: op children: bb.cmd.npc: default: op bb.cmd.removenpc: default: op
The error is right there.You prob used that for debuging.So read the error look code whereever it printed that and see what is the if statemnet saying and conmply with your own code accordingly.
Thx it work,but why when i tap npc get error Code: PHP: public function onJoinGameBB($damager){ $server = $this->getServer(); $level = $server->getLevelByName($this->getConfig()->get("arenas")); $res = $server->loadLevel($this->getConfig()->get("arenas")); if($res) $level = $server->getLevelByName($this->getConfig()->get("arenas")); $res = $damager->teleport($level->getSafeSpawn()); $damager->getArmorInventory()->clearAll(); }
Because "arenas" is an array, try and use a foreach: PHP: if($res){ foreach($this->getConfig()->get("arenas") as $level){ $server->getLevelByName($level); }}
PHP: foreach ($this->getConfig()->get("arenas") as $level){ $level = $server->getLevelByName("level");}
15:51:20] [Server thread/CRITICAL]: TypeError: "Argument 1 passed to pocketmine\Server::loadLevel() must be of the type string, array given, called in /storage/emulated/0/PocketMine-MP/plugins/Build/src/Kai/BB.php on line 180" (EXCEPTION) in "src/pocketmine/Server" at line 931