setItem() public method

public setItem ( $index, Item $item, $send = true )
$item pocketmine\item\Item
Example #1
0
 /**
  * Condense items into blocks in an inventory, default MCPE item calculations (recipes) are used.
  *
  * @param BaseInventory $inv
  * @param Item|null $target
  * @return bool
  */
 public function condenseItems(BaseInventory $inv, $target = null)
 {
     // TODO: Fix inventory clear...
     $items = $target === null ? $inv->getContents() : $inv->all($target);
     if ($target !== null && !$this->canBeCondensed($target)) {
         return false;
     }
     $replace = Item::get(0);
     // First step: Merge target items...
     foreach ($items as $slot => $item) {
         if (!isset($this->condenseShapes[0][$item->getId()]) && !isset($this->condenseShapes[1][$item->getId()])) {
             continue;
         }
         $sub = $inv->all($item);
         foreach ($sub as $index => $i) {
             /** @var Item $i */
             if ($slot !== $index) {
                 $item->setCount($item->getCount() + $i->getCount());
                 $items[$index] = $replace;
                 var_dump($index . " - " . $slot);
             }
         }
     }
     $inv->setContents($items);
     // Second step: Condense items...
     foreach ($items as $slot => $item) {
         $condense = $this->condenseRecipes($item);
         if ($condense === null) {
             continue;
         }
         $cSlot = $slot;
         if ($item->getCount() > 0) {
             $cSlot = $inv->firstEmpty();
             $inv->setItem($slot, $item);
         }
         $inv->setItem($cSlot, $condense);
     }
     return true;
 }