Hello, I want to put a enchant on an item if it is Tool and Armor. Can you help me? (My English bad )
if the item in the player's hand is repairable, continue processing if not send message player ("Not repairable item")
You're trying to check if the has a item in their inventory that can been repaired. If it can be repaired, it repairs the item. If it can't be repaired, it sends a message to the player "Not repairable item". Correct? I am making sure.
Spoiler: code PHP: <?phpnamespace mlsdmitry\ForumThreads;use pocketmine\event\Listener;use pocketmine\event\player\PlayerInteractEvent;use pocketmine\event\player\PlayerJoinEvent;use pocketmine\item\Durable;use pocketmine\item\Item;class EnchantIf implements Listener{ /* * Let's take PlayerInteractEvent * When player interact with item in hand, if item repairable -> repair else -> message player ("Not repairable item") */ public function onInteract(PlayerInteractEvent $event) { $p = $event->getPlayer(); $inv = $p->getInventory(); //! Get inventory to get the item in hand $itemInHand = $inv->getItemInHand(); // ? That's it! if ($itemInHand instanceof Durable) { //! oops i forgot about armor. Now it should work correctly if ($itemInHand->getDamage() == 0) //! Just pass it, because of item already fully repaired return true; $itemInHand->setDamage(0); $inv->setItemInHand($itemInHand); $p->sendMessage("Item repaired"); } else { $p->sendMessage("Not repairable item"); } return true; } /* * To test our code */ public function onJoin(PlayerJoinEvent $event) { $p = $event->getPlayer(); $item = new Item(Item::DIAMOND_AXE, 50); $p->getInventory()->addItem($item); }}
PHP: <?phpnamespace loostac2;use pocketmine\Player;use pocketmine\Server;use pocketmine\command\CommandSender;use pocketmine\command\Command;use pocketmine\plugin\Plugin;use pocketmine\level\sound\AnvilUseSound;use pocketmine\plugin\PluginBase;use onebone\economyapi\EconomyAPI; class Main extends PluginBase{ public function onEnable(){ $this->getLogger()->info("§7> §aAktif"); } public function onDisable(){ $this->getLogger()->info("§7> §cDe-Aktif"); } public function onCommand(CommandSender $sender, Command $kmt, string $label, array $args): bool { switch($kmt->getName()){ case "ptamir": if($sender instanceof Player) { $this->tamirForm($sender); } break; } return true; } public function tamirForm($player){ $api = $this->getServer()->getPluginManager()->getPlugin("FormAPI"); $this->eco = EconomyAPI::getInstance(); $form = $api->createSimpleForm(function (Player $player, int $data = null){ $result = $data; if($result === null){ return true; } switch($result){ case 0: $item = $player->getPlayer()->getInventory()->getItemInHand(); if($item instanceof { if($this->eco->myMoney($player->getName()) >= 10000){ $this->eco->reduceMoney($player, 10000); $player->sendPopUp("§8»§fEşya Başarıyla Tamir Edildi."); $item = $player->getPlayer()->getInventory()->getItemInHand(); $item->setDamage(0); $player->getPlayer()->getInventory()->setItemInHand($item); $player->getLevel()->addSound(new AnvilUseSound($player)); }else{ $player->sendMessage("§8»§cEşyanı tamir etmek istiyorsan minimum §710000§5TL §cparan olmalı!"); } }else{ $player->sendMessage("§8»§cElindeki eşya tamir edilebilir değil!"); } break; case 1: break; } }); $form->setTitle("Tamir Menüsü"); $form->setContent("§8»§fTamir etmek istediğin eşyayı eline al!\n\n§8»§cİşlem Ücreti §710000§5TL§c'dir"); $form->addButton("§f-§aEvet§f-"); $form->addButton("§f-§cHayır§f-"); $form->sendToPlayer($player); return $form; }}
Replace with this code Don't forget to import this PHP: use pocketmine\item\Durable; Spoiler: code PHP: case 0: $item = $player->getPlayer()->getInventory()->getItemInHand(); if($item instanceof Durable) { if($this->eco->myMoney($player->getName()) >= 10000){ $this->eco->reduceMoney($player, 10000); $player->sendPopUp("§8»§fEşya Başarıyla Tamir Edildi."); $item = $player->getPlayer()->getInventory()->getItemInHand(); $item->setDamage(0); $player->getPlayer()->getInventory()->setItemInHand($item); $player->getLevel()->addSound(new AnvilUseSound($player)); }else{ $player->sendMessage("§8»§cEşyanı tamir etmek istiyorsan minimum §710000§5TL §cparan olmalı!"); } }else{ $player->sendMessage("§8»§cElindeki eşya tamir edilebilir değil!"); }