40 public const TAG_BASE =
"Base";
41 public const TAG_PATTERNS =
"Patterns";
42 public const TAG_PATTERN_COLOR =
"Color";
43 public const TAG_PATTERN_NAME =
"Pattern";
44 public const TAG_TYPE =
"Type";
46 public const TYPE_NORMAL = 0;
47 public const TYPE_OMINOUS = 1;
49 private DyeColor $baseColor = DyeColor::BLACK;
55 private array $patterns = [];
57 private int $type = self::TYPE_NORMAL;
59 public function readSaveData(
CompoundTag $nbt) :
void{
60 $colorIdMap = DyeColorIdMap::getInstance();
62 ($baseColorTag = $nbt->
getTag(self::TAG_BASE)) instanceof
IntTag &&
63 ($baseColor = $colorIdMap->fromInvertedId($baseColorTag->getValue())) !==
null
65 $this->baseColor = $baseColor;
67 $this->baseColor = DyeColor::BLACK;
70 $patternTypeIdMap = BannerPatternTypeIdMap::getInstance();
72 $patterns = $nbt->
getListTag(self::TAG_PATTERNS, CompoundTag::class);
73 if($patterns !==
null){
74 foreach($patterns as $pattern){
75 $patternColor = $colorIdMap->fromInvertedId($pattern->getInt(self::TAG_PATTERN_COLOR)) ?? DyeColor::BLACK;
76 $patternType = $patternTypeIdMap->fromId($pattern->getString(self::TAG_PATTERN_NAME));
77 if($patternType ===
null){
84 $this->type = $nbt->getInt(self::TAG_TYPE, self::TYPE_NORMAL);
89 $patternIdMap = BannerPatternTypeIdMap::getInstance();
90 $nbt->
setInt(self::TAG_BASE, $colorIdMap->toInvertedId($this->baseColor));
92 foreach($this->patterns as $pattern){
94 ->setString(self::TAG_PATTERN_NAME, $patternIdMap->toId($pattern->getType()))
95 ->setInt(self::TAG_PATTERN_COLOR, $colorIdMap->toInvertedId($pattern->getColor()))
98 $nbt->
setTag(self::TAG_PATTERNS, $patterns);
99 $nbt->
setInt(self::TAG_TYPE, $this->type);
104 $patternIdMap = BannerPatternTypeIdMap::getInstance();
105 $nbt->
setInt(self::TAG_BASE, $colorIdMap->toInvertedId($this->baseColor));
107 foreach($this->patterns as $pattern){
109 ->setString(self::TAG_PATTERN_NAME, $patternIdMap->toId($pattern->getType()))
110 ->setInt(self::TAG_PATTERN_COLOR, $colorIdMap->toInvertedId($pattern->getColor()))
113 $nbt->
setTag(self::TAG_PATTERNS, $patterns);
114 $nbt->
setInt(self::TAG_TYPE, $this->type);
121 return $this->baseColor;
128 $this->baseColor = $color;
136 return $this->patterns;
145 $this->patterns = $patterns;
148 public function getType() : int{ return $this->type; }
150 public function setType(
int $type) : void{ $this->type = $type; }
152 public function getDefaultName() : string{