It's because Item::addEnchantment() doesn't return the item instance (unlike setCustomName(), setLore(), etc..). You need to use: PHP: $item = Item::get(Item::STICK);$item->addEnchantment(...);$player->getInventory()->addItem($item); Also, small tip: You can specify multiple 'Item' parameters to Inventory::addItem(). PHP: $inventory->addItem( Item::get(Item::STICK), Item::get(Item::STONE), Item::get(Item::BONE));