BlockStateData: introduce and use current()

This commit is contained in:
Dylan K. Taylor 2023-02-02 16:21:50 +00:00
parent 6b7a4e2c41
commit da5302ca86
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
6 changed files with 13 additions and 5 deletions

View File

@ -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;
}

View File

@ -58,6 +58,14 @@ final class BlockStateData{
private int $version
){}
/**
* @param Tag[] $states
* @phpstan-param array<string, Tag> $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; }
/**

View File

@ -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);
}
}

View File

@ -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

View File

@ -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");

View File

@ -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, []);
}
}