Редактирование:Рецепты

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 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="b-pageLayout b-pageLayout__xs" data-layout="xs" id="pageLayout"><div class="b-pageContent
Добавление рецептов крафта и переплавки - то, без чего не обойдется никакой мод.
+
        m-pageContent__withoutLeft
 +
        m-pageContent__withoutRight" id="pageContent">
 +
Добавление рецептов крафта и переплавки - то, без чего не обойдется никакой мод. Измененный верстак Core Engine позволяет добавлять рецепты, которые могут работать как угодно, что сильно расширит вохможности в этой области.
  
 
&nbsp;
 
&nbsp;
Строка 6: Строка 8:
 
=== Рецепты верстака ===
 
=== Рецепты верстака ===
  
Рецепты верстака бывают 2х типов:
+
Рецепты верстака бывают 2х типов: форменные и бесформенные, первый тип требует того, чтобы предмет был выложен на верстаке в какой то определенной форме, второй требует лишь соблюдения присутсвия и кол-ва предметов в сетке крафта, но не требует порядка. Особенностью форменных рецептов является то, что если рецепт занимает область меньше, чем 3х3, то он может быть выложен в любой области верстака для его выполнения.
  
*форменные - предмет должен быть выложен на верстаке в определенной форме. Если меньше, чем 3х3, то он может быть выложен в любой области верстака для его выполнения.
+
&nbsp;
*бесформенные - требует лишь соблюдения присутсвия и кол-ва предметов в сетке крафта, но не требует порядка
+
 
 +
Для добавления форменных рецептов используется функция Recipes.addShaped({id: id результата, count: кол-во результата, data: data результата}, форма рецепта, определение предметов, функция выполнения, префикс) - в обычном рецепте последние 2 параметра можно и нужно опустить, о них будет рассказано позже.
 +
 
 +
&nbsp;
  
&nbsp; Для добавления форменных рецептов используется функция 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.  
 
  
 
&nbsp;
 
&nbsp;
  
Форма рецепта задается массивом строк, которые соответсвуют строкам в форме рецепта, где каждый символ означает предмет, а пробел - отсутсвие предмета. &nbsp;
+
Пример рецепта:
 +
<pre>Recipes.addShaped({id: 264, count: 1, data: 0}, [
 +
 
 +
    "ax",
 +
 
 +
    "xa",
 +
 
 +
    "ax"
 +
 
 +
], ['x', 265, 0, 'a', 266, 0]);
 +
 
 +
/*
 +
 
 +
добавит рецепт алмаза, который создается из 3 железных и 3 золотых слитков в таком порядке:
  
Ингридиенты это массив, в котором данные идут в порядке ['символ1', id1, data1, 'символ2', id2, data2, ...], и так для всех символов, которые использовались в форме рецепта, кроме пробела. Если data предмета не важна (к примеру вы хотите, чтобы в рецепте использовались доски любого типа), то вместо нее напишите -1. &nbsp;
+
ax
  
Кол-ва строк может быть меньше 3, если столько не нужно.&nbsp; Пример рецепта:
+
xa
<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>
 
  
Плохой пример рецепта:
+
ax
<syntaxhighlight lang="javascript">Recipes.addShaped({id: 264, count: 1, data: 0},
 
["ax ","xa ","ax "],
 
['x', 265, 0, 'a', 266, 0]
 
);
 
// Рецепт можно будет создать только, если выложить рецепт в левой части верстака.</syntaxhighlight>
 
  
Тот же самый пример, но ингридиенты можно разложить в любом порядке
+
x - железо
<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}]
 
);</syntaxhighlight>
 
  
*Recipes.addShapeless({id: id, count: кол-во, data: data}, [{id: id1, data: data1}, {id: id2, data: data2}, ...], функция выполнения, префикс) - добавление бесформенных рецептов.
+
a - золото
*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, заменяет все остальные рецепты для этого предмета.
 
  
=== Функция крафта ===
+
*/</pre>
 +
<div>Плохой пример рецепта:<span id="cke_bm_157E" style="display: none">&nbsp;</span></div> <pre>Recipes.addShaped({id: 264, count: 1, data: 0}, [
  
К любому рецепту крафта может быть добавлена функция, вызывающуюся после совершения крафта. Пример раскрафта алмазной мотыги на составляющие:
+
    "ax ",
<syntaxhighlight lang="Javascript">Recipes.addShapeless({id: 264, count: 1, data: 0}, [{id: 293, data: 0}], function(api, field, result){ 
+
 
    Player.addItemToInventory(ItemID.280, 2); 
+
    "xa ",
});</syntaxhighlight>
+
 
<div class="mw-parser-output">
+
    "ax "
=== Рецепты печи ===
 
  
Для добавления рецепта печи используется метод Recipes.addFurnace(id сырья, id результата, data результата, префикс) - для обычного рецепта параметры префикс не нужен.
+
], ['x', 265, 0, 'a', 266, 0]);
  
Пример:
 
<syntaxhighlight lang="JavaScript">Recipes.addFurnace(265, 264, 0); // переплавка железа в алмаз</syntaxhighlight>
 
  
Так же этот метод имеет еще одну вариацию&nbsp; Recipes.addFurnace(id сырья, data сырья, id результата, data результата, префикс)
+
// Как можно заметить, длина строки в данном случае 3, а не 2 и рецепт можно будет создать только, если выложить нужную структуру в левой части верстака, в прошлом же примере ненужные слоты были обрезаны и рецепт был шириной в 2, а не в 3, потому его можно было выложить как в правой части, так и в левой. То же самое касается кол-ва строк, их может быть меньше 3, если столько не нужно.</pre>
<syntaxhighlight lang="JavaScript">Recipes.addFurnace(351, 4, 280, 0); //Переплавка лазурита в палку</syntaxhighlight>
 
  
 
&nbsp;
 
&nbsp;
  
<div class="mw-parser-output">
+
Пример:
<div class="mw-parser-output">
+
<pre>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 золотых слитков, однако их можно выложить в любом порядке.
<div class="mw-parser-output"><div class="mw-parser-output">
 
=== Получение рецептов верстака и печи ===
 
  
Есть возможность получать рецепты верстака или печи. Для этого есть функции:
+
</pre>
  
Для верстака:
+
&nbsp;
  
*Recipes.getRecipeByField(контейнер, префикс, игнорировать префикс); //<u>крафт</u> по входным слотам (должны называтся от slot0 до slot8)
+
&nbsp;
*Recipes.getRecipeResult(контейнер, префикс) //<u>результат</u> по входным слотам (должны называтся от slot0 до slot8)
 
*Recipes.getWorkbenchRecipesByIngredient(id, data); //<u>список крафтов</u> с инградиентом
 
*Recipes.getWorkbenchRecipesByResult(id, кол-во, data); //<u>список крафтов</u> с результатом
 
  
Для печи:
+
*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.getFurnaceRecipesByResult(); //<u>список всех</u> рецептов печи (по задумке должен принимать id, data и префикс выходного предмета и возвращать только рецепты с ним, но в данный момент эта функция сломана и возвращает список всех рецептов независимо от аргументов)
+
&nbsp;
*Recipes.getFurnaceRecipeResult(id, data, префикс); //принимает входной предмет и возвращает результат
 
  
Для того чтобы указать любое значение количиства или data можно использовать -1.
+
&nbsp;
  
Работа с объектами рецептов:
+
=== Рецепты печи ===
<syntaxhighlight lang="JavaScript">
 
var recipe_list=Recipes.getWorkbenchRecipesByResult(278, 1, 0);
 
  
//количество елементов в списке: recipe_list.size();
+
Для добавления рецепта печи используется метод Recipes.addFurnace(id сырья, id результата, data результата, префикс, блокировка) - для обычного рецепта параметры префикс и блокировка не нужны.
  
//получение одного рецепта из списка:
+
&nbsp;
  var recipe=recipe_list.get(елемент);
 
  //или (если первый не работает используйте второй)
 
  var recipe=recipe_list.toArray()[елемент];
 
  
//получение результата
+
Пример:
recipe.result
+
<pre>Recipes.addFurnace(265, 264, 0); // переплавка железа в алмаза</pre>
//получение входного слота печи
 
recipe.inId  recipe.inData
 
//получение входных слотов верстака
 
var slots=recipe.getSortedEntries();
 
slots[номер слота от 0 до 8]
 
  
//получение префикса: recipe.prefix
+
&nbsp;
</syntaxhighlight>
+
</div> </div>

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии GNU Free Documentation License 1.3 или более поздняя (см. Mineprogramming wiki:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!