public function onRename(Item $item, Player $player) : bool { if ($player->getExpLevel() > $item->getRepairCost()) { $player->setExpLevel($player->getExpLevel() - $item->getRepairCost()); return true; } return false; }
public function onRename(Player $player, Item $resultItem) : bool { if (!$resultItem->deepEquals($this->getItem(self::TARGET), true, false, true)) { //Item does not match target item. Everything must match except the tags. return false; } if ($player->getExpLevel() < $resultItem->getRepairCost()) { //Not enough exp return false; } $player->setExpLevel($player->getExpLevel() - $resultItem->getRepairCost()); $this->clearAll(); if (!$player->getServer()->allowInventoryCheats and !$player->isCreative()) { if (!$player->getFloatingInventory()->canAddItem($resultItem)) { return false; } $player->getFloatingInventory()->addItem($resultItem); } return true; }
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 ($enchantments == $this->entries[$i]->getEnchantments()) { $lapis = $this->getItem(1); $level = $who->getExpLevel(); $exp = $who->getExperience(); $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->setExperienceAndLevel($exp, $level - $cost); break; } } } } }