Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
− | <div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="b-pageLayout b-pageLayout__xs" data-layout="xs" id="pageLayout"><div class="b-pageContent m-pageContent__withoutLeft m-pageContent__withoutRight" id="pageContent">
| + | <div class="mw-parser-output"><div class="b-pageLayout b-pageLayout__xs" data-layout="xs" id="pageLayout"><div class="b-pageContent m-pageContent__withoutLeft m-pageContent__withoutRight" id="pageContent"> |
| Добавление рецептов крафта и переплавки - то, без чего не обойдется никакой мод. | | Добавление рецептов крафта и переплавки - то, без чего не обойдется никакой мод. |
| | | |
Строка 6: |
Строка 6: |
| === Рецепты верстака === | | === Рецепты верстака === |
| | | |
− | Рецепты верстака бывают 2х типов: | + | Рецепты верстака бывают 2х типов: форменные и бесформенные, первый тип требует того, чтобы предмет был выложен на верстаке в какой то определенной форме, второй требует лишь соблюдения присутсвия и кол-ва предметов в сетке крафта, но не требует порядка. Особенностью форменных рецептов является то, что если рецепт занимает область меньше, чем 3х3, то он может быть выложен в любой области верстака для его выполнения. |
| | | |
− | *форменные - предмет должен быть выложен на верстаке в определенной форме. Если меньше, чем 3х3, то он может быть выложен в любой области верстака для его выполнения.
| + | Для добавления форменных рецептов используется функция Recipes.addShaped({id: id результата, count: кол-во результата, data: data результата}, форма рецепта, определение предметов, функция выполнения, префикс) - в обычном рецепте последние 2 параметра можно и нужно опустить, о них будет рассказано позже. |
− | *бесформенные - требует лишь соблюдения присутсвия и кол-ва предметов в сетке крафта, но не требует порядка
| |
| | | |
− | Для добавления форменных рецептов используется функция Recipes.addShaped({id: id, count: кол-во, data: data}, [форма рецепта], [ингридиенты], функция выполнения function(api, field, result){}, префикс) - в обычном рецепте последние 2 параметра можно и нужно опустить, о них будет рассказано позже.
| + | Форма рецепта задается массивом строк, которые соответсвуют строкам в форме рецепта, где каждый символ означает предмет, а пробел - отсутсвие предмета. |
| | | |
− | *api - содержит объект апи содержащий следущие параметры:
| + | Разъяснение предметов это массив, в котором данные идут в порядке ['символ1', id1, data1, 'символ2', id2, data2, ...], и так для всех символов, которые использовались в форме рецепта, кроме пробела. Если data предмета не важна (к примеру вы хотите, чтобы в рецепте использовались доски любого типа), то вместо нее напишите -1. |
− | **contatiner, getClass, wait, isPrevented, notifyAll, decreaseFieldSlot, notify, prevent, fieldSlot, getFieldSlot, hashCode, equals, toString, class, prevented.
| |
− | *field - массив идентификаторов слотов 0-8, содержащие: id, count, data, extra. для получения содержания слота используется field[slotID].parameter
| |
− | *result - содержит сам предмет который возвращается в инвентарь при удачном крафте. Параметры result содержат: id, count, data, extra.
| |
| | | |
− | | + | Пример рецепта: |
| + | <syntaxhighlight lang="javascript">Recipes.addShaped({id: 264, count: 1, data: 0}, [ |
| + | |
| + | "ax", |
| + | |
| + | "xa", |
| + | |
| + | "ax" |
| + | |
| + | ], ['x', 265, 0, 'a', 266, 0]); |
| + | |
| + | /* |
| + | |
| + | добавит рецепт алмаза, который создается из 3 железных и 3 золотых слитков в таком порядке: |
| + | |
| + | ax |
| + | |
| + | xa |
| + | |
| + | ax |
| + | |
| + | x - железо |
| + | |
| + | a - золото |
| + | |
| + | */</syntaxhighlight> |
| + | <div>Плохой пример рецепта:<span id="cke_bm_157E" style="display: none"> </span></div> <syntaxhighlight lang="javascript">Recipes.addShaped({id: 264, count: 1, data: 0}, [ |
| + | |
| + | "ax ", |
| + | |
| + | "xa ", |
| | | |
− | Форма рецепта задается массивом строк, которые соответсвуют строкам в форме рецепта, где каждый символ означает предмет, а пробел - отсутсвие предмета.
| + | "ax " |
| | | |
− | Ингридиенты это массив, в котором данные идут в порядке ['символ1', id1, data1, 'символ2', id2, data2, ...], и так для всех символов, которые использовались в форме рецепта, кроме пробела. Если data предмета не важна (к примеру вы хотите, чтобы в рецепте использовались доски любого типа), то вместо нее напишите -1.
| + | ], ['x', 265, 0, 'a', 266, 0]); |
| | | |
− | Кол-ва строк может быть меньше 3, если столько не нужно. Пример рецепта:
| |
− | <syntaxhighlight lang="javascript">Recipes.addShaped({id: 264, count: 1, data: 0}, /* Результат крафта */
| |
− | ["ax", "xa", "ax"], /* Форма рецепта */
| |
− | ['x', 265, 0, 'a', 266, 0]/* Ингридиенты */
| |
− | );
| |
− | /* добавит рецепт алмаза, который создается из 3 железных и 3 золотых слитков, где x - железо, a - золото */</syntaxhighlight>
| |
| | | |
− | Плохой пример рецепта:
| + | // Как можно заметить, длина строки в данном случае 3, а не 2 и рецепт можно будет создать только, если выложить нужную структуру в левой части верстака, в прошлом же примере ненужные слоты были обрезаны и рецепт был шириной в 2, а не в 3, потому его можно было выложить как в правой части, так и в левой. То же самое касается кол-ва строк, их может быть меньше 3, если столько не нужно. |
− | <syntaxhighlight lang="javascript">Recipes.addShaped({id: 264, count: 1, data: 0},
| + | </syntaxhighlight> |
− | ["ax ","xa ","ax "],
| |
− | ['x', 265, 0, 'a', 266, 0]
| |
− | );
| |
− | // Рецепт можно будет создать только, если выложить рецепт в левой части верстака.</syntaxhighlight>
| |
| | | |
− | Тот же самый пример, но ингридиенты можно разложить в любом порядке
| + | Пример: |
− | <syntaxhighlight lang="javascript">Recipes.addShapeless( | + | <syntaxhighlight lang="javascript">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 золотых слитков, однако их можно выложить в любом порядке. |
− | {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}]
| |
− | );</syntaxhighlight> | |
| | | |
− | *Recipes.addShapeless({id: id, count: кол-во, data: data}, [{id: id1, data: data1}, {id: id2, data: data2}, ...], функция выполнения, префикс) - добавление бесформенных рецептов.
| + | |
− | *Recipes.deleteRecipe({id: id, count: кол-во, data: data}) - удаляет все рецепты для данного предмета.
| + | Recipes.deleteRecipe({id: id результата, count: кол-во результата, data: data результата}) - удаляет все рецепты для данного предмета. |
− | *Recipes.replaceWithShaped({id: id, count: кол-во, data: data}, форма рецепта, определение предметов, функция выполнения, префикс) - аналогична Recipes.addShaped, заменяет все остальные рецепты для этого предмета.
| + | Recipes.replaceWithShaped({id: id результата, count: кол-во результата, data: data результата}, форма рецепта, определение предметов, функция выполнения, префикс) - аналогична Recipes.addShaped, но удаляет все остальные рецепты для этого предмета. |
− | *Recipes.replaceWithShapeless({id: id, count: кол-во, data: data}, форма рецепта, определение предметов, функция выполнения, префикс) - аналогична Recipes.addShapeless, заменяет все остальные рецепты для этого предмета.
| + | Recipes.replaceWithShapeless({id: id результата, count: кол-во результата, data: data результата}, форма рецепта, определение предметов, функция выполнения, префикс) - аналогична Recipes.addShapeless, но удаляет все остальные рецепты для этого предмета. |
| + | Recipes.addShapeless({id: id результата, count: кол-во результата, data: data результата}, [{id: id1, data: data1}, {id: id2, data: data2}, ...], функция выполнения, префикс) - добавление бесформенных рецептов. |
| + | </syntaxhighlight> |
| + | |
| | | |
| === Функция крафта === | | === Функция крафта === |
Строка 68: |
Строка 83: |
| | | |
| | | |
− | | + | </div> </div> </div> </div> |
− | <div class="mw-parser-output"> | |
− | <div class="mw-parser-output"> | |
− | <div class="mw-parser-output"><div class="mw-parser-output"> | |
− | === Получение рецептов верстака и печи ===
| |
− | | |
− | Есть возможность получать рецепты верстака или печи. Для этого есть функции:
| |
− | | |
− | Для верстака:
| |
− | | |
− | *Recipes.getRecipeByField(контейнер, префикс, игнорировать префикс); //<u>крафт</u> по входным слотам (должны называтся от slot0 до slot8)
| |
− | *Recipes.getRecipeResult(контейнер, префикс) //<u>результат</u> по входным слотам (должны называтся от slot0 до slot8)
| |
− | *Recipes.getWorkbenchRecipesByIngredient(id, data); //<u>список крафтов</u> с инградиентом
| |
− | *Recipes.getWorkbenchRecipesByResult(id, кол-во, data); //<u>список крафтов</u> с результатом
| |
− | | |
− | Для печи:
| |
− | | |
− | *Recipes.getFurnaceRecipesByResult(); //<u>список всех</u> рецептов печи (по задумке должен принимать id, data и префикс выходного предмета и возвращать только рецепты с ним, но в данный момент эта функция сломана и возвращает список всех рецептов независимо от аргументов)
| |
− | *Recipes.getFurnaceRecipeResult(id, data, префикс); //принимает входной предмет и возвращает результат
| |
− | | |
− | Для того чтобы указать любое значение количиства или data можно использовать -1.
| |
− | | |
− | Работа с объектами рецептов:
| |
− | <syntaxhighlight lang="JavaScript">
| |
− | 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
| |
− | </syntaxhighlight>
| |