public function setItem($index, Item $item, $send = true)
{
$item = clone $item;
if ($index < 0 or $index >= $this->size) {
return false;
} elseif ($item->getId() === 0 or $item->getCount() <= 0) {
return $this->clear($index, $send);
}
$holder = $this->getHolder();
if ($holder instanceof Entity) {
Server::getInstance()->getPluginManager()->callEvent($ev = new EntityInventoryChangeEvent($holder, $this->getItem($index), $item, $index));
if ($ev->isCancelled()) {
$this->sendSlot($index, $this->getViewers());
return false;
}
$item = $ev->getNewItem();
}
$old = $this->getItem($index);
$this->slots[$index] = clone $item;
$this->onSlotChange($index, $old, $send);
return true;
}