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);