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); }