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 or $meta === 1){ $this->facing = $meta; }else{ $this->facing = $meta ^ 1; //TODO: see above } } public function getStateBitmask() : int{ return 0b111; } public function getName() : string{ return "End Rod"; } 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{ $m = Facing::axis($this->facing); $width = 0.375; switch($m){ case Facing::AXIS_Y: return new AxisAlignedBB( $width, 0, $width, 1 - $width, 1, 1 - $width ); case Facing::AXIS_Z: return new AxisAlignedBB( 0, $width, $width, 1, 1 - $width, 1 - $width ); case Facing::AXIS_X: return new AxisAlignedBB( $width, $width, 0, 1 - $width, 1 - $width, 1 ); } return null; } }