← Все статьи

Почему кастомный рецепт не появляется

Рецепт, который ничего не делает, почти никогда не является ошибочной идеей. Обычно дело в одном из четырёх: в паттерне лишние пустые ряды, формат ингредиентов от другой версии игры, файл лежит не в той папке — или рецепт прекрасно работает, и пуста лишь книга рецептов. Разберём каждый случай.

Открыть генератор рецептов

Рецепт — это файл

Команды, добавляющей рецепт, не существует. Как и loot-таблицы с ачивками, рецепт — это JSON-файл, который мир читает при загрузке, и живёт он по пути data/<пространство>/recipe/<имя>.json внутри датапака. Если это звучит непривычно, статья датапаки против команд объясняет почему, а генератор датапаков соберёт папку.

Обратите внимание: папка называется recipe, в единственном числе, начиная с 1.21. Раньше было recipes, и файл, оставшийся в старой папке, на новой игре не читается вообще.

Лишние ряды — ошибка, которая стоит дороже всего

Рецепт по форме сопоставляется с наименьшим прямоугольником, который его вмещает, и паттерн, который вы написали, и есть этот прямоугольник. Напишете паттерн в три строки там, где рецепт занимает одну, — вы объявили трёхстрочный рецепт.

"pattern": [
  "###",
  "   ",
  "   "
]

Такое не скрафтится в сетке 2×2 в инвентаре, а на верстаке потребует, чтобы три предмета стояли именно в верхнем ряду. Почти наверняка вы хотели вот это:

"pattern": [
  "###"
]

Теперь рецепт сработает везде, где три предмета стоят в ряд. Правило простое: обрезайте все пустые ряды и столбцы по краям. Пробелы внутри формы значимы и должны остаться — дырка в середине кольцевого рецепта осмысленна и намеренна.

По форме или без формы

Бесформенный крафт полностью игнорирует расположение: он берёт плоский список и срабатывает, если эти предметы просто есть в сетке.

{
  "type": "minecraft:crafting_shapeless",
  "ingredients": [
    "minecraft:paper",
    "minecraft:ink_sac"
  ],
  "result": { "id": "minecraft:written_book", "count": 1 }
}

Берите бесформенный, когда расположение не несёт смысла — а это большинство рецептов-комбинаций. По форме имеет смысл там, где форма и есть часть идеи: кирка на сетке должна выглядеть как кирка.

Два изменения формата, ломающие скопированные примеры

JSON рецептов переписывали дважды за короткий срок — поэтому пример из туториала часто не работает без всякой видимой причины.

ВерсияИнгредиентРезультат крафта
до 1.20.5{"item": "minecraft:x"}{"item": ..., "count": n}
1.20.5 – 1.21.1{"item": "minecraft:x"}{"id": ..., "count": n}
1.21.2 и новее"minecraft:x"{"id": ..., "count": n}

Результаты плавки и камнереза тоже переехали: до 1.20.5 это была просто строка с ID, после — объект. Ничего из этого не меняет смысла рецепта, только его написание — а именно такие расхождения мучительнее всего искать глазами.

Один ингредиент — много предметов

Ингредиентом может быть тег предметов, а не конкретный предмет; пишется с # впереди. Так рецепт начинает принимать любое дерево:

"key": {
  "#": "#minecraft:planks"
}

В ванили много полезных тегов — #minecraft:planks, #minecraft:logs, #minecraft:wool — и свои можно определить в data/<пространство>/tags/item/. Перечислять все породы дерева руками тоже работает, но стареет плохо: в следующем обновлении добавят новое дерево, и рецепт тихо перестанет его принимать.

Когда рецепт работает, а книга пуста

Этот случай сбивает с толку, потому что ничего на самом деле не сломано. Кастомный рецепт не показывается в книге рецептов, пока не разблокирован, а разблокировка идёт через ачивку с наградой recipe_unlocked. Ваниль делает это для каждого своего рецепта — поэтому они и появляются по мере сбора материалов.

Пока вы этого не добавили, рецепт всё равно прекрасно крафтится, если игрок выложит его сам. Так что если ваша проверка звучит как «его нет в книге» — попробуйте собрать его руками, прежде чем решить, что файл неверный.

Чек-лист, когда ничего не происходит

  1. Файл лежит в recipe/, в единственном числе, если версия 1.21+?
  2. Есть ли в паттерне пустые крайние ряды или столбцы?
  3. Совпадает ли формат ингредиентов с вашей версией игры?
  4. Сделали ли /reload?
  5. Виден ли пак в /datapack list?

В отличие от loot-таблиц, кривой рецепт обычно всё-таки ругается в логе сервера при перезагрузке — так что этот лог стоит прочитать раньше всего остального.

Куда идти дальше

Генератор рецептов раскладывает рецепт по сетке, сам обрезает паттерн и переписывает формат ингредиентов и результата при смене версии. Дальше генератор loot-таблиц закрывает то, что выпадает из сундуков и мобов, а не то, что кладут в верстак.