diff --git a/src/block/BaseBanner.php b/src/block/BaseBanner.php index e89e1b7b9..9c09012c9 100644 --- a/src/block/BaseBanner.php +++ b/src/block/BaseBanner.php @@ -24,7 +24,7 @@ declare(strict_types=1); namespace pocketmine\block; use pocketmine\block\tile\Banner as TileBanner; -use pocketmine\block\utils\BannerPattern; +use pocketmine\block\utils\BannerPatternLayer; use pocketmine\block\utils\DyeColor; use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\item\Banner as ItemBanner; @@ -44,8 +44,8 @@ abstract class BaseBanner extends Transparent{ protected $baseColor; /** - * @var BannerPattern[] - * @phpstan-var list + * @var BannerPatternLayer[] + * @phpstan-var list */ protected $patterns = []; @@ -83,22 +83,23 @@ abstract class BaseBanner extends Transparent{ } /** - * @return BannerPattern[] - * @phpstan-return list + * @return BannerPatternLayer[] + * @phpstan-return list */ public function getPatterns() : array{ return $this->patterns; } /** - * @param BannerPattern[] $patterns - * @phpstan-param list $patterns + * @param BannerPatternLayer[] $patterns + * + * @phpstan-param list $patterns * @return $this */ public function setPatterns(array $patterns) : self{ - $checked = array_filter($patterns, fn($v) => $v instanceof BannerPattern); + $checked = array_filter($patterns, fn($v) => $v instanceof BannerPatternLayer); if(count($checked) !== count($patterns)){ - throw new \TypeError("Deque must only contain " . BannerPattern::class . " objects"); + throw new \TypeError("Deque must only contain " . BannerPatternLayer::class . " objects"); } $this->patterns = $checked; return $this; diff --git a/src/block/tile/Banner.php b/src/block/tile/Banner.php index 5256dd70d..9fa6b158c 100644 --- a/src/block/tile/Banner.php +++ b/src/block/tile/Banner.php @@ -23,7 +23,8 @@ declare(strict_types=1); namespace pocketmine\block\tile; -use pocketmine\block\utils\BannerPattern; +use pocketmine\block\utils\BannerPatternLayer; +use pocketmine\block\utils\BannerPatternType; use pocketmine\block\utils\DyeColor; use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\math\Vector3; @@ -47,8 +48,8 @@ class Banner extends Spawnable{ private $baseColor; /** - * @var BannerPattern[] - * @phpstan-var list + * @var BannerPatternLayer[] + * @phpstan-var list */ private $patterns = []; @@ -67,7 +68,7 @@ class Banner extends Spawnable{ 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))); + $this->patterns[] = new BannerPatternLayer(BannerPatternType::fromString($pattern->getString(self::TAG_PATTERN_NAME)), $colorIdMap->fromInvertedId($pattern->getInt(self::TAG_PATTERN_COLOR))); } } } @@ -78,7 +79,7 @@ class Banner extends Spawnable{ $patterns = new ListTag(); foreach($this->patterns as $pattern){ $patterns->push(CompoundTag::create() - ->setString(self::TAG_PATTERN_NAME, $pattern->getId()) + ->setString(self::TAG_PATTERN_NAME, $pattern->getType()->getPatternId()) ->setInt(self::TAG_PATTERN_COLOR, $colorIdMap->toInvertedId($pattern->getColor())) ); } @@ -91,7 +92,7 @@ class Banner extends Spawnable{ $patterns = new ListTag(); foreach($this->patterns as $pattern){ $patterns->push(CompoundTag::create() - ->setString(self::TAG_PATTERN_NAME, $pattern->getId()) + ->setString(self::TAG_PATTERN_NAME, $pattern->getType()->getPatternId()) ->setInt(self::TAG_PATTERN_COLOR, $colorIdMap->toInvertedId($pattern->getColor())) ); } @@ -113,16 +114,17 @@ class Banner extends Spawnable{ } /** - * @return BannerPattern[] - * @phpstan-return list + * @return BannerPatternLayer[] + * @phpstan-return list */ public function getPatterns() : array{ return $this->patterns; } /** - * @param BannerPattern[] $patterns - * @phpstan-param list $patterns + * @param BannerPatternLayer[] $patterns + * + * @phpstan-param list $patterns */ public function setPatterns(array $patterns) : void{ $this->patterns = $patterns; diff --git a/src/block/utils/BannerPattern.php b/src/block/utils/BannerPattern.php deleted file mode 100644 index f53cefbdc..000000000 --- a/src/block/utils/BannerPattern.php +++ /dev/null @@ -1,89 +0,0 @@ -id = $id; - $this->color = $color; - } - - public function getId() : string{ - return $this->id; - } - - public function getColor() : DyeColor{ - return $this->color; - } -} diff --git a/src/block/utils/BannerPatternLayer.php b/src/block/utils/BannerPatternLayer.php new file mode 100644 index 000000000..8095102fc --- /dev/null +++ b/src/block/utils/BannerPatternLayer.php @@ -0,0 +1,47 @@ +type = $type; + $this->color = $color; + } + + public function getType() : BannerPatternType{ return $this->type; } + + public function getColor() : DyeColor{ + return $this->color; + } +} diff --git a/src/block/utils/BannerPatternType.php b/src/block/utils/BannerPatternType.php new file mode 100644 index 000000000..e7b7b99a9 --- /dev/null +++ b/src/block/utils/BannerPatternType.php @@ -0,0 +1,128 @@ +Enum___construct($name); + $this->patternId = $patternId; + } + + public function getPatternId() : string{ return $this->patternId; } +} diff --git a/src/item/Banner.php b/src/item/Banner.php index d3c440bee..36f81801b 100644 --- a/src/item/Banner.php +++ b/src/item/Banner.php @@ -25,7 +25,8 @@ namespace pocketmine\item; use pocketmine\block\Block; use pocketmine\block\tile\Banner as TileBanner; -use pocketmine\block\utils\BannerPattern; +use pocketmine\block\utils\BannerPatternLayer; +use pocketmine\block\utils\BannerPatternType; use pocketmine\block\utils\DyeColor; use pocketmine\data\bedrock\DyeColorIdMap; use pocketmine\nbt\tag\CompoundTag; @@ -41,8 +42,8 @@ class Banner extends ItemBlockWallOrFloor{ private $color; /** - * @var BannerPattern[] - * @phpstan-var list + * @var BannerPatternLayer[] + * @phpstan-var list */ private $patterns = []; @@ -70,16 +71,17 @@ class Banner extends ItemBlockWallOrFloor{ } /** - * @return BannerPattern[] - * @phpstan-return list + * @return BannerPatternLayer[] + * @phpstan-return list */ public function getPatterns() : array{ return $this->patterns; } /** - * @param BannerPattern[] $patterns - * @phpstan-param list $patterns + * @param BannerPatternLayer[] $patterns + * + * @phpstan-param list $patterns * * @return $this */ @@ -102,7 +104,7 @@ class Banner extends ItemBlockWallOrFloor{ if($patterns !== null){ /** @var CompoundTag $t */ foreach($patterns as $t){ - $this->patterns[] = new BannerPattern($t->getString(self::TAG_PATTERN_NAME), $colorIdMap->fromInvertedId($t->getInt(self::TAG_PATTERN_COLOR))); + $this->patterns[] = new BannerPatternLayer(BannerPatternType::fromString($t->getString(self::TAG_PATTERN_NAME)), $colorIdMap->fromInvertedId($t->getInt(self::TAG_PATTERN_COLOR))); } } } @@ -115,7 +117,7 @@ class Banner extends ItemBlockWallOrFloor{ $colorIdMap = DyeColorIdMap::getInstance(); foreach($this->patterns as $pattern){ $patterns->push(CompoundTag::create() - ->setString(self::TAG_PATTERN_NAME, $pattern->getId()) + ->setString(self::TAG_PATTERN_NAME, $pattern->getType()->getPatternId()) ->setInt(self::TAG_PATTERN_COLOR, $colorIdMap->toInvertedId($pattern->getColor())) ); }