public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null)
{
$down = $block->getSide(Vector3::SIDE_DOWN);
$class = "";
if ($down->isTransparent() === false) {
$up = $block->getSide(Vector3::SIDE_UP);
if ($block->getSide(Vector3::SIDE_EAST) instanceof RailBlock && $block->getSide(Vector3::SIDE_SOUTH) instanceof RailBlock) {
return $this->setDirection(self::SIDE_SOUTH_EAST);
} elseif ($block->getSide(Vector3::SIDE_EAST) instanceof RailBlock && $block->getSide(Vector3::SIDE_NORTH) instanceof RailBlock) {
return $this->setDirection(self::SIDE_NORTH_EAST);
} elseif ($block->getSide(Vector3::SIDE_SOUTH) instanceof RailBlock && $block->getSide(Vector3::SIDE_WEST) instanceof RailBlock) {
return $this->setDirection(self::SIDE_SOUTH_WEST);
} elseif ($block->getSide(Vector3::SIDE_NORTH) instanceof RailBlock && $block->getSide(Vector3::SIDE_WEST) instanceof RailBlock) {
return $this->setDirection(self::SIDE_NORTH_WEST);
} elseif ($block->getSide(Vector3::SIDE_EAST) instanceof RailBlock && $block->getSide(Vector3::SIDE_WEST) instanceof RailBlock) {
if ($up->getSide(Vector3::SIDE_EAST) instanceof RailBlock) {
return $this->setDirection(Vector3::SIDE_EAST, true);
} elseif ($up->getSide(Vector3::SIDE_WEST) instanceof RailBlock) {
return $this->setDirection(Vector3::SIDE_WEST, true);
} else {
return $this->setDirection(Vector3::SIDE_EAST);
}
} elseif ($block->getSide(Vector3::SIDE_SOUTH) instanceof RailBlock && $block->getSide(Vector3::SIDE_NORTH) instanceof RailBlock) {
if ($up->getSide(Vector3::SIDE_SOUTH) instanceof RailBlock) {
return $this->setDirection(Vector3::SIDE_SOUTH, true);
} elseif ($up->getSide(Vector3::SIDE_NORTH) instanceof RailBlock) {
return $this->setDirection(Vector3::SIDE_NORTH, true);
} else {
return $this->setDirection(Vector3::SIDE_SOUTH);
}
} else {
return $this->setDirection(Vector3::SIDE_NORTH);
}
}
return false;
}