Для версии 1.16.5 синтаксис NBT-тегов в командах немного отличается, так как в старых версиях использовалась другая структура данных.
Вот рабочие решения для вашей версии. Разместите Цикличный (фиолетовый) командный блок, установите его в режим Всегда активен (Always Active) и вставьте одну из команд ниже.
## Вариант 1. Открывает ТОЛЬКО рецепты из Farmer's Delight (Рекомендуемый)
Эта команда откроет игроку все блюда, напитки, ножи и разделочные доски из мода, не трогая рецепты ванильной игры:
execute as @a[nbt={SelectedItem:{id:"minecraft:written_book",tag:{display:{Name:'{"text":"Книга рецептов"}'}}}}] run recipe give @s farmersdelight:*
## Вариант 2. Открывает абсолютно ВСЕ рецепты в игре
Если вы хотите, чтобы открылись вообще все рецепты (и мода, и ванильного Minecraft):
execute as @a[nbt={SelectedItem:{id:"minecraft:written_book",tag:{display:{Name:'{"text":"Книга рецептов"}'}}}}] run recipe give @s *
------------------------------
## Как это правильно настроить в 1.16.5:
1. Тип предмета: В командах выше указана подписанная книга (written_book). Вы можете переименовать её на наковальне в Книга рецептов (точно как в кавычках, с большой буквы).
2. Если хотите использовать обычную книгу: Если вместо подписанной книги вы хотите использовать обычную (пустую), замените в команде id:"minecraft:written_book" на id:"minecraft:book".
3. Бесконечный спам: Так как блок цикличный, команда будет срабатывать каждый тик (20 раз в секунду), пока книга в руке. В чате у игрока может спамить надпись «Рецепт уже изучен». Чтобы этого избежать, введите в чат команду:
/gamerule commandBlockOutput false
Если вы хотите развить эту идею, дайте знать:
* Нужно ли сделать так, чтобы книга исчезала из руки сразу после того, как выдала рецепты?
* Хотите ли вы получить готовую команду /give, чтобы выдать игроку уже красиво оформленную книгу с цветным названием и описанием?
* Интересует ли вас способ сделать это через прогресс (advancement) в датапаке, чтобы сервер вообще не лагал от цикличе
ских командных блоков?
Ну крч попробуй это