Перейти к содержанию

Предметы в датапаке

Датапак- и командная сторона двух предметов InkQuest: квестовой книги (inkquest:quest_book) и свитка квеста (inkquest:quest_scroll). Как переопределить рецепт книги, как собрать свиток на нужный квест и как геймрул doQuestBookItemCheck делает книгу обязательным предметом. Что эти предметы дают игроку и как он ими пользуется — в Предметы.


Идентификаторы

Предмет Идентификатор
Квестовая книга inkquest:quest_book
Свиток квеста inkquest:quest_scroll

Рецепт книги

Книга задаётся обычным датапак-рецептом inkquest:quest_book — shapeless из трёх предметов:

minecraft:book + minecraft:rotten_flesh + minecraft:string

Переопределить или отключить

Датапак переопределяет рецепт, положив свой файл по тому же пути:

data/inkquest/recipes/quest_book.json

Чтобы сменить ингредиенты — опиши свой crafting_shapeless или crafting_shaped.

Чтобы убрать крафт в выживании — оставь единственным ингредиентом minecraft:barrier: его не получить без креатива или команд, поэтому скрафтить книгу станет нельзя. Выдать её командой /give, из сундука или как награду по-прежнему можно — закрыт только верстак.

{
  "type": "minecraft:crafting_shapeless",
  "category": "misc",
  "ingredients": [
    { "item": "minecraft:barrier" }
  ],
  "result": { "item": "inkquest:quest_book", "count": 1 }
}

Свиток на конкретный квест

Свиток привязан к одному квесту через NBT-поле Quest — идентификатор квеста в формате namespace:id:

/give <player> inkquest:quest_scroll{Quest:"namespace:quest_id"}

Например, свиток на квест story:rescue_blacksmith:

/give @s inkquest:quest_scroll{Quest:"story:rescue_blacksmith"}

Без поля Quest свиток пустой и по клику только сообщит об ошибке. То же поле задаётся в лут-таблицах и у торговцев — везде, где предмет выдаётся с NBT.

Свитки не стакаются — каждый занимает отдельный слот инвентаря.

Что происходит при использовании свитка — выдача квеста, расход, причины отказа — в Предметы.


Gamerule doQuestBookItemCheck

/gamerule doQuestBookItemCheck true|false

По умолчанию false. Обычный геймрул Minecraft — значение хранится в мире.

При true квестовая книга становится обязательным предметом: пока её нет в инвентаре игрока (любой слот, не обязательно в руке), квесты не открыть.

Способ открытия false (по умолчанию) true
Клавиша J Всегда работает Нужна книга в инвентаре
Свиток квеста Выдаёт квест и открывает книгу Без книги квест не выдаётся, свиток не расходуется
ПКМ по книге Всегда работает Всегда работает (книга уже в руке)

Геймрул удобен для карт, где квесты вписаны в выживание: книгу сначала нужно добыть — скрафтить, найти в сундуке или получить как награду, — и только потом читать квесты. До этого выданные квесты копятся, но остаются скрытыми.

Включать автоматически через датапак

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

1. Создай или дополни data/minecraft/tags/functions/load.json:

{
  "values": ["your_namespace:setup"]
}

2. Создай функцию data/your_namespace/functions/setup.mcfunction:

gamerule doQuestBookItemCheck true

Замени your_namespace на namespace своего датапака. Функция выполняется и при каждом /reload — это безопасно: геймрул просто перезаписывается тем же значением.


См. также