🥽DataPack для крафтов

Вступление

Есть несколько способов добавлять собственные рецепты: через CraftTweaker, KubeJS или через дата-паки.

Дата-паки — это простой, около ванильный и вместе с тем универсальный способ добавлять, изменять и удалять рецепты для интерфейсов самого Майнкрафта, вроде верстака или печи, и для интерфейсов из модов.

Что такое дата-пак?

Для начала стоит узнать, что же такое дата-пак и как им пользоваться. Некоторые представляют в своей голове, что дата-паки - это нечто вроде модов или даже командных блоков, хотя это в корне неверная точка зрения. Дата-пак, как понятно из названия - это «пак даты» - набор данных, вроде функций, крафтов, структур, таблиц лута, достижений и тегов, которые содержатся в самих файлах Майнкрафта или мода и которые дата-пак может изменять, а иногда добавлять свои без влияния на код. В отличии от модов, дата-паки «вшиты» в сам Майнкрафт, а потому абсолютно ванильны и не способны конфликтовать с модами. Так же это означает, что дата-паки совместимы с любыми модами, ведь сами моды используют тот же код, что и Майнкрафт.

Несмотря на это, у дата-паков есть ряд неудобств или, скорее, недостатков, из-за чего они не так используемы по сравнению с тем же KubeJS. Во-первых, дата-паки, в отличие от модов, загружаются в папку мира, а не в папку игры, а потому они не работают автоматически во всех мирах. К счастью, при помощи таких модов, как Paxi и Global Data and Resource Packs можно применять дата-паки ко всем мирам проекта. Сами дата-паки на версиях с 1.12.2 и ниже не работают, ведь такой функции на этих версиях просто не существует. Поэтому выбор использовать их или нет зависит не только от Вас, но и от версии Вашей сборки

Подготовка

Работа с дата-паком начинается не с его создания, а с подготовки. Необходимо знать некоторые вещи, которые понадобятся в процессе пользования. Во-первых, это функции самого Майнкрафта. С помощью команды /reload можно перезагрузить наборы данных, благодаря чему получится смотреть работоспособность дата-пака не выходя из мира. Также комбинацией клавиш F3+H можно включить «расширенные подсказки», благодаря которым при наведении на предмет можно увидеть его идентификатор. Он выглядит как: (имя мода):(имя предмета) и расположен под названием самого предмета. К примеру, у печки идентификатор (айди) выглядит как minecraft:furnace

Также перед началом создания или редактирования крафтов стоит установить специальные программы для более удобного кодинга. Конечно, можно писать код и в «Блокноте», но такие программы, как «Visual Studio» или «Notepad++» благодаря своему автоматическому разбитию кода на части гораздо более удобны и практичны в такого рода деятельности.

Начало работы

В ванильном Майнкрафте дата-пак должен располагаться по директории .minecraft/saves/(мир)/datapacks, если же Вы используете моды вроде Paxi, то директория для дата-пака будет указана на странице мода. Сначала создаётся папка или архив с именем, которое Вы хотите дать дата-паку. В этой папке должны располагаться папка с именем «data» и текстовый документ с названием pack и расширением .mcmeta. Если у Вас не показываются расширения у файлов, то в проводнике, во вкладке «Вид», поставьте галочку у строки «Расширенные имена файлов» и переименуйте расширение файла. Кроме прочего, Вы можете добавить иконку для дата-пака, для этого положите внутрь папки изображение с именем pack.

При этом рекомендуется делать изображение с квадратным соотношением сторон и формата не больше, чем 512х512 px.

Текстовый документ pack.mcmeta должен содержать следующее содержание:

{
  "pack": {
    "pack_format": 9,
    "description": "A funny stuff"
  }
}

Девятка обозначает число, которое относится к этой версии. К примеру, число 9 подходит к версии 1.19.2. Если ввести неверное число, то Майнкрафт будет предупреждать о возможных ошибках. Текст в графе description отвечает за описание дата-пака.

После создания первых файлов в data следует создать папку с названием minecraft или же добавить папки с названиями модов, если рецепты будут использовать типы крафтов из других модов. Здесь создаётся папка recipes, в которой уже и будут находиться файлы с крафтами.

Элементы кода

Перед началом работы с крафтами стоит научиться в целом пользоваться кодом. Не зная, что за что отвечает, работать с крафтами будет весьма трудно. От крафта к крафту общая структура меняется, но части имеют всё те же функции. Моды для своих рецептов могут добавлять свои собственные части, но имея знания английского или переводчик под рукой можно понять их функции.

⦁ type: Тип рецепта, индивидуален для каждого крафтового процесса. К примеру, «smelting» используется для рецептов печи.
⦁ group: Идентификатор, используемый для группировки в книге рецептов.
pattern: Шаблон для форменного создания. Такой тип, например, используется в верстаке. Каждая строка в сетке верстака — строка в этом шаблоне, содержащая 3 или менее ключа. У всех строк должно быть одинаковое количество ключей. Чтобы указать ячейку без предмета необходимо использовать пробел.
    ⦁ key: Все ключи, используемые в шаблоне.
    ⦁ (ключ): Символ, определяющий предмет.
        ⦁ item: Идентификатор предмета.
        ⦁ tag: Тег предмета.
⦁ ingredient: Ингредиент. Задействуется в рецептах с одним используемым предметом, в тех же крафтах внутри печи.
    ⦁ item: Идентификатор предмета.
    ⦁ tag: Тег предмета.
⦁ ingredients: Список ингредиентов, используемых для бесформенных крафтов.
    ⦁ item: Идентификатор предмета.
    ⦁ tag: Тег предмета.
⦁ result: Продукт рецепта – то, что получают в итоге.
    ⦁ count: Количество предметов.
    ⦁ item: Идентификатор предмета.
⦁ experience: Выдаваемый после процесса опыта.
⦁ cookingtime: Время создания продукта. Указывается в тиках, 1 тик-0.05 секунды.

Создание крафтов

После того, как все нюансы были учтены, можно приступать к созданию крафтов. Сам текстовый документ, который должен содержать в себе файл может иметь любое название из английских символов, однако расширение должно быть единым - .json. Далее, открыв этот файл с помощью текстовой программы, внутри Вам нужно будет поместить код. Конечно, в один и тот же файл можно поместить все нужные крафты, однако гораздо удобнее каждый крафт помещать в отдельный файл, чтобы не запутаться.

А теперь вопрос, который волнует многих. Да, конечно можно писать все крафты с нуля, но как я упоминал в начале, дата-пак не добавляет новые способы создания крафтов, а напрямую использует способы майнкрафта. Это означает, что можно использовать уже существующие крафты как шаблоны для создания своих. В случае, если нужно не создать новый, а изменить уже существующий крафт, надо скопировать не только код, но и файл целиком, и уже его редактировать. Если же Ваша цель - удалить крафт, необходимо просто удалить код из скопированного файла, оставив лишь его имя.

Все крафты ванильного майнкрафта расположены в JAR-файле, который находится по директории .minecraft/versions/(версия Майнкрафта). Открыв этот файл через любой архиватор, проходим по той же директории, что и в датапаке и ищем нужный нам крафт (они все подписаны в зависимости от самого крафта внутри). Далее копируем его в папку дата-пака, переименовываем, редактируем и получаем нужный нам рецепт создания. Для крафтов из модов такая же схема, однако нужно открыть JAR-файл самого мода, что расположен по директории .minecraft/mods.

Крафт в верстаке

Начнём с крафта в верстаке. Добавим рецепт создания трезубцу из осколков призмарина, кристалла и палки. Сначала находим подходящий шаблон, к примеру самый первый крафт в списке - акациевая лодка. Копируем в датапак, переименовываем и открываем.

Здесь мы увидим крафт по принципу паттерна. Так как у нас три разных предмета в крафте, то изменяем паттерн на нужный нам. Это может быть сложно и непонятно, но просто представьте, что верстак - это три строчки с тремя символами, пробел - это пустота, а символы - обозначения предметов.

{
  "type": "minecraft:crafting_shaped",
  "key": {
    "A": {
      "item": "minecraft:prismarine_shard"
    },
    "B": {
      "item": "minecraft:stick"
    },
    "C": {
      "item": "minecraft:prismarine_crystals"
    }
  },
  "pattern": [
    " AA",
    " BA",
    "C  "
  ],
  "result": {
	  "item": "minecraft:trident"
  }
}

Получив нужный паттерн, мы приписываем каждый символ к предмету. Символ А к осколку призмарина, В - к палке, а С - к кристаллу призмарина.

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

Сохраняем этот крафт, перезагружаем мир и видим крафт трезубца. Значит, всё получилось!

Бесформенный крафт

Теперь создадим бесформенный крафт. К примеру, сделаем так, чтобы хлеб делался бесформенно, просто из трёх пшена в любом месте. Сначала ищем 2 рецепта - крафт хлеба и любой бесформенный крафт, в моём случае за основу взято создание коричневой шерсти. Копируем оба, переименовываем крафт шерсти. В крафте хлеба удаляем весь код из основных частей, он будет выглядеть примерно так:

{
  "type": "minecraft:crafting_shaped",
  "key": {}
  },
  "pattern": [],
  "result": {}
}

Дальше работаем только с раннее взятым рецептом шерсти.

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

{
  "type": "minecraft:crafting_shapeless",
  "ingredients": [
    {
      "item": "minecraft:wheet"
    },
    {
      "item": "minecraft:wheet"
    }
  ],
  "result": {
    "item": "minecraft:bread"
  }
}

Оба крафта загружаем в дата-пак, перезагружаем мир и смотрим.

Вот у нас и вышел крафт хлеба, в котором положение пшена не важно. Теперь его даже в инвентаре создать можно

Крафт в печи

Добавим крафт, требующий обжарки. К примеру, пережаривание гнилой плоти в кожу. Берём любой крафт, например, переплавка железа в печи. Копируем, переименовываем и открываем:

Начинаем редактировать. Удаляем группу, меняем ингредиент на гнилую плоть, результат на кожу, также можем увеличить время приготовления и количество получаемого за пережарку опыта:

{
  "type": "minecraft:smelting",
  "cookingtime": 300,
  "experience": 1.5,
  "ingredient": {
    "item": "minecraft:rotten_flesh"
  },
  "result": "minecraft:leather"
}

Получившийся крафт сохраняем и вносим в дата-пак:

После перезагрузки и видим наш новый крафт. Значит, ошибок нет.

Рецепты создания в модах

Возьмём за пример создания собственного рецепта в Руническом Алтаре из мода Botania.

Из-за того, что это модовый крафт, действия будут немного отличаться. Открываем мод, вытаскиваем любой крафт на руническом алтаре, например, крафт руны лета, переименовываем и открываем:

Предположим, что мы хотим добавить крафт духу Гайи из звезды Незера, 4 стекла и 4 маналмазов. Меняем ингредиенты на соответствующие, вставляем теги на любые стёкла. Также изменяем количество маны, ставим в результат дух Гайи:

{
  "type": "botania:runic_altar",
  "ingredients": [
    {
      "item": "minecraft:nether_star"
    },
    {
      "item": "botania:mana_diamond"
    },
    {
      "tag": "forge:glass"
    },    
	{
      "item": "botania:mana_diamond"
    },
    {
      "tag": "forge:glass"
    },    
	{
      "item": "botania:mana_diamond"
    },
    {
      "tag": "forge:glass"
    },
    {
      "item": "botania:mana_diamond"
    },    
	{
      "tag": "forge:glass"
    }

  ],
  "mana": 11111,
  "output": {
    "item": "botania:life_essence"
  }
}

Получившийся крафт сохраняем и переносим в дата-пак, после перезапускаем мир.

Наш первый модовый рецепт создания работает!

Крафт на механических сборщиках

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

В окне изменяем паттерн. Он будет в форме яйца, первый слой из обсидиана, второй из дыхания дракона, третий из звёзд Незера, а по центру яйцо.

Далее придаём каждому ключу свой предмет, меняем результат на яйцо дракона и сохраняем.

{
  "type": "create:mechanical_crafting",
  "acceptMirrored": false,
  "key": {
    "A": {
      "item": "minecraft:obsidian"
    },
    "B": {
      "item": "minecraft:dragon_breath"
    },
    "C": {
      "item": "minecraft:nether_star"
    },
    "D": {
      "item": "minecraft:egg"
    }
  },
  "pattern": [
    "  AAA  ",
    " ABBBA ",
    " ABCBA ",
    "ABCDCBA",
    "ABBCBBA",
    " AAAAA "
  ],
  "result": {
    "item": "minecraft:dragon_egg"
  }
}

Этот крафт кидаем в папку дата-пака, прописываем /reload и смотрим на результат:

That’s all, folks!

Last updated