pocketmine\inventory\EnchantInventory::onEnchant PHP Метод

onEnchant() публичный Метод

public onEnchant ( Player $who, Item $before, Item $after )
$who pocketmine\Player
$before pocketmine\item\Item
$after pocketmine\item\Item
    public function onEnchant(Player $who, Item $before, Item $after)
    {
        $result = $before->getId() === Item::BOOK ? new EnchantedBook() : $before;
        if (!$before->hasEnchantments() and $after->hasEnchantments() and $after->getId() == $result->getId() and $this->levels != null and $this->entries != null) {
            $enchantments = $after->getEnchantments();
            for ($i = 0; $i < 3; $i++) {
                if ($this->checkEnts($enchantments, $this->entries[$i]->getEnchantments())) {
                    $lapis = $this->getItem(1);
                    $level = $who->getXpLevel();
                    $cost = $this->entries[$i]->getCost();
                    if ($lapis->getId() == Item::DYE and $lapis->getDamage() == Dye::BLUE and $lapis->getCount() > $i and $level >= $cost) {
                        foreach ($enchantments as $enchantment) {
                            $result->addEnchantment($enchantment);
                        }
                        $this->setItem(0, $result);
                        $lapis->setCount($lapis->getCount() - $i - 1);
                        $this->setItem(1, $lapis);
                        $who->takeXpLevel($i + 1);
                        break;
                    }
                }
            }
        }
    }