(Добавлено "Получение рецептов верстака и печки") |
|||
Строка 69: | Строка 69: | ||
| | ||
− | === Получение рецептов верстака и | + | <div class="mw-parser-output"> |
+ | === Получение рецептов верстака и печи === | ||
− | Есть возможность получать рецепты верстака или | + | Есть возможность получать рецепты верстака или печи. Для этого есть функции: |
Для верстака: | Для верстака: | ||
Строка 79: | Строка 80: | ||
*Recipes.getWorkbenchRecipesByResult(id, кол-во, data); //<u>список крафтов</u> с результатом | *Recipes.getWorkbenchRecipesByResult(id, кол-во, data); //<u>список крафтов</u> с результатом | ||
− | Для | + | Для печи: |
− | *Recipes.getFurnaceRecipesByResult(); //<u>список всех</u> рецептов | + | *Recipes.getFurnaceRecipesByResult(); //<u>список всех</u> рецептов печи |
*Recipes.getFurnaceRecipeResult(id, префикс); //возвращает объект предмета | *Recipes.getFurnaceRecipeResult(id, префикс); //возвращает объект предмета | ||
Строка 98: | Строка 99: | ||
//получение результата | //получение результата | ||
recipe.result | recipe.result | ||
− | //получение входного слота | + | //получение входного слота печи |
recipe.inId recipe.inData | recipe.inId recipe.inData | ||
//получение входных слотов верстака | //получение входных слотов верстака | ||
Строка 107: | Строка 108: | ||
</pre> | </pre> | ||
− | | + | </div> </div> </div> </div> </div> </div> |
− | </div> </div> </div> </div> </div> </div> | + | </div> |
Добавление рецептов крафта и переплавки - то, без чего не обойдется никакой мод.
Рецепты верстака бывают 2х типов:
Для добавления форменных рецептов используется функция Recipes.addShaped({id: id, count: кол-во, data: data}, [форма рецепта], [ингридиенты], функция выполнения function(api, field, result){}, префикс) - в обычном рецепте последние 2 параметра можно и нужно опустить, о них будет рассказано позже.
Форма рецепта задается массивом строк, которые соответсвуют строкам в форме рецепта, где каждый символ означает предмет, а пробел - отсутсвие предмета.
Ингридиенты это массив, в котором данные идут в порядке ['символ1', id1, data1, 'символ2', id2, data2, ...], и так для всех символов, которые использовались в форме рецепта, кроме пробела. Если data предмета не важна (к примеру вы хотите, чтобы в рецепте использовались доски любого типа), то вместо нее напишите -1.
Кол-ва строк может быть меньше 3, если столько не нужно. Пример рецепта:
Recipes.addShaped({id: 264, count: 1, data: 0}, /* Результат крафта */
["ax", "xa", "ax"], /* Форма рецепта */
['x', 265, 0, 'a', 266, 0]/* Ингридиенты */
);
/* добавит рецепт алмаза, который создается из 3 железных и 3 золотых слитков, где x - железо, a - золото */
Плохой пример рецепта:
Recipes.addShaped({id: 264, count: 1, data: 0},
["ax ","xa ","ax "],
['x', 265, 0, 'a', 266, 0]
);
// Рецепт можно будет создать только, если выложить рецепт в левой части верстака.
Тот же самый пример, но ингридиенты можно разложить в любом порядке
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}]
);
К любому рецепту крафта может быть добавлена функция, вызывающуюся после совершения крафта. Пример раскрафта алмазной мотыги на составляющие:
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); // переплавка железа в алмаз
Так же этот метод имеет еще одну вариацию Recipes.addFurnace(id сырья, data сырья, id результата, data результата, префикс)
Recipes.addFurnace(351, 4, 280, 0); //Переплавка лазурита в палку
Есть возможность получать рецепты верстака или печи. Для этого есть функции:
Для верстака:
Для печи:
Для того чтобы указать любое значение количиства или data можно использовать -1.
Работа с объектами рецептов:
var recipe_list=Recipes.getWorkbenchRecipesByResult(278, 1, 0); //количество елементов в списке: recipe_list.size(); //получение одного рецепта из списка: var recipe=recipe_list.get(елемент); //или (если первый не работает используйте второй) var recipe=recipe_list.toArray()[елемент]; //получение результата recipe.result //получение входного слота печи recipe.inId recipe.inData //получение входных слотов верстака var slots=recipe.getSortedEntries(); slots[номер слота от 0 до 8] //получение префикса: recipe.prefix