so i have this code PHP: case "green": if(!$sender->hasPermission("green.wing")){ $sender->sendMessage("§l§aHero§bMC§e>§r§c Bạn không có quyền dùng Wing §aGreen"); return true; } if($args[1] == "on"){ $greenwing[$sender->getName()] = $sender; $task = new GreenWing($sender); $this->tasks[$sender->getId()] = $task; $this->getScheduler()->scheduleRepeatingTask($task, 10); $sender->sendMessage("§l§aHero§bMC§e>§r§a Đã bật Wing Green"); } if($args[1] == "off"){ if(isset($task)){ $sender->sendMessage("§l§aHero§bMC§e>§r§c Bạn có bật wing green đâu?"); }else{ $task = $this->tasks[$sender->getId()]; unset($this->tasks[$sender->getId()]); $task->getHandler()->cancel(); $sender->sendMessage("§l§aHero§bMC§e>§r§c Đã tắt Wing §aGreen"); } } break; when i executed the command, it crashed. I have no idea about this Console sent this Code: 2019-01-14 [11:48:06] [Server thread/CRITICAL]: ErrorException: "Undefined offset: 1" (EXCEPTION) in "plugins/Wings/src/Wings/Main" at line 53 2019-01-14 [11:48:06] [Server thread/DEBUG]: #0 plugins/Wings/src/Wings/Main(53): pocketmine\utils\Utils::errorExceptionHandler(integer 8, string Undefined offset: 1, string C:\Users\Administrator\Desktop\Minecraft\HeroMC 1vs1\plugins\Wings\src\Wings\Main.php, integer 53, array Array()) 2019-01-14 [11:48:06] [Server thread/DEBUG]: #1 src/pocketmine/command/PluginCommand(58): Wings\Main->onCommand(pocketmine\Player object, pocketmine\command\PluginCommand object, string wing, array Array()) 2019-01-14 [11:48:06] [Server thread/DEBUG]: #2 src/pocketmine/command/SimpleCommandMap(261): pocketmine\command\PluginCommand->execute(pocketmine\Player object, string wing, array Array()) 2019-01-14 [11:48:06] [Server thread/DEBUG]: #3 src/pocketmine/Server(2028): pocketmine\command\SimpleCommandMap->dispatch(pocketmine\Player object, string wing green off) 2019-01-14 [11:48:06] [Server thread/DEBUG]: #4 src/pocketmine/Player(2209): pocketmine\Server->dispatchCommand(pocketmine\Player object, string wing green off) 2019-01-14 [11:48:06] [Server thread/DEBUG]: #5 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(238): pocketmine\Player->chat(string /wing green off) 2019-01-14 [11:48:06] [Server thread/DEBUG]: #6 src/pocketmine/network/mcpe/protocol/CommandRequestPacket(54): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleCommandRequest(pocketmine\network\mcpe\protocol\CommandRequestPacket object) 2019-01-14 [11:48:06] [Server thread/DEBUG]: #7 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(108): pocketmine\network\mcpe\protocol\CommandRequestPacket->handle(pocketmine\network\mcpe\PlayerNetworkSessionAdapter object) 2019-01-14 [11:48:06] [Server thread/DEBUG]: #8 src/pocketmine/network/mcpe/protocol/BatchPacket(119): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(pocketmine\network\mcpe\protocol\CommandRequestPacket object) 2019-01-14 [11:48:06] [Server thread/DEBUG]: #9 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(108): pocketmine\network\mcpe\protocol\BatchPacket->handle(pocketmine\network\mcpe\PlayerNetworkSessionAdapter object) 2019-01-14 [11:48:06] [Server thread/DEBUG]: #10 src/pocketmine/Player(3097): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(pocketmine\network\mcpe\protocol\BatchPacket object) 2019-01-14 [11:48:06] [Server thread/DEBUG]: #11 src/pocketmine/network/mcpe/RakLibInterface(170): pocketmine\Player->handleDataPacket(pocketmine\network\mcpe\protocol\BatchPacket object) 2019-01-14 [11:48:06] [Server thread/DEBUG]: #12 vendor/pocketmine/raklib/src/server/ServerHandler(99): pocketmine\network\mcpe\RakLibInterface->handleEncapsulated(string 192.168.1.7 57868, raklib\protocol\EncapsulatedPacket object, integer 0) 2019-01-14 [11:48:06] [Server thread/DEBUG]: #13 src/pocketmine/network/mcpe/RakLibInterface(110): raklib\server\ServerHandler->handlePacket() 2019-01-14 [11:48:06] [Server thread/DEBUG]: #14 src/pocketmine/network/mcpe/RakLibInterface(100): pocketmine\network\mcpe\RakLibInterface->process() 2019-01-14 [11:48:06] [Server thread/DEBUG]: #15 vendor/pocketmine/snooze/src/SleeperHandler(123): pocketmine\network\mcpe\RakLibInterface->pocketmine\network\mcpe\{closure}() 2019-01-14 [11:48:06] [Server thread/DEBUG]: #16 vendor/pocketmine/snooze/src/SleeperHandler(85): pocketmine\snooze\SleeperHandler->processNotifications() 2019-01-14 [11:48:06] [Server thread/DEBUG]: #17 src/pocketmine/Server(2347): pocketmine\snooze\SleeperHandler->sleepUntil(double 1547441286.919) 2019-01-14 [11:48:06] [Server thread/DEBUG]: #18 src/pocketmine/Server(2207): pocketmine\Server->tickProcessor() 2019-01-14 [11:48:06] [Server thread/DEBUG]: #19 src/pocketmine/Server(1783): pocketmine\Server->start() 2019-01-14 [11:48:06] [Server thread/DEBUG]: #20 src/pocketmine/PocketMine(249): pocketmine\Server->__construct(BaseClassLoader object, pocketmine\utils\MainLogger object, string C:\Users\Administrator\Desktop\Minecraft\HeroMC 1vs1\, string C:\Users\Administrator\Desktop\Minecraft\HeroMC 1vs1\plugins\) 2019-01-14 [11:48:06] [Server thread/DEBUG]: #21 (1): require(string phar://C:/Users/Administrator/Desktop/Minecraft/HeroMC 1vs1/PocketMine-MP.phar/src/pocketmine/PocketMine.php)
My full code PHP: <?phpnamespace Wings;use pocketmine\plugin\PluginBase;use pocketmine\command\Command;use pocketmine\command\CommandSender;use pocketmine\command\ConsoleCommandSender;use Wings\Tasks\{GreenWing, HeartWing, RedCircle, YellowCircle, BlueCircle, GreenCircle};use pocketmine\Player;use pocketmine\event\Listener;use pocketmine\event\player\PlayerQuitEvent;class Main extends PluginBase implements Listener{ public $tasks = []; public $winggreen = array("GreenWing"); public function onEnable () : void{ $this->getServer()->getLogger()->info("§l§aHero§bMC§e>§r§a Wings Enable"); $this->getServer()->getPluginManager()->registerEvents($this, $this); } public function onCommand(CommandSender $sender, Command $cmd, string $label, array $args) : bool{ if ($cmd == "wing"){ if(empty($args[0]) || empty($args[1])){ $sender->sendMessage("§9•§4 Circle Red. §e/wing circlered <on|off>"); $sender->sendMessage("§9•§e Circle Yellow. §e/wing circleyellow <on|off>"); $sender->sendMessage("§9•§b Circle Blue. §e/wing circleblue <on|off>"); $sender->sendMessage("§9•§a Circle Green. §e/wing circlegreen <on|off>"); $sender->sendMessage("§9•§a Wing Green §e/wing green <on|off>"); $sender->sendMessage("§9•§c Wing Heart. §e/wing heart <on|off>"); return true; } if(!empty($args[0])){ switch($args[0]){ case "green": if(!$sender->hasPermission("green.wing")){ $sender->sendMessage("§l§aHero§bMC§e>§r§c Bạn không có quyền dùng Wing §aGreen"); return true; } if($args[1] == "on"){ $greenwing[$sender->getName()] = $sender; $task = new GreenWing($sender); $this->tasks[$sender->getId()] = $task; $this->getScheduler()->scheduleRepeatingTask($task, 10); $sender->sendMessage("§l§aHero§bMC§e>§r§a Đã bật Wing Green"); } if($args[1] == "off"){ if(isset($task)){ $sender->sendMessage("§l§aHero§bMC§e>§r§c Bạn có bật wing green đâu?"); }else{ $task = $this->tasks[$sender->getId()]; unset($this->tasks[$sender->getId()]); $task->getHandler()->cancel(); $sender->sendMessage("§l§aHero§bMC§e>§r§c Đã tắt Wing §aGreen"); } } break; case "circlered": if(!$sender->hasPermission("red.circle")){ $sender->sendMessage("§l§aHero§bMC§e>§r§c Bạn không có quyền dùng Circle §4Red"); return true; } if($args[1] == "on"){ $task = new RedCircle($sender); $this->tasks[$sender->getId()] = $task; $this->getScheduler()->scheduleRepeatingTask($task, 10); $sender->sendMessage("§l§aHero§bMC§e>§r§a Đã bật Circle §4Red"); } if($args[1] == "off"){ $task = $this->tasks[$sender->getId()]; unset($this->tasks[$sender->getId()]); $task->getHandler()->cancel(); $sender->sendMessage("§l§aHero§bMC§e>§r§c Đã tắt Circle §4Red"); } break; case "circleyellow": if(!$sender->hasPermission("yellow.circle")){ $sender->sendMessage("§l§aHero§bMC§e>§r§c Bạn không có quyền dùng Circle §eYellow"); return true; } if($args[1] == "on"){ $task = new YellowCircle($sender); $this->tasks[$sender->getId()] = $task; $this->getScheduler()->scheduleRepeatingTask($task, 10); $sender->sendMessage("§l§aHero§bMC§e>§r§a Đã bật Circle §eYellow"); } if($args[1] == "off"){ $task = $this->tasks[$sender->getId()]; unset($this->tasks[$sender->getId()]); $task->getHandler()->cancel(); $sender->sendMessage("§l§aHero§bMC§e>§r§c Đã tắt Circle §eYellow"); } break; case "circleblue": if(!$sender->hasPermission("blue.circle")){ $sender->sendMessage("§l§aHero§bMC§e>§r§c Bạn không có quyền dùng Circle §bBlue"); return true; } if($args[1] == "on"){ $task = new BlueCircle($sender); $this->tasks[$sender->getId()] = $task; $this->getScheduler()->scheduleRepeatingTask($task, 10); $sender->sendMessage("§l§aHero§bMC§e>§r§a Đã bật Circle §bBlue"); } if($args[1] == "off"){ $task = $this->tasks[$sender->getId()]; unset($this->tasks[$sender->getId()]); $task->getHandler()->cancel(); $sender->sendMessage("§l§aHero§bMC§e>§r§c Đã tắt Circle §bBlue"); unset($this->tasks[$sender->getId()]); $task->getHandler()->cancel(); $sender->sendMessage("§l§aHero§bMC§e>§r§c Đã tắt Circle §bBlue"); } break; case "circlegreen": if(!$sender->hasPermission("green.circle")){ $sender->sendMessage("§l§aHero§bMC§e>§r§c Bạn không có quyền dùng Circle §aGreen"); return true; } if($args[1] == "on"){ $task = new GreenCircle($sender); $this->tasks[$sender->getId()] = $task; $this->getScheduler()->scheduleRepeatingTask($task, 10); $sender->sendMessage("§l§aHero§bMC§e>§r§a Đã bật Circle §aGreen"); } if($args[1] == "off"){ $task = $this->tasks[$sender->getId()]; unset($this->tasks[$sender->getId()]); $task->getHandler()->cancel(); $sender->sendMessage("§l§aHero§bMC§e>§r§c Đã tắt Circle §aGreen"); } break; case "heart": if(!$sender->hasPermission("heart.wing")){ $sender->sendMessage("§l§aHero§bMC§e>§r§c Bạn không có quyền dùng Wing §cHeart"); return true; } if($args[1] == "on"){ $task = new HeartWing($sender); $this->tasks[$sender->getId()] = $task; $this->getScheduler()->scheduleRepeatingTask($task, 10); $sender->sendMessage("§l§aHero§bMC§e>§r§a Đã bật Wing §cHeart"); } if($args[1] == "off"){ $task = $this->tasks[$sender->getId()]; unset($this->tasks[$sender->getId()]); $task->getHandler()->cancel(); $sender->sendMessage("§l§aHero§bMC§e>§r§c Đã tắt Wing §cHeart"); } break; default: $sender->sendMessage("§9•§4 Circle Red. §e/wing circlered <on|off>"); $sender->sendMessage("§9•§e Circle Yellow. §e/wing circleyellow <on|off>"); $sender->sendMessage("§9•§b Circle Blue. §e/wing circleblue <on|off>"); $sender->sendMessage("§9•§a Circle Green. §e/wing circlegreen <on|off>"); $sender->sendMessage("§9•§a Wing Green §e/wing green <on|off>"); $sender->sendMessage("§9•§c Wing Heart. §e/wing heart <on|off>"); break; } } } return true; } public function onQuit(PlayerQuitEvent $e) { $player = $e->getPlayer(); $name = $player->getName(); $task = $this->tasks[$player->getId()]; if(isset($task)){ unset($this->tasks[$player->getId()]); $task->getHandler()->cancel(); }else{ $this->getServer()->getLogger()->info("§l§aHero§bMC§e>§r§a $name không dùng wing nên không tắt~"); } }}
PHP: if(isset($task)){ $sender->sendMessage("§l§aHero§bMC§e>§r§c Bạn có bật wing green đâu?"); }else{ $task = $this->tasks[$sender->getId()]; unset($this->tasks[$sender->getId()]); $task->getHandler()->cancel(); $sender->sendMessage("§l§aHero§bMC§e>§r§c Đã tắt Wing §aGreen"); } } Line 53 PHP: $task = $this->tasks[$sender->getId()];
Well the issue is the Player/Sender id isn't set in the array so from the look of your code you must either: run a certain command first so that the Player/Sender id is SET in the array or provide BETTER checks to see if the Player/Sender id is set in the array.