Доброго времени суток. Довольно таки долго промучал данную задачу. В конце концов с 28й попытки решил данную задачу, подсмотрев в разделе помощи, можно сказать, почти не отличающуюся логику! Но суть не в этом, у меня остались вопросы, почему мой переписанный несколько раз и рабочий код для этой задачи не принимал валидатор!? А именно не принимал последний пункт - "Метод openTile(int, int) не должен ничего выводить, если элемент не является миной и количество соседей мин равно нулю. Используй пустую строку." Вот один из последних моих вариантов (уже обросший монстр), который я пытался безуспешно скормить валидатору, уже отчаянно переставляя в разные линии метод setCellValue(x, y, "")
private void openTile(int x, int y)//отрисовывает мины и количество соседей-мин при клике
{
    gameField[y][x].isOpen = true;//указываем что ячейка открыта
    setCellColor(x, y, Color.GREEN);//заддаем цвет
    if (gameField[y][x].isMine) {
        setCellValue(x, y, MINE);
        setCellColor(x, y, Color.RED);//заддаем цвет
    }//если мина то отрисовываем мины в ячейке
    if (!gameField[y][x].isMine && gameField[y][x].countMineNeighbors > 0)//не является миной и количество соседей мин больше нуля
    {
        setCellNumber(x, y, gameField[y][x].countMineNeighbors);//пишем количество мин соседей
    }
    if (!gameField[y][x].isMine && gameField[y][x].countMineNeighbors == 0) {//не является миной и количество соседей-мин равно нулю
        setCellValue(x, y, "");//убираем нолик оставляем пустоту
        List<GameObject> temp = getNeighbors(gameField[y][x]);//временный список соседей
        List<GameObject> tempNoOpen = new ArrayList<>();//временный список не открытых соседей
        for (GameObject aTemp : temp) {//пеербор списка соседейсоседей
            {
                if (!aTemp.isOpen) {//если ячейка не открыта
                    tempNoOpen.add(gameField[aTemp.y][aTemp.x]);//список не открытых соседей
                }
            }
        }
        for (GameObject aTemp : tempNoOpen)//перебор списка не открытых
        {
            openTile(aTemp.x, aTemp.y);//рекурсия!!!
        }
    }
}
Буду очень рад помощи в разборе полета!