baseColor = DyeColor::BLACK(); $this->patterns = new Deque(); parent::__construct($world, $pos); } public function readSaveData(CompoundTag $nbt) : void{ if($nbt->hasTag(self::TAG_BASE, IntTag::class)){ $this->baseColor = DyeColor::fromMagicNumber($nbt->getInt(self::TAG_BASE), true); } $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), DyeColor::fromMagicNumber($pattern->getInt(self::TAG_PATTERN_COLOR), true)); } } } protected function writeSaveData(CompoundTag $nbt) : void{ $nbt->setInt(self::TAG_BASE, $this->baseColor->getInvertedMagicNumber()); $patterns = new ListTag(); foreach($this->patterns as $pattern){ $patterns->push(CompoundTag::create() ->setString(self::TAG_PATTERN_NAME, $pattern->getId()) ->setInt(self::TAG_PATTERN_COLOR, $pattern->getColor()->getInvertedMagicNumber()) ); } $nbt->setTag(self::TAG_PATTERNS, $patterns); } protected function addAdditionalSpawnData(CompoundTag $nbt) : void{ $nbt->setInt(self::TAG_BASE, $this->baseColor->getInvertedMagicNumber()); $patterns = new ListTag(); foreach($this->patterns as $pattern){ $patterns->push(CompoundTag::create() ->setString(self::TAG_PATTERN_NAME, $pattern->getId()) ->setInt(self::TAG_PATTERN_COLOR, $pattern->getColor()->getInvertedMagicNumber()) ); } $nbt->setTag(self::TAG_PATTERNS, $patterns); } /** * Returns the color of the banner base. * * @return DyeColor */ public function getBaseColor() : DyeColor{ return $this->baseColor; } /** * Sets the color of the banner base. * * @param DyeColor $color */ public function setBaseColor(DyeColor $color) : void{ $this->baseColor = $color; $this->onChanged(); } /** * @return BannerPattern[]|Deque */ public function getPatterns() : Deque{ return $this->patterns; } /** * @param BannerPattern[]|Deque $patterns */ public function setPatterns(Deque $patterns) : void{ $this->patterns = $patterns; $this->onChanged(); } public function getDefaultName() : string{ return "Banner"; } }