예제 #1
0
  public boolean a(IBlockAccess iblockaccess, int i, int j, int k, int l) {
    if (!this.a) return false;
    if (iblockaccess.getData(i, j, k) == 0) return false;
    if (l == 1) {
      return true;
    }
    boolean flag =
        (f(iblockaccess, i - 1, j, k, 1))
            || ((!iblockaccess.s(i - 1, j, k)) && (f(iblockaccess, i - 1, j - 1, k, -1)));
    boolean flag1 =
        (f(iblockaccess, i + 1, j, k, 3))
            || ((!iblockaccess.s(i + 1, j, k)) && (f(iblockaccess, i + 1, j - 1, k, -1)));
    boolean flag2 =
        (f(iblockaccess, i, j, k - 1, 2))
            || ((!iblockaccess.s(i, j, k - 1)) && (f(iblockaccess, i, j - 1, k - 1, -1)));
    boolean flag3 =
        (f(iblockaccess, i, j, k + 1, 0))
            || ((!iblockaccess.s(i, j, k + 1)) && (f(iblockaccess, i, j - 1, k + 1, -1)));

    if (!iblockaccess.s(i, j + 1, k)) {
      if ((iblockaccess.s(i - 1, j, k)) && (f(iblockaccess, i - 1, j + 1, k, -1))) {
        flag = true;
      }

      if ((iblockaccess.s(i + 1, j, k)) && (f(iblockaccess, i + 1, j + 1, k, -1))) {
        flag1 = true;
      }

      if ((iblockaccess.s(i, j, k - 1)) && (f(iblockaccess, i, j + 1, k - 1, -1))) {
        flag2 = true;
      }

      if ((iblockaccess.s(i, j, k + 1)) && (f(iblockaccess, i, j + 1, k + 1, -1))) {
        flag3 = true;
      }
    }

    return (!flag2) && (!flag1) && (!flag) && (!flag3) && (l >= 2) && (l <= 5);
  }