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;
 }
예제 #2
0
 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);
 }
예제 #3
0
 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;
 }