*/ final class ValueFromIntProperty implements Property{ /** * @phpstan-param StateMap $map * @phpstan-param \Closure(TBlock) : TValue $getter * @phpstan-param \Closure(TBlock, TValue) : mixed $setter */ public function __construct( private string $name, private StateMap $map, private \Closure $getter, private \Closure $setter ){} public function getName() : string{ return $this->name; } /** * @return int[] * @phpstan-return list */ public function getPossibleValues() : array{ return array_keys($this->map->getRawToValueMap()); } public function deserialize(object $block, BlockStateReader $in) : void{ $raw = $in->readInt($this->name); $value = $this->map->rawToValue($raw); if($value === null){ throw $in->badValueException($this->name, (string) $raw); } ($this->setter)($block, $value); } public function serialize(object $block, BlockStateWriter $out) : void{ $value = ($this->getter)($block); $raw = $this->map->valueToRaw($value); $out->writeInt($this->name, $raw); } }