/** * 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); }
/** * @dataProvider providerTestTagList */ public function testTagListReturnsListType($name, $type, $data) { $tag = Tag::tagList($name, $type, $data); $this->assertEquals($tag->getType(), Tag::TAG_LIST); }