[{"data":1,"prerenderedAt":83},["ShallowReactive",2],{"plugin-DenzelCode\u002FFormAPI":3},{"api_version":4,"authors":5,"categories":18,"created_at":19,"dependencies":20,"description":21,"detection_confidence":22,"downloads":23,"gallery":24,"icon_url":7,"id":25,"license":26,"links":30,"manifest_path":31,"name":32,"primary_target":33,"server_version":34,"source":35,"stars":36,"summary":37,"targets":38,"updated_at":40,"versions":41},"1.0.8",[6,10,14],{"avatar_url":7,"name":8,"url":9},"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F27902328?v=4","DenzelCode","https:\u002F\u002Fgithub.com\u002FDenzelCode",{"avatar_url":11,"name":12,"url":13},"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F25331903?v=4","Yahir-AR","https:\u002F\u002Fgithub.com\u002FYahir-AR",{"avatar_url":15,"name":16,"url":17},"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F29084446?v=4","aabstractt","https:\u002F\u002Fgithub.com\u002Faabstractt",[],1600328139,[],"# FormAPI\nThe best form API provider for Nukkit Cloudburst.\n\n## What's FormAPI?\nFormAPI is an API that provides you everything that you need to enhance your plugins with the forms system implemented on Nukkit.\n\n\n## Download\nDownload the latest JAR: https:\u002F\u002Fgithub.com\u002FDenzelCode\u002FFormAPI\u002Freleases\u002Flatest\n\n## Dependency for maven:\n```\n\u003Cdependency>\n    \u003CgroupId>com.denzelcode.form\u003C\u002FgroupId>\n    \u003CartifactId>FormAPI\u003C\u002FartifactId>\n    \u003Cversion>2.2-SNAPSHOT\u003C\u002Fversion>\n    \u003CsystemPath>${project.basedir}\u002Flib\u002FFormAPI.jar\u003C\u002FsystemPath>\n\u003C\u002Fdependency>\n```\n\n## Installation:\n- Put the FormAPI.jar inside of \u002Fplugins. \n\nIn case you don't want to put it inside of plugins just execute this line of code inside of your plugin to run the EventListener:\n```\nimport com.denzelcode.form.FormAPI;\n\nFormAPI.init();\n```\n\n## Example:\n**Create form and send it to the client:**\n```java\npackage com.denzelcode.test;\n\nimport cn.nukkit.Player;\nimport cn.nukkit.command.Command;\nimport cn.nukkit.command.CommandSender;\nimport com.denzelcode.form.FormAPI;\n\npublic class TestCommand extends Command {\n    public TestCommand() {\n        super(\"test\");\n    }\n\n    @Override\n    public boolean execute(CommandSender sender, String label, String[] args) {\n        FormAPI.customWindowForm(\"login\", \"Custom Form\")\n                .addInput(\"username\", \"Username\", \"Enter your username\")\n                .addInput(\"password\", \"Password\", \"Enter your password\")\n                .addHandler((e) -> System.out.println('Variable e is an instance of CustomFormSubmitEvent'))\n                .sendTo((Player) sender);\n\n        return true;\n    }\n}\n\n```\n**Event listener:**\n```java\npackage com.denzelcode.test;\n\nimport cn.nukkit.Player;\nimport cn.nukkit.event.EventHandler;\nimport cn.nukkit.event.EventPriority;\nimport cn.nukkit.event.Listener;\nimport com.denzelcode.form.FormAPI;\nimport com.denzelcode.form.element.Button;\nimport com.denzelcode.form.element.Input;\nimport com.denzelcode.form.event.CustomFormSubmitEvent;\nimport com.denzelcode.form.event.ModalFormSubmitEvent;\nimport com.denzelcode.form.event.SimpleFormButtonClickEvent;\nimport com.denzelcode.form.window.CustomWindowForm;\nimport com.denzelcode.form.window.ModalWindowForm;\nimport com.denzelcode.form.window.SimpleWindowForm;\n\npublic class EventListener implements Listener {\n\n    @EventHandler(priority = EventPriority.NORMAL)\n    public void onLoginFormSubmit(CustomFormSubmitEvent event) {\n        CustomWindowForm form = event.getForm();\n        Player player = event.getPlayer();\n\n        if (!event.isFormValid(\"login\")) return;\n\n        Input username = form.getElement(\"username\");\n        Input password = form.getElement(\"password\");\n\n        player.sendMessage(\"Player: \" + player.getName());\n        player.sendMessage(\"Form: \" + form.getName());\n        player.sendMessage(\"Username: \" + username.getValue());\n        player.sendMessage(\"Password: \" + password.getValue());\n\n        FormAPI.modalWindowForm(\n                \"login_remember\",\n                \"Remember\",\n                \"Do you want to remember your account in this device?\",\n                \"Yes\",\n                \"No\"\n        ).sendTo(player);\n    }\n\n    @EventHandler(priority = EventPriority.NORMAL)\n    public void onRememberFormSubmit(ModalFormSubmitEvent event) {\n        ModalWindowForm form = event.getForm();\n        Player player = event.getPlayer();\n\n        if (!event.isFormValid(\"login_remember\")) return;\n\n        boolean accepted = event.isAccepted();\n\n        player.sendMessage(\"Player: \" + player.getName());\n        player.sendMessage(\"Form: \" + form.getName());\n        player.sendMessage(\"Accepted: \" + (accepted ? \"Yes\" : \"No\"));\n\n        FormAPI.simpleWindowForm(\"minigames\", \"Minigames\", \"Select a minigame which you want to play!\")\n                .addButton(\"skywars\", \"SkyWars\")\n                .addButton(\"luckyislands\", \"LuckyIslands\")\n                .sendTo(player);\n    }\n\n    @EventHandler(priority = EventPriority.NORMAL)\n    public void onMinigameFormSubmit(SimpleFormButtonClickEvent event) {\n        SimpleWindowForm form = event.getForm();\n        Player player = event.getPlayer();\n        Button button = event.getButton();\n\n        if (!event.isFormValid(\"minigames\")) return;\n\n        player.sendMessage(\"Player: \" + player.getName());\n        player.sendMessage(\"Form: \" + form.getName());\n        player.sendMessage(\"Clicked button: \" + button.getName());\n\n        player.sendMessage(\"Successfully joined Minigame: \" + button.getText() + \"!\");\n    }\n}\n\n```\n\n- Run command \u002Ftest and you will have this showed in-game:\n[Screenshot](https:\u002F\u002Fimgur.com\u002Fa\u002FlFqzhYq)\n\n## Form Types\nModal Example\n```java\nimport com.denzelcode.form.FormAPI;\n\nFormAPI.modalWindowForm(\"modal\", \"Custom Form\", \"This is a content\", \"Accept\", \"Decline\")\n    .addHandler((e) -> System.out.println('Variable e is an instance of ModalFormSubmitEvent'))\n    .sendTo(player);\n```\nSimple Example\n```java\nimport com.denzelcode.form.FormAPI;\n\nFormAPI.simpleWindowForm(\"simple\", \"Simple Form\", \"This is a content\")\n    .addButton(\"name\", \"This is a button\")\n    .addButton(\"name1\", \"Hi, im a button\", \"https:\u002F\u002Fi.imgur.com\u002FPPvUcoW.png\")\u002F\u002FImageType is default URL in this case\n    .addButton(\"name2\", \"This is other button\", ImageType.PATH, \"textures\u002Fui\u002FfeedIcon.png\")\n    .addHandler((e) -> System.out.println('Variable e is an instance of SimpleFormButtonClickEvent'))\n    .sendTo(player);\n```\nCustom Example\n```java\nimport com.denzelcode.form.FormAPI;\n\nList\u003CString> optionsDropdown = new ArrayList\u003CString>(){{\n    add(\"Option 1\");\n    add(\"Option 2\");\n}};\n\nFormAPI.customWindowForm(\"custom\", \"Custom Form\")\n    .addInput(\"name\", \"Fill the input\", \"Hello, im the input\")\n    .addDropdown(\"name1\", \"text\", optionsDropdown)\n    .addLabel(\"name2\", \"This a label\")\n    .addSlider(\"name3\", \"This is a slider\", 1f, 10f)\n    .addToggle(\"name4\", \"This is a toggle\", false)\n    .addHandler((e) -> System.out.println('Variable e is an instance of CustomFormSubmitEvent'))\n    .sendTo(player);\n```\n\n## Licensing information\nThis project is licensed under LGPL-3.0. Please see the [LICENSE](https:\u002F\u002Fgithub.com\u002FDenzelCode\u002FFormAPI\u002Fblob\u002Fmaster\u002F\u002FLICENSE) file for details.\n\n## Donations\n* [PayPal](https:\u002F\u002Fpaypal.me\u002FDenzelGiraldo)\n","medium",0,[],"DenzelCode\u002FFormAPI",{"id":27,"name":28,"url":29},"LGPL-3.0","GNU Lesser General Public License v3.0","https:\u002F\u002Fspdx.org\u002Flicenses\u002FLGPL-3.0.html",null,"src\u002Fmain\u002Fresources\u002Fplugin.yml","FormAPI","nkx","","https:\u002F\u002Fgithub.com\u002FDenzelCode\u002FFormAPI",8,"FormAPI for Nukkit",[33,39],"nkmot",1659037365,[42,53,60,67,75],{"changelog":34,"downloads":23,"files":43,"name":49,"prerelease":50,"published_at":51,"version":52},[44],{"filename":45,"primary":46,"size":47,"url":48},"FormAPI.jar",true,26236,"https:\u002F\u002Fgithub.com\u002FDenzelCode\u002FFormAPI\u002Freleases\u002Fdownload\u002F2.1-SNAPSHOT\u002FFormAPI.jar","FormAPI v2.1",false,1639265734,"2.1-SNAPSHOT",{"changelog":34,"downloads":23,"files":54,"name":58,"prerelease":50,"published_at":59,"version":58},[55],{"filename":45,"primary":46,"size":56,"url":57},26494,"https:\u002F\u002Fgithub.com\u002FDenzelCode\u002FFormAPI\u002Freleases\u002Fdownload\u002F2.0.1-SNAPSHOT\u002FFormAPI.jar","2.0.1-SNAPSHOT",1618718555,{"changelog":34,"downloads":23,"files":61,"name":65,"prerelease":50,"published_at":66,"version":65},[62],{"filename":45,"primary":46,"size":63,"url":64},27102,"https:\u002F\u002Fgithub.com\u002FDenzelCode\u002FFormAPI\u002Freleases\u002Fdownload\u002F2.0-SNAPSHOT\u002FFormAPI.jar","2.0-SNAPSHOT",1610911574,{"changelog":34,"downloads":23,"files":68,"name":72,"prerelease":50,"published_at":73,"version":74},[69],{"filename":45,"primary":46,"size":70,"url":71},21606,"https:\u002F\u002Fgithub.com\u002FDenzelCode\u002FFormAPI\u002Freleases\u002Fdownload\u002F1.0.0.2\u002FFormAPI.jar","FormAPI 1.0.0.2",1600349933,"1.0.0.2",{"changelog":34,"downloads":23,"files":76,"name":80,"prerelease":50,"published_at":81,"version":82},[77],{"filename":45,"primary":46,"size":78,"url":79},20026,"https:\u002F\u002Fgithub.com\u002FDenzelCode\u002FFormAPI\u002Freleases\u002Fdownload\u002F1.0.0\u002FFormAPI.jar","FormAPI 1.0.0",1600328295,"1.0.0",1793217805891]