InnerCore/Рецепты

Материал из mineprogramming wiki
Перейти к: навигация, поиск

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

 

Рецепты верстака[править]

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

Для добавления форменных рецептов используется функция Recipes.addShaped({id: id результата, count: кол-во результата, data: data результата}, форма рецепта, определение предметов, функция выполнения, префикс) - в обычном рецепте последние 2 параметра можно и нужно опустить, о них будет рассказано позже.

Форма рецепта задается массивом строк, которые соответсвуют строкам в форме рецепта, где каждый символ означает предмет, а пробел - отсутсвие предмета.

Разъяснение предметов это массив, в котором данные идут в порядке ['символ1', id1, data1, 'символ2', id2, data2, ...], и так для всех символов, которые использовались в форме рецепта, кроме пробела. Если data предмета не важна (к примеру вы хотите, чтобы в рецепте использовались доски любого типа), то вместо нее напишите -1.

Пример рецепта:

Recipes.addShaped({id: 264, count: 1, data: 0}, [

     "ax",

     "xa",

     "ax"

], ['x', 265, 0, 'a', 266, 0]);

/*

добавит рецепт алмаза, который создается из 3 железных и 3 золотых слитков в таком порядке:

ax

xa

ax

x - железо

a - золото

*/
Плохой пример рецепта:
Recipes.addShaped({id: 264, count: 1, data: 0}, [

     "ax ",

     "xa ",

     "ax "

], ['x', 265, 0, 'a', 266, 0]);


// Как можно заметить, длина строки в данном случае 3, а не 2 и рецепт можно будет создать только, если выложить нужную структуру в левой части верстака, в прошлом же примере ненужные слоты были обрезаны и рецепт был шириной в 2, а не в 3, потому его можно было выложить как в правой части, так и в левой. То же самое касается кол-ва строк, их может быть меньше 3, если столько не нужно.

Пример:

Recipes.addShapeless({id: 264, count: 1, data: 0}, [{id: 265, data: 0}, {id: 265, data: 0}, {id: 265, data: 0}, {id: 266, data: 0}, {id: 266, data: 0}, {id: 266, data: 0}]); // добавит рецепт алмаза, который создается из 3 железных и 3 золотых слитков, однако их можно выложить в любом порядке.

  • Recipes.deleteRecipe({id: id результата, count: кол-во результата, data: data результата}) - удаляет все рецепты для данного предмета.
  • Recipes.replaceWithShaped({id: id результата, count: кол-во результата, data: data результата}, форма рецепта, определение предметов, функция выполнения, префикс) - аналогична Recipes.addShaped, но удаляет все остальные рецепты для этого предмета.
  • Recipes.replaceWithShapeless({id: id результата, count: кол-во результата, data: data результата}, форма рецепта, определение предметов, функция выполнения, префикс) - аналогична Recipes.addShapeless, но удаляет все остальные рецепты для этого предмета.
  • Recipes.addShapeless({id: id результата, count: кол-во результата, data: data результата}, [{id: id1, data: data1}, {id: id2, data: data2}, ...], функция выполнения, префикс) - добавление бесформенных рецептов.


Функция крафта[править]

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

Recipes.addShapeless({id: 264, count: 1, data: 0}, [{id: 293, data: 0}], function(api, field, result){ 
    Player.addItemToInventory(ItemID.280, 2); 
});

Рецепты печи[править]

Для добавления рецепта печи используется метод Recipes.addFurnace(id сырья, id результата, data результата, префикс, блокировка) - для обычного рецепта параметры префикс и блокировка не нужны.

Пример:

Recipes.addFurnace(265, 264, 0); // переплавка железа в алмаза