private static function writeEnchantList(EnchantmentList $list, BinaryStream $stream) { $stream->putByte($list->getSize()); for ($i = 0; $i < $list->getSize(); ++$i) { $entry = $list->getSlot($i); $stream->putInt($entry->getCost()); $stream->putByte(count($entry->getEnchantments())); foreach ($entry->getEnchantments() as $enchantment) { $stream->putInt($enchantment->getId()); $stream->putInt($enchantment->getLevel()); } $stream->putString($entry->getRandomName()); } return CraftingDataPacket::ENTRY_ENCHANT_LIST; }
public function sendEnchantmentList() { $pk = new CraftingDataPacket(); if ($this->entries != null and $this->levels != null) { $list = new EnchantmentList(count($this->entries)); for ($i = 0; $i < count($this->entries); $i++) { $list->setSlot($i, $this->entries[$i]); } $pk->addEnchantList($list); } Server::getInstance()->broadcastPacket($this->getViewers(), $pk); }
public function onUpdate() { if ($this->getLevel()->getServer()->getTick() % 20 == 0) { //Update per second $item = $this->inventory->getItem(0); if (!isset($this->item) or !$item->deepEquals($this->item)) { $this->item = $item; $enchantmentList = new EnchantmentList(3); for ($i = 0; $i < 3; $i++) { $enchantmentList->setSlot($i, new EnchantmentEntry([Enchantment::getEnchantment(mt_rand(0, 24))], 1, "Test")); } $pk = new CraftingDataPacket(); $pk->entries = [$enchantmentList]; foreach ($this->getInventory()->getViewers() as $player) { $windowId = $player->getWindowId($this->getInventory()); if ($windowId > 0) { $player->dataPacket($pk); } } } } return true; }