*/ private $patterns; public function __construct(World $world, Vector3 $pos){ $this->baseColor = DyeColor::BLACK(); $this->patterns = new Deque(); parent::__construct($world, $pos); } public function readSaveData(CompoundTag $nbt) : void{ $colorIdMap = DyeColorIdMap::getInstance(); if(($baseColorTag = $nbt->getTag(self::TAG_BASE)) instanceof IntTag){ $this->baseColor = $colorIdMap->fromInvertedId($baseColorTag->getValue()); } $patterns = $nbt->getListTag(self::TAG_PATTERNS); if($patterns !== null){ /** @var CompoundTag $pattern */ foreach($patterns as $pattern){ $this->patterns[] = new BannerPattern($pattern->getString(self::TAG_PATTERN_NAME), $colorIdMap->fromInvertedId($pattern->getInt(self::TAG_PATTERN_COLOR))); } } } protected function writeSaveData(CompoundTag $nbt) : void{ $colorIdMap = DyeColorIdMap::getInstance(); $nbt->setInt(self::TAG_BASE, $colorIdMap->toInvertedId($this->baseColor)); $patterns = new ListTag(); foreach($this->patterns as $pattern){ $patterns->push(CompoundTag::create() ->setString(self::TAG_PATTERN_NAME, $pattern->getId()) ->setInt(self::TAG_PATTERN_COLOR, $colorIdMap->toInvertedId($pattern->getColor())) ); } $nbt->setTag(self::TAG_PATTERNS, $patterns); } protected function addAdditionalSpawnData(CompoundTag $nbt) : void{ $colorIdMap = DyeColorIdMap::getInstance(); $nbt->setInt(self::TAG_BASE, $colorIdMap->toInvertedId($this->baseColor)); $patterns = new ListTag(); foreach($this->patterns as $pattern){ $patterns->push(CompoundTag::create() ->setString(self::TAG_PATTERN_NAME, $pattern->getId()) ->setInt(self::TAG_PATTERN_COLOR, $colorIdMap->toInvertedId($pattern->getColor())) ); } $nbt->setTag(self::TAG_PATTERNS, $patterns); } /** * Returns the color of the banner base. */ public function getBaseColor() : DyeColor{ return $this->baseColor; } /** * Sets the color of the banner base. */ public function setBaseColor(DyeColor $color) : void{ $this->baseColor = $color; } /** * @return BannerPattern[]|Deque * @phpstan-return Deque */ public function getPatterns() : Deque{ return $this->patterns; } /** * @param BannerPattern[]|Deque $patterns * @phpstan-param Deque $patterns */ public function setPatterns(Deque $patterns) : void{ $this->patterns = $patterns; } public function getDefaultName() : string{ return "Banner"; } }