/**
  * Add a list of item stacks to the 'Items' list tag.
  *
  * @param \MME\Stack[] $items
  */
 protected function addItemStacks($items)
 {
     if (count($items)) {
         $payload = \Nbt\Tag::TAG_COMPOUND;
     } else {
         $payload = \Nbt\Tag::TAG_END;
     }
     $itemsList = \Nbt\Tag::tagList('Items', $payload, []);
     $this->entityData->addChild($itemsList);
     foreach ($items as $item) {
         $itemsList->addChild($item->node);
     }
 }
 /**
  * Set the patterns for the banner.
  *
  * @param array $patterns
  */
 protected function bannerPatterns($patterns)
 {
     if (count($patterns)) {
         // Set up the pattern list
         $patternList = \Nbt\Tag::tagList('Patterns', \Nbt\Tag::TAG_COMPOUND, []);
         $this->entityData->addChild($patternList);
         foreach ($patterns as $pattern) {
             // Check the pattern details are valid
             $this->checkDataRefValidStartsWith($pattern['color'], 'COLOR_', 'Invalid base color for banner pattern');
             $this->checkDataRefValidStartsWith($pattern['pattern'], 'PATTERN_', 'Invalid pattern reference for banner pattern');
             // Add the pattern to the list
             $patternList->addChild(\Nbt\Tag::tagCompound('', [\Nbt\Tag::tagInt('Color', $this->bannerConvertColor($pattern['color'])), \Nbt\Tag::tagString('Pattern', $pattern['pattern'])]));
         }
     }
 }
 /**
  * Set options in the display properties compound tag.
  *
  * @param string $name  Name of the item
  * @param string $lore  List of strings to display as lore for the item
  * @param int    $color Color, for leather armour.
  */
 public function setDisplayProperties($name, $lore = '', $color = null)
 {
     $this->addTag();
     $display = \Nbt\Tag::tagCompound('display', []);
     if ($name) {
         $display->addChild(\Nbt\Tag::tagString('Name', $name));
     }
     if ($lore) {
         $loreTag = \Nbt\Tag::tagList('Lore', \Nbt\Tag::TAG_STRING, []);
         foreach ($lore as $line) {
             $loreTag->addChild(\Nbt\Tag::tagString('', $line));
         }
         $display->addChild($loreTag);
     }
     if ($color) {
         $display->addChild(\Nbt\Tag::tagInt('color', $color));
     }
     $this->tag->addChild($display);
 }
Exemple #4
0
 /**
  * @dataProvider providerTestTagList
  */
 public function testTagListReturnsListType($name, $type, $data)
 {
     $tag = Tag::tagList($name, $type, $data);
     $this->assertEquals($tag->getType(), Tag::TAG_LIST);
 }