Inheritance: extends Flowable
Example #1
0
 public static function check(Rail $rail)
 {
     $array = [[[0, 1], [0, -1]], [[1, 0], [-1, 0]], [[1, 0], [-1, 0]], [[1, 0], [-1, 0]], [[0, 1], [0, -1]], [[0, 1], [0, -1]], [[1, 0], [0, 1]], [[0, 1], [-1, 0]], [[-1, 0], [0, -1]], [[0, -1], [1, 0]]];
     $arrayY = [0, 1, -1];
     $blocks = $array[$rail->getDamage()];
     $connected = [];
     foreach ($arrayY as $y) {
         $v3 = new Vector3($rail->x + $blocks[0][0], $rail->y + $y, $rail->z + $blocks[0][1]);
         $id = $rail->getLevel()->getBlockIdAt($v3->x, $v3->y, $v3->z);
         $meta = $rail->getLevel()->getBlockDataAt($v3->x, $v3->y, $v3->z);
         if (($id == self::RAIL or $id == self::POWERED_RAIL) and in_array([$rail->x - $v3->x, $rail->z - $v3->z], $array[$meta])) {
             $connected[] = $v3;
             break;
         }
     }
     foreach ($arrayY as $y) {
         $v3 = new Vector3($rail->x + $blocks[1][0], $rail->y + $y, $rail->z + $blocks[1][1]);
         $id = $rail->getLevel()->getBlockIdAt($v3->x, $v3->y, $v3->z);
         $meta = $rail->getLevel()->getBlockDataAt($v3->x, $v3->y, $v3->z);
         if (($id == self::RAIL or $id == self::POWERED_RAIL) and in_array([$rail->x - $v3->x, $rail->z - $v3->z], $array[$meta])) {
             $connected[] = $v3;
             break;
         }
     }
     return $connected;
 }