37    public const TAG_PATTERNS = TileBanner::TAG_PATTERNS;
 
   38    public const TAG_PATTERN_COLOR = TileBanner::TAG_PATTERN_COLOR;
 
   39    public const TAG_PATTERN_NAME = TileBanner::TAG_PATTERN_NAME;
 
   41    private DyeColor $color = DyeColor::BLACK;
 
   47    private array $patterns = [];
 
   49    public function getColor() : DyeColor{
 
   54    public function setColor(DyeColor $color) : self{
 
   55        $this->color = $color;
 
 
   60        $w->enum($this->color);
 
 
   68        return $this->patterns;
 
 
   79        $this->patterns = $patterns;
 
 
   88        parent::deserializeCompoundTag($tag);
 
   92        $colorIdMap = DyeColorIdMap::getInstance();
 
   93        $patternIdMap = BannerPatternTypeIdMap::getInstance();
 
   94        $patterns = $tag->
getListTag(self::TAG_PATTERNS, CompoundTag::class);
 
   95        if($patterns !== 
null){
 
   96            foreach($patterns as $t){
 
   97                $patternColor = $colorIdMap->fromInvertedId($t->getInt(self::TAG_PATTERN_COLOR)) ?? DyeColor::BLACK; 
 
   98                $patternType = $patternIdMap->fromId($t->getString(self::TAG_PATTERN_NAME));
 
   99                if($patternType === 
null){
 
 
  107    protected function serializeCompoundTag(CompoundTag $tag) : void{
 
  108        parent::serializeCompoundTag($tag);
 
  110        if(count($this->patterns) > 0){
 
  111            $patterns = 
new ListTag();
 
  112            $colorIdMap = DyeColorIdMap::getInstance();
 
  113            $patternIdMap = BannerPatternTypeIdMap::getInstance();
 
  114            foreach($this->patterns as $pattern){
 
  115                $patterns->push(CompoundTag::create()
 
  116                    ->setString(self::TAG_PATTERN_NAME, $patternIdMap->toId($pattern->getType()))
 
  117                    ->setInt(self::TAG_PATTERN_COLOR, $colorIdMap->toInvertedId($pattern->getColor()))
 
  121            $tag->setTag(self::TAG_PATTERNS, $patterns);
 
  123            $tag->removeTag(self::TAG_PATTERNS);