From ef53676a596dd581efa1792e7252bdc43214ffb3 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Sun, 24 Aug 2025 15:38:07 +0100 Subject: [PATCH] Fix unit tests --- src/block/BaseOminousBanner.php | 5 +++++ .../bedrock/item/ItemSerializerDeserializerRegistrar.php | 2 +- tests/phpunit/block/block_factory_consistency_check.json | 4 ++++ .../block/convert/BlockSerializerDeserializerTest.php | 9 +++++++-- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/block/BaseOminousBanner.php b/src/block/BaseOminousBanner.php index ef2ef9c9a..192e6fac2 100644 --- a/src/block/BaseOminousBanner.php +++ b/src/block/BaseOminousBanner.php @@ -27,6 +27,7 @@ use pocketmine\block\tile\Banner as TileBanner; use pocketmine\block\utils\DyeColor; use pocketmine\block\utils\SupportType; use pocketmine\item\Item; +use pocketmine\item\VanillaItems; use pocketmine\math\Vector3; use pocketmine\player\Player; use pocketmine\world\BlockTransaction; @@ -82,4 +83,8 @@ abstract class BaseOminousBanner extends Transparent{ $this->position->getWorld()->useBreakOn($this->position); } } + + public function asItem() : Item{ + return VanillaItems::OMINOUS_BANNER(); + } } diff --git a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php index f176351b7..fa6f88483 100644 --- a/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php +++ b/src/data/bedrock/item/ItemSerializerDeserializerRegistrar.php @@ -546,7 +546,7 @@ final class ItemSerializerDeserializerRegistrar{ $this->serializer?->map(Items::DYE(), fn(Dye $item) => new Data(DyeColorIdMap::getInstance()->toItemId($item->getColor()))); $this->deserializer?->map(Ids::BANNER, function(Data $data) : Item{ - $type = $data->getTag()?->getInt(TileBanner::TAG_TYPE) ?? TileBanner::TYPE_NORMAL; + $type = $data->getTag()?->getInt(TileBanner::TAG_TYPE, TileBanner::TYPE_NORMAL) ?? TileBanner::TYPE_NORMAL; if($type === TileBanner::TYPE_OMINOUS){ return Items::OMINOUS_BANNER(); } diff --git a/tests/phpunit/block/block_factory_consistency_check.json b/tests/phpunit/block/block_factory_consistency_check.json index c7629656d..86a44113f 100644 --- a/tests/phpunit/block/block_factory_consistency_check.json +++ b/tests/phpunit/block/block_factory_consistency_check.json @@ -508,6 +508,8 @@ "OAK_WALL_SIGN": 4, "OAK_WOOD": 6, "OBSIDIAN": 1, + "OMINOUS_BANNER": 16, + "OMINOUS_WALL_BANNER": 4, "ORANGE_TULIP": 1, "OXEYE_DAISY": 1, "PACKED_ICE": 1, @@ -776,6 +778,8 @@ "NOTE_BLOCK": "pocketmine\\block\\tile\\Note", "OAK_SIGN": "pocketmine\\block\\tile\\Sign", "OAK_WALL_SIGN": "pocketmine\\block\\tile\\Sign", + "OMINOUS_BANNER": "pocketmine\\block\\tile\\Banner", + "OMINOUS_WALL_BANNER": "pocketmine\\block\\tile\\Banner", "PALE_OAK_SIGN": "pocketmine\\block\\tile\\Sign", "PALE_OAK_WALL_SIGN": "pocketmine\\block\\tile\\Sign", "POTION_CAULDRON": "pocketmine\\block\\tile\\Cauldron", diff --git a/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php b/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php index 674ae8152..c0f850027 100644 --- a/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php +++ b/tests/phpunit/data/bedrock/block/convert/BlockSerializerDeserializerTest.php @@ -59,8 +59,13 @@ final class BlockSerializerDeserializerTest extends TestCase{ self::fail("Failed to deserialize " . $blockStateData->getName() . ": " . $e->getMessage() . " with data " . $blockStateData->toNbt()); } - if($block->getTypeId() === BlockTypeIds::POTION_CAULDRON){ - //this pretends to be a water cauldron in the blockstate, and stores its actual data in the blockentity + if(match ($block->getTypeId()) { + BlockTypeIds::POTION_CAULDRON, + BlockTypeIds::OMINOUS_BANNER, + BlockTypeIds::OMINOUS_WALL_BANNER => true, + default => false + }){ + //these pretend to be something else in the blockstate, and the variant switching is done via block entity data continue; }