Hello, i have a plugin that manages all the forms, i started with a bank, there are 3 buttons: Button 1: You Have $Money Dollars Button 2: Send Money To Another Player Button 3: Take Debt There is a problem at button 2, the form dosen't open, tried everything PHP: <?phpnamespace zebby\pm;use pocketmine\Player;use pocketmine\command\Command;use pocketmine\command\CommandSender;use pocketmine\Server;use pocketmine\plugin\PluginBase;use pocketmine\utils\TextFormat as TF;use onebone\economyapi\EconomyAPI;use pocketmine\event\Listener;class Main extends PluginBase implements Listener{ public function onEnable() { $this->getServer()->getPluginManager()->registerEvents($this, $this); } public function onDisable() { //do nothing } public function onCommand(CommandSender $player, Command $cmd , String $label, array $args): bool{ switch($cmd->getName()) { case "bank": if($player instanceof Player) { $this->BankForm1($player); } else { $this->getLogger()->getServer()->info("error"); } break; return true; } return true; } public function BankForm1(Player $player) { $api = $this->getServer()->getPluginManager()->getPlugin("FormAPI"); //using formapi; $form = $api->createSimpleForm(function (Player $player, int $data = null) { $result = $data; if($result == null) { return true; } switch($result) { case 0: $myMoney = EconomyAPI::getInstance()->myMoney($player); $player->sendMessage("You Have". $MyMoney . "Dollars"); break; case 1: if($player instanceof Player) { $this->SendMoneyForm($player); }// else { //$this->getServer()->getLogger()->info("Error2"); //} break; return true; case 2: $player->SendMessage(TF::BLUE . "Coming Soon"); break; return true; } }); $MyMoney = EconomyAPI::getInstance()->myMoney($player); $form->setTitle("Bank"); $form->addButton(TF::GOLD . "You Have " . $MyMoney . " Dollars."); $form->addButton("Send Money To Player"); $form->addButton("Take Debt"); $form->SendToPlayer($player); return $form; } public function SendMoneyForm(Player $player) { $api = $this->getServer()->getPluginManager()->getPlugin("FormAPI"); $form2 = $api->createCustomForm(function (Player $player, int $data2 = null) { $result2 = $data2; if($result2 == null) { return true; } // $result2 = $data2; switch($result2) { case 0: if($player instanceof Player) { //$this->SendMoney($player); $Amount1 = $data[2]; $MoneySP = $data[1]; $MyMoney = EconomyAPI::getInstance()->myMoney($player); if($MyMoney($player) >= ($Amount1)) { EconomyAPI::getInstance()->addMoney($MoneySP, $Amount1); EconomyAPI::getInstance()->reduceMoney($player, $Amount1); } else { $player->SendMessage(TF::RED . "You Don't Have Enough Money."); } } break; return true; } $form2->setTitle("Send Money To Player"); $form2->addInput("Send Money To", "Enter Player IGN"); // $form2->addLabel("You Have " . $MyMoney . "Dollars"); $form2->addInput("Amount", "Enter Amount"); $form2->addButton("Complete Transaction"); $form2->sendToPlayer($player); return $form2; }); } // ) public function Mines(Player $player) { $api = $this->getServer()->getPluginManager()->getPlugin("FormAPI"); $form3 = $api->createSimpleForm(function (Player $player, array $data3 = null) { if($data3 == null) { return true; } $form3->setTitle("Mines"); $form3->addButton(TF::GOLD . "Premium Mines"); $form3->addButton("Mine A"); $form3->addButton("Mine B"); $form3->addButton("Mine C"); $form3->addButton("Mine D"); $form3->addButton("Mine E"); $form3->addButton("Mine F"); } );}} Thx.
A CustomForm's data should be of the type ?array, because it can be either an array or null. So because of that, you can't check for the response the same way as a SimpleForm. CustomForms have just one "Submit" button, and all of the elements from within the form are the data, stored in an array. For example, if your first element of the form is a slider, then it is stored in the first value of the response array, and so forth for responses after that. It looks like $data is undefined as well.