pocketmine\block\PoweredRail::connect PHP Метод

connect() публичный Метод

public connect ( Rail $rail, $force = false )
$rail Rail
    public function connect(Rail $rail, $force = false)
    {
        if (!$force) {
            $connected = $this->canConnect($rail);
            if (!is_array($connected)) {
                return false;
            }
            /** @var Vector3 [] $connected */
            $connected[] = $rail;
            switch (count($connected)) {
                case 1:
                    $v3 = $connected[0]->subtract($this);
                    $this->meta = $v3->y != 1 ? $v3->x == 0 ? 0 : 1 : ($v3->z == 0 ? $v3->x / -2 + 2.5 : $v3->z / 2 + 4.5);
                    break;
                case 2:
                    $subtract = [];
                    foreach ($connected as $key => $value) {
                        $subtract[$key] = $value->subtract($this);
                    }
                    if (abs($subtract[0]->x) == abs($subtract[1]->z) and abs($subtract[1]->x) == abs($subtract[0]->z)) {
                        $v3 = $connected[0]->subtract($this)->add($connected[1]->subtract($this));
                        $this->meta = $v3->x == 1 ? $v3->z == 1 ? 6 : 9 : ($v3->z == 1 ? 7 : 8);
                    } elseif ($subtract[0]->y == 1 or $subtract[1]->y == 1) {
                        $v3 = $subtract[0]->y == 1 ? $subtract[0] : $subtract[1];
                        $this->meta = $v3->x == 0 ? $v3->x == -1 ? 4 : 5 : ($v3->x == 1 ? 2 : 3);
                    } else {
                        $this->meta = $subtract[0]->x == 0 ? 0 : 1;
                    }
                    break;
                default:
                    break;
            }
        }
        $this->level->setBlock($this, Block::get($this->id, $this->meta), true, true);
        return true;
    }