As with tapas at a certain block enchant any thing? I used PlayerInteractEvent. Does not work Help me please. Thank you in advance.
My code: Code: <?php namespace EnchantItem; use pocketmine\event\player\PlayerInteractEvent; use pocketmine\item\Item; use pocketmine\item\enchantment\Enchantment; use pocketmine\item\enchantment\EnchantmentEntry; use pocketmine\item\enchantment\EnchantmentList; use pocketmine\utils\TextFormat; use pocketmine\event\Listener; use pocketmine\plugin\PluginBase; class EnchantItem extends PluginBase implements Listener{ public function onEnable(){ $this->getServer()->getPluginManager()->registerEvents($this, $this); } public function onTap(PlayerInteractEvent $event){ $player = $event->getPlayer(); if ($event->getBlock ()->getId () == Item::MOBSPAWNER) { $enchantment = Enchantment::getEnchantment(9); $enchantment->setLevel(1); $item->addEnchantment($enchantment); $p->sendMessage(TextFormat::RED."Предмет успешно зачарован !"); } } }
I want to do this: If any thing on the taps to mobspawner the thing enchanting. How to fix this error (what add)?
You should learn PHP and the API.. You have to define $item. I don't know what Item you want to enchant, if you want to enchant the item in the player's Hand, use PHP: $item = $player->getInventory()->getItemInHand();
PHP: if ($event->getBlock ()->getId () == Item::MOBSPAWNER) Should be changed to: PHP: if($event->getBlock() instanceof MOBSPAWNER) or PHP: if($event->getBlock()->getId() == /*int*/)
you have to remove the item then add enchantment then send item to inventory or else no enchantment will show as well
Code: <?php namespace EnchantItem; use pocketmine\event\player\PlayerInteractEvent; use pocketmine\item\Item; use pocketmine\item\enchantment\Enchantment; use pocketmine\item\enchantment\EnchantmentEntry; use pocketmine\item\enchantment\EnchantmentList; use pocketmine\utils\TextFormat; use pocketmine\event\Listener; use pocketmine\plugin\PluginBase; class EnchantItem extends PluginBase implements Listener{ public function onEnable(){ $this->getServer()->getPluginManager()->registerEvents($this, $this); } public function onTap(PlayerInteractEvent $event){ $player = $event->getPlayer(); if ($event->getBlock ()->getId () == Item::MOBSPAWNER) { $enchantment = Enchantment::getEnchantment(9); $enchantment->setLevel(1); $item->addEnchantment($enchantment); $p->sendMessage(TextFormat::RED."Предмет успешно зачарован !"); } } } [/QUOTE] use : PHP: if($event->getBlock()->getId() == Block::get($id)){}
well... $item is undefined.. fixed code : PHP: <?phpnamespace EnchantItem;use pocketmine\event\player\PlayerInteractEvent;use pocketmine\item\Item;use pocketmine\item\enchantment\Enchantment;use pocketmine\item\enchantment\EnchantmentEntry;use pocketmine\item\enchantment\EnchantmentList;use pocketmine\utils\TextFormat;use pocketmine\event\Listener;use pocketmine\plugin\PluginBase;use pocketmine\block\Block;class EnchantItem extends PluginBase implements Listener{public function onEnable(){$this->getServer()->getPluginManager()->registerEvents($this, $this);}public function onTap(PlayerInteractEvent $event){$player = $event->getPlayer();if ($event->getBlock() == Block::MONSTER_SPAWNER) {$enchantment = Enchantment::getEnchantment(9);$enchantment->setLevel(1);$item = $player->getInventory()->getItemInHand();$item->addEnchantment($enchantment);$p->sendMessage(TextFormat::RED."Предмет успешно зачарован !");}}}