Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dresnite/easyui
📖 An intuitive and easy-to-use form library for PocketMine-MP
https://github.com/dresnite/easyui
mcpe minecraft pmmp pocketmine pocketmine-mp-plugin
Last synced: 3 months ago
JSON representation
📖 An intuitive and easy-to-use form library for PocketMine-MP
- Host: GitHub
- URL: https://github.com/dresnite/easyui
- Owner: dresnite
- License: lgpl-3.0
- Created: 2020-07-21T18:44:33.000Z (over 4 years ago)
- Default Branch: pm5
- Last Pushed: 2023-10-18T22:37:32.000Z (about 1 year ago)
- Last Synced: 2024-09-27T10:01:43.191Z (4 months ago)
- Topics: mcpe, minecraft, pmmp, pocketmine, pocketmine-mp-plugin
- Language: PHP
- Homepage:
- Size: 40 KB
- Stars: 29
- Watchers: 0
- Forks: 12
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# EasyUI
EasyUI is an intuitive and easy-to-use form library for PocketMine-MP. Designed to let you focus on your project and not on how the library works.
## Download
You can download the virion in [Poggit](https://poggit.pmmp.io/ci/dresnite/easyui/libEasyUI).
## Code examples
### General rules
All the closures passed to EasyUI classes must declare a variable of the class Player as first and only argument, except for the CustomForm submit listener, which also requires FormResponse as second parameter.
### SimpleForm
Creating a form with a button without an icon:
```php
$form = new SimpleForm("This is the title");
$form->addButton(new Button("Say hi", null, function(Player $player) {
$player->sendMessage("Hello!");
}));
$player->sendForm($form);
```Creating a form with a button with an icon:
```php
$form = new SimpleForm("This is the title");
$form->addButton(new Button("Press me!", new ButtonIcon("https://introduce-the-image-url.here"), function(Player $player) {
$player->sendMessage("Hey! Thanks for pressing me :)");
}));
$player->sendForm($form);
```Creating a form with a header text (optional):
```php
new SimpleForm("This is the title", "This is the header text");
```Controlling what happens when a form closes (optional):
```php
$form->setCloseListener(function(Player $player) {
echo "The form was closed!";
})
```### ModalForm
Creating a modal form and handling what happens when the player presses "accept" or "deny":
```php
$form = new ModalForm("The title goes here!", "Do you want this plugin to save you a lot of time?");
$form->setAcceptListener(function(Player $player) {
$player->sendMessage("Great! Keep building good software");
});$form->setDenyListener(function(Player $player) {
$player->sendMessage("Whatever :/");
});```
You can also change the text of the buttons:
```php
$form->setAcceptText("Yes");
$form->setDenyText("Yesn't");
```### CustomForm
Creating a custom form with an input and a dropdown
```php
$form = new CustomForm("This is the title!");
$form->addElement("my_text", new Input("This is the input header text!"));$dropdown = new Dropdown("This is the dropdown header text");
$dropdown->addOption(new Option("broadcast", "Broadcast message"));
$dropdown->addOption(new Option("send_to_myself", "Send message to myself"));$form->addElement("what_to_do", $dropdown);
$form->setSubmitListener(function(Player $player, FormResponse $response) {
$submittedText = $response->getInputSubmittedText("my_text");
$submittedOption = $response->getDropdownSubmittedOptionId("what_to_do");
if($submittedOption === "send_to_myself") {
$player->sendMessage($submittedText);
} elseif($submittedOption === "broadcast") {
foreach($player->getServer()->getOnlinePlayers() as $onlinePlayer) {
$onlinePlayer->sendMessage("[BROADCAST] $submittedText");
}
}
});
```## Object oriented approach
In some cases, the forms are huge and mess up the code. In those cases, you can use a more object oriented approach to keep the code as clean as possible.
### SimpleForm
```php
class ExampleForm extends SimpleForm {public function __construct() {
parent::__construct("Form title");
}protected function onCreation(): void {
$button = new Button("A very very big button");
$button->setIcon(new ButtonIcon("https://a-cool-url.i.think"));
$button->setSubmitListener(function(Player $player) {
$player->sendMessage("Making this form was so easy!");
});
$this->addButton($button);
}}
```### ModalForm
```php
class ExampleForm extends ModalForm {
public function __construct() {
parent::__construct("The title", "The content text");
}protected function onAccept(Player $player): void {
$player->sendMessage("You pressed 'Accept' <3");
}protected function onDeny(Player $player): void {
$player->sendMessage("You pressed 'Deny' >:(");
}}
```
**NOTE**: `onCreation()` is also available on ModalForms.### CustomForm
```php
class ExampleForm extends CustomForm {public function __construct() {
parent::__construct("The title goes here");
}public function onCreation(): void {
// You can add the elements here
}public function onSubmit(Player $player, FormResponse $response): void {
// You can modify the response here
}}
```Then you can send the forms as you normally would with:
```php
$player->sendForm(new ExampleForm());
```