ItemBlock: reference blocks directly (take 2)

This was first attempted in f64dc01bd1, but reverted, since I hadn't considered how to handle stripping state data from blocks.

This removes the abusable API RuntimeBlockStateRegistry::fromTypeId() and related methods. These were only used to allow ItemBlocks to magically start referencing other blocks if the blocks were overridden by a plugin, but this was never a well-supported use-case anyway.

Instead of relying on RuntimeBlockStateRegistry, we remember the state that the block had during its constructor, and use that to normalize the non-item properties for asItem().

closes #5609
This commit is contained in:
Dylan K. Taylor
2023-04-13 12:44:47 +01:00
parent 1c626baf1a
commit 874fdf5adb
18 changed files with 57 additions and 83 deletions

View File

@ -37,8 +37,8 @@ class Slab extends Transparent{
protected SlabType $slabType;
public function __construct(BlockIdentifier $idInfo, string $name, BlockTypeInfo $typeInfo){
parent::__construct($idInfo, $name . " Slab", $typeInfo);
$this->slabType = SlabType::BOTTOM();
parent::__construct($idInfo, $name . " Slab", $typeInfo);
}
protected function describeState(RuntimeDataDescriber $w) : void{