This may sound like a dumb question but how do I add a form to a slapper or any action without having to add a command to it?
PHP: public function onEntityDamage(EntityDamageEvent $event): void { $entity = $event->getEntity(); if ($entity instanceof SlapperEntity || $entity instanceof SlapperHuman) { // Code }}
PHP: /*** Called when player hit a slapper entity* @param \slapper\events\SlapperHitEvent $event*/public function onSlapperHit(SlapperHitEvent $event) { $slapper = $event->getEntity(); $player = $event->getDamager(); $slapperName = $slapper->getNameTag(); if ($slapperName === "MySlapper") { // ... }}
Spoiler: Example PHP: public function onSlapperHit(SlapperHitEvent $event) // \slapper\events\SlapperHitEvent { $slapper = $event->getEntity(); $player = $event->getDamager(); $slapperName = $slapper->getNameTag(); $slapperTag = $slapper->namedtag; if ($slapperName === "TempName") { $slapper->setNameTag("TheRealName"); if (!$slapperTag->hasTag("Form", StringTag::class)) { // \pocketmine\nbt\tag\StringTag $slapperTag->setString("Form", "Rules"); } } if ($slapperTag->hasTag("Form", StringTag::class)) { $this->openForm($player, $slapperTag->getString("Form")); } } private function openForm(Player $player, string $type) { if ($type === "Rules") { $form = new SimpleForm(function (Player $player, $data = null) { if ($data === "r1") { // ... } }); $form->setTitle("MyRules"); $form->setContent("Read These Rules!"); $form->addButton("Rule 1", -1, "", "r1"); $player->sendForm($form); } }