diff --git a/src/crafting/CraftingManagerFromDataHelper.php b/src/crafting/CraftingManagerFromDataHelper.php index 8e0bb8e04..228e3623a 100644 --- a/src/crafting/CraftingManagerFromDataHelper.php +++ b/src/crafting/CraftingManagerFromDataHelper.php @@ -117,7 +117,7 @@ final class CraftingManagerFromDataHelper{ ->read(ErrorToExceptionHandler::trapAndRemoveFalse(fn() => base64_decode($blockStatesRaw, true))) ->mustGetCompoundTag() ->getValue(); - $blockStateData = new BlockStateData($blockName, $blockStatesTag, BlockStateData::CURRENT_VERSION); + $blockStateData = BlockStateData::current($blockName, $blockStatesTag); }else{ $blockStateData = null; } diff --git a/src/data/bedrock/block/BlockStateData.php b/src/data/bedrock/block/BlockStateData.php index be0048c6d..6ac0184f7 100644 --- a/src/data/bedrock/block/BlockStateData.php +++ b/src/data/bedrock/block/BlockStateData.php @@ -58,6 +58,14 @@ final class BlockStateData{ private int $version ){} + /** + * @param Tag[] $states + * @phpstan-param array $states + */ + public static function current(string $name, array $states) : self{ + return new self($name, $states, self::CURRENT_VERSION); + } + public function getName() : string{ return $this->name; } /** diff --git a/src/data/bedrock/block/convert/BlockStateWriter.php b/src/data/bedrock/block/convert/BlockStateWriter.php index db305bb3d..eefd2ec69 100644 --- a/src/data/bedrock/block/convert/BlockStateWriter.php +++ b/src/data/bedrock/block/convert/BlockStateWriter.php @@ -281,6 +281,6 @@ final class BlockStateWriter{ } public function getBlockStateData() : BlockStateData{ - return new BlockStateData($this->id, $this->states, BlockStateData::CURRENT_VERSION); + return BlockStateData::current($this->id, $this->states); } } diff --git a/src/data/bedrock/block/upgrade/BlockDataUpgrader.php b/src/data/bedrock/block/upgrade/BlockDataUpgrader.php index e27469ac2..ad73cc98a 100644 --- a/src/data/bedrock/block/upgrade/BlockDataUpgrader.php +++ b/src/data/bedrock/block/upgrade/BlockDataUpgrader.php @@ -51,7 +51,7 @@ final class BlockDataUpgrader{ $blockStateData = $this->upgradeStringIdMeta($id, $data); if($blockStateData === null){ //unknown block, invalid ID - $blockStateData = new BlockStateData(BlockTypeNames::INFO_UPDATE, [], BlockStateData::CURRENT_VERSION); + $blockStateData = BlockStateData::current(BlockTypeNames::INFO_UPDATE, []); } }else{ //Modern (post-1.13) blockstate diff --git a/src/network/mcpe/convert/RuntimeBlockMapping.php b/src/network/mcpe/convert/RuntimeBlockMapping.php index f4d57924b..a379cd659 100644 --- a/src/network/mcpe/convert/RuntimeBlockMapping.php +++ b/src/network/mcpe/convert/RuntimeBlockMapping.php @@ -63,7 +63,7 @@ final class RuntimeBlockMapping{ private BlockStateSerializer $blockStateSerializer ){ $this->fallbackStateId = $this->blockStateDictionary->lookupStateIdFromData( - new BlockStateData(BlockTypeNames::INFO_UPDATE, [], BlockStateData::CURRENT_VERSION) + BlockStateData::current(BlockTypeNames::INFO_UPDATE, []) ) ?? throw new AssumptionFailedError(BlockTypeNames::INFO_UPDATE . " should always exist"); //lookup the state data from the dictionary to avoid keeping two copies of the same data around $this->fallbackStateData = $this->blockStateDictionary->getDataFromStateId($this->fallbackStateId) ?? throw new AssumptionFailedError("We just looked up this state data, so it must exist"); diff --git a/src/world/format/io/GlobalBlockStateHandlers.php b/src/world/format/io/GlobalBlockStateHandlers.php index bd983dea8..1d7476acd 100644 --- a/src/world/format/io/GlobalBlockStateHandlers.php +++ b/src/world/format/io/GlobalBlockStateHandlers.php @@ -84,6 +84,6 @@ final class GlobalBlockStateHandlers{ } public static function getUnknownBlockStateData() : BlockStateData{ - return self::$unknownBlockStateData ??= new BlockStateData(BlockTypeNames::INFO_UPDATE, [], BlockStateData::CURRENT_VERSION); + return self::$unknownBlockStateData ??= BlockStateData::current(BlockTypeNames::INFO_UPDATE, []); } }