Plugin to create easy forms for PocketMine-MP.
π New update:
- Now you can choose between getting the response via callback, or an event.
- Now compatible with api 4.0.0
β These new features are only available in the version compatible with api 4.0.0
For create a simple form
use FormAPI\window\SimpleWindowForm; use FormAPI\elements\ButtonImage; use FormAPI\elements\Button; use pocketmine\player\Player; $window = new SimpleWindowForm("name", "Select game", "Choose the game");//without callback $window = new SimpleWindowForm("name", "Select game", "Choose the game", function (Player $player, Button $selected) { $player->sendMessage("Hello, you select " . $selected->getText()); });//with callback $window->addButton("name", "SkyWars");//without image $window->addButton("name1", "BedWars", new ButtonImage("path", "textures/items/bed_blue.png"));//with image $window->showTo($player);
If your decision was not to use callback, you can get the response through this event
use FormAPI\response\PlayerWindowResponse; use FormAPI\window\SimpleWindowForm; public function onResponse(PlayerWindowResponse $event){ $player = $event->getPlayer(); $form = $event->getForm(); if(!$form instanceof SimpleWindowForm) return; if($form->getName() !== "name") return; if($form->isClosed()) { $player->sendMessage("The form has been closed"); return; } $player->sendMessage($form->getClickedButton()->getText()); }
For create a modal form
use FormAPI\window\ModalWindowForm; use pocketmine\player\Player; $window = new ModalWindowForm("name", "A little question", "The plugin is good?", "Yes", "No, sorry");//without callback $window = new ModalWindowForm("name", "A little question", "The plugin is good?", "Yes", "No, sorry", function (Player $player, bool $accept) { if ($accept) { $player->sendMessage("User accept"); } else { $player->sendMessage("User cancel"); } });//with callback $window->showTo($player);
If your decision was not to use callback, you can get the response through this event
use FormAPI\response\PlayerWindowResponse; use FormAPI\window\ModalWindowForm; public function onResponse(PlayerWindowResponse $event){ $player = $event->getPlayer(); $form = $event->getForm(); if(!$form instanceof ModalWindowForm) return; if($form->getName() !== "name") return; if($form->isClosed()) { $player->sendMessage("The form has been closed"); return; } if($form->isAccept()) {//responsexD $player->sendMessage("User accept"); } else { $player->sendMessage("User cancel"); } }
For create a custom form
use FormAPI\window\CustomWindowForm; use pocketmine\player\Player; $window = new CustomWindowForm("window_test", "Test", "This is a test");//without callback $window = new CustomWindowForm("window_test", "Test", "This is a test", function (Player $player, CustomWindowForm $form) { $user = $form->getElement("users"); $password = $form->getElement("password"); $player->sendMessage($user->getName() . ": " . $user->getFinalValue()); $player->sendMessage($password->getName() . ": " . $password->getFinalValue()); });//with callback $window->addDropdown("users", "Select the users", ["ClembArcade", "RomnSD"]); $window->addInput("password", "Insert your password"); $window->addSlider("age", "Select your age", 6, 20); $window->addToggle("notifications", "You want receive notifications?"); $window->showTo($player);
If your decision was not to use callback, you can get the response through this event
use FormAPI\response\PlayerWindowResponse; use FormAPI\window\CustomWindowForm; public function onResponse(PlayerWindowResponse $event){ $player = $event->getPlayer(); $form = $event->getForm(); if(!$form instanceof CustomWindowForm) return; if($form->getName() !== "window_test") return; if($form->isClosed()) { $player->sendMessage("The form has been closed"); return; } $user = $form->getElement("users"); $password = $form->getElement("password"); $age = $form->getElement("age"); $noti = $form->getElement("notifications"); $player->sendMessage($user->getName() . ": " . $user->getFinalValue()); $player->sendMessage($password->getName() . ": " . $password->getFinalValue()); $player->sendMessage($age->getName() . ": " . $age->getFinalValue()); $player->sendMessage($noti->getName() . ": " . $noti->getFinalValue()); }