22declare(strict_types=1);
 
   24namespace pocketmine\data\bedrock\block\convert;
 
   26use pocketmine\block\utils\BellAttachmentType;
 
   27use pocketmine\block\utils\SlabType;
 
   28use pocketmine\block\utils\WallConnectionType;
 
   51    private array $states = [];
 
   53    public function __construct(
 
   57    public static function create(
string $id) : 
self{
 
   62    public function writeBool(
string $name, 
bool $value) : self{
 
   63        $this->states[$name] = new 
ByteTag($value ? 1 : 0);
 
 
   68    public function writeInt(
string $name, 
int $value) : self{
 
   69        $this->states[$name] = new 
IntTag($value);
 
 
   74    public function writeString(
string $name, 
string $value) : self{
 
   75        $this->states[$name] = new 
StringTag($value);
 
 
   85        $raw = $map->valueToRaw($value);
 
   86        $this->writeString($name, $raw);
 
 
   96        $raw = $map->valueToRaw($value);
 
   97        $this->writeInt($name, $raw);
 
 
  126        foreach($faces as $face){
 
  127            $result |= match($face){
 
  128                Facing::DOWN => BlockLegacyMetadata::MULTI_FACE_DIRECTION_FLAG_DOWN,
 
  129                Facing::UP => BlockLegacyMetadata::MULTI_FACE_DIRECTION_FLAG_UP,
 
  130                Facing::NORTH => BlockLegacyMetadata::MULTI_FACE_DIRECTION_FLAG_NORTH,
 
  131                Facing::SOUTH => BlockLegacyMetadata::MULTI_FACE_DIRECTION_FLAG_SOUTH,
 
  132                Facing::WEST => BlockLegacyMetadata::MULTI_FACE_DIRECTION_FLAG_WEST,
 
  133                Facing::EAST => BlockLegacyMetadata::MULTI_FACE_DIRECTION_FLAG_EAST,
 
  138        return $this->writeInt(BlockStateNames::MULTI_FACE_DIRECTION_BITS, $result);
 
 
  147        return $this->writeFacingDirection(
Facing::axis($value) !== 
Axis::Y ? 
Facing::opposite($value) : $value);
 
 
  205        if($value === 
Facing::DOWN){
 
  208        $this->writeFacingDirection($value);
 
 
  217        if($value === 
Facing::UP){
 
  220        $this->writeFacingDirection($value);
 
 
  238        $this->writeString(
BlockStateNames::MC_VERTICAL_HALF, match($slabType){
 
  239            SlabType::TOP => StringValues::MC_VERTICAL_HALF_TOP,
 
  240            SlabType::BOTTOM => StringValues::MC_VERTICAL_HALF_BOTTOM,
 
 
  268        $this->writeString($name, match($wallConnectionType){
 
  269            null => StringValues::WALL_CONNECTION_TYPE_EAST_NONE,
 
  270            WallConnectionType::SHORT => StringValues::WALL_CONNECTION_TYPE_EAST_SHORT,
 
  271            WallConnectionType::TALL => StringValues::WALL_CONNECTION_TYPE_EAST_TALL,
 
 
  285        $value = $map->valueToRaw($case);
 
  286        $this->writeString($name, $value);
 
 
 
writeCoralFacing(int $value)
 
writeLegacyHorizontalFacing(int $value)
 
writeFacingDirection(int $value)
 
writeUnitEnum(string $name, EnumFromRawStateMap $map, \UnitEnum $case)
 
writeSlabPosition(SlabType $slabType)
 
writeFacingFlags(array $faces)
 
writeEndRodFacingDirection(int $value)
 
writeCardinalHorizontalFacing(int $value)
 
mapIntToInt(string $name, IntFromRawStateMap $map, int $value)
 
writeWeirdoHorizontalFacing(int $value)
 
writeBellAttachmentType(BellAttachmentType $attachmentType)
 
write5MinusHorizontalFacing(int $value)
 
writeTorchFacing(int $facing)
 
mapIntToString(string $name, IntFromRawStateMap $map, int $value)
 
writeWallConnectionType(string $name, ?WallConnectionType $wallConnectionType)
 
writeFacingWithoutDown(int $value)
 
writeFacingWithoutUp(int $value)
 
writeHorizontalFacing(int $value)
 
writeBlockFace(int $value)
 
writePillarAxis(int $axis)
 
writeString(string $name, string $value)
 
writeBool(string $name, bool $value)
 
writeInt(string $name, int $value)