facing) === Facing::AXIS_Y){ return $this->facing; } return $this->facing ^ 1; //TODO: in PC this is always the same as facing, just PE is stupid } public function readStateFromMeta(int $meta) : void{ if($meta !== 0 and $meta !== 1){ $meta ^= 1; } $this->facing = BlockDataValidator::readFacing($meta); } public function getStateBitmask() : int{ return 0b111; } public function place(Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, Player $player = null) : bool{ $this->facing = $face; if($blockClicked instanceof EndRod and $blockClicked->facing === $this->facing){ $this->facing = Facing::opposite($face); } return parent::place($item, $blockReplace, $blockClicked, $face, $clickVector, $player); } public function isSolid() : bool{ return true; } public function getLightLevel() : int{ return 14; } protected function recalculateBoundingBox() : ?AxisAlignedBB{ $myAxis = Facing::axis($this->facing); $bb = AxisAlignedBB::one(); foreach([Facing::AXIS_Y, Facing::AXIS_Z, Facing::AXIS_X] as $axis){ if($axis === $myAxis){ continue; } $bb->squash($axis, 6 / 16); } return $bb; } }