Рецепты — различия между версиями

(Рецепты верстака)
Строка 6: Строка 6:
 
=== Рецепты верстака ===
 
=== Рецепты верстака ===
  
Рецепты верстака бывают 2х типов: форменные и бесформенные, первый тип требует того, чтобы предмет был выложен на верстаке в какой то определенной форме, второй требует лишь соблюдения присутсвия и кол-ва предметов в сетке крафта, но не требует порядка. Особенностью форменных рецептов является то, что если рецепт занимает область меньше, чем 3х3, то он может быть выложен в любой области верстака для его выполнения.
+
Рецепты верстака бывают 2х типов:  
 
+
*форменные - предмет должен быть выложен на верстаке в определенной форме. Если меньше, чем 3х3, то он может быть выложен в любой области верстака для его выполнения.
Для добавления форменных рецептов используется функция Recipes.addShaped({id: id результата, count: кол-во результата, data: data результата}, форма рецепта, определение предметов, функция выполнения, префикс) - в обычном рецепте последние 2 параметра можно и нужно опустить, о них будет рассказано позже.
+
*бесформенные - требует лишь соблюдения присутсвия и кол-ва предметов в сетке крафта, но не требует порядка
 +
 
 +
Для добавления форменных рецептов используется функция Recipes.addShaped({id: id, count: кол-во, data: data}, [форма рецепта], [ингридиенты], функция выполнения function(api, field, result){}, префикс) - в обычном рецепте последние 2 параметра можно и нужно опустить, о них будет рассказано позже.
 +
*api - содержит объект апи содержащий следущие параметры:
 +
**contatiner, getClass, wait, isPrevented, notifyAll, decreaseFieldSlot, notify, prevent, fieldSlot, getFieldSlot, hashCode, equals, toString, class, prevented.
 +
*field - по-идее слот результата содержащий id, count, data и возможно extra. Еще не проверялось!!!!!
 +
*result - содержит сам предмет который возвращается в инвентарь при удачном крафте. Параметры которые содержит result идентичны field
 +
 
  
 
Форма рецепта задается массивом строк, которые соответсвуют строкам в форме рецепта, где каждый символ означает предмет, а пробел - отсутсвие предмета.
 
Форма рецепта задается массивом строк, которые соответсвуют строкам в форме рецепта, где каждый символ означает предмет, а пробел - отсутсвие предмета.
 +
 
  
Разъяснение предметов это массив, в котором данные идут в порядке ['символ1', id1, data1, 'символ2', id2, data2, ...], и так для всех символов, которые использовались в форме рецепта, кроме пробела. Если data предмета не важна (к примеру вы хотите, чтобы в рецепте использовались доски любого типа), то вместо нее напишите -1.
+
Ингридиенты это массив, в котором данные идут в порядке ['символ1', id1, data1, 'символ2', id2, data2, ...], и так для всех символов, которые использовались в форме рецепта, кроме пробела. Если data предмета не важна (к примеру вы хотите, чтобы в рецепте использовались доски любого типа), то вместо нее напишите -1.
 +
 
  
 +
Кол-ва строк может быть меньше 3, если столько не нужно. 
 
Пример рецепта:
 
Пример рецепта:
<syntaxhighlight lang="javascript">Recipes.addShaped({id: 264, count: 1, data: 0}, [
+
<syntaxhighlight lang="javascript">Recipes.addShaped({id: 264, count: 1, data: 0}, /* Результат крафта */
 
+
["ax", "xa", "ax"], /* Форма рецепта */
    "ax",
+
['x', 265, 0, 'a', 266, 0]
 
+
); /* Ингридиенты */
    "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">&nbsp;</span></div> <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>
+
<syntaxhighlight lang="javascript">Recipes.addShaped({id: 264, count: 1, data: 0},
 +
["ax ","xa ","ax "],
 +
['x', 265, 0, 'a', 266, 0]
 +
);
 +
// Рецепт можно будет создать только, если выложить рецепт в левой части верстака.</syntaxhighlight>
  
Пример:
+
Тот же самый пример, но ингридиенты можно разложить в любом порядке
<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 золотых слитков, однако их можно выложить в любом порядке.
+
<syntaxhighlight lang="javascript">Recipes.addShapeless(
  </syntaxhighlight>
+
{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.deleteRecipe({id: id результата, count: кол-во результата, data: data результата}) - удаляет все рецепты для данного предмета.  
+
*Recipes.addShapeless({id: id, count: кол-во, data: data}, [{id: id1, data: data1}, {id: id2, data: data2}, ...], функция выполнения, префикс) - добавление бесформенных рецептов.
*Recipes.replaceWithShaped({id: id результата, count: кол-во результата, data: data результата}, форма рецепта, определение предметов, функция выполнения, префикс) - аналогична Recipes.addShaped, но удаляет все остальные рецепты для этого предмета.  
+
*Recipes.deleteRecipe({id: id, count: кол-во, data: data}) - удаляет все рецепты для данного предмета.  
*Recipes.replaceWithShapeless({id: id результата, count: кол-во результата, data: data результата}, форма рецепта, определение предметов, функция выполнения, префикс) - аналогична Recipes.addShapeless, но удаляет все остальные рецепты для этого предмета.  
+
*Recipes.replaceWithShaped({id: id, count: кол-во, data: data}, форма рецепта, определение предметов, функция выполнения, префикс) - аналогична Recipes.addShaped, заменяет все остальные рецепты для этого предмета.  
*Recipes.addShapeless({id: id результата, count: кол-во результата, data: data результата}, [{id: id1, data: data1}, {id: id2, data: data2}, ...], функция выполнения, префикс) - добавление бесформенных рецептов.  
+
*Recipes.replaceWithShapeless({id: id, count: кол-во, data: data}, форма рецепта, определение предметов, функция выполнения, префикс) - аналогична Recipes.addShapeless, заменяет все остальные рецепты для этого предмета.
  
 
=== Функция крафта ===
 
=== Функция крафта ===

Версия 09:08, 21 августа 2019

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

 

Рецепты верстака

Рецепты верстака бывают 2х типов:

  • форменные - предмет должен быть выложен на верстаке в определенной форме. Если меньше, чем 3х3, то он может быть выложен в любой области верстака для его выполнения.
  • бесформенные - требует лишь соблюдения присутсвия и кол-ва предметов в сетке крафта, но не требует порядка

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

  • api - содержит объект апи содержащий следущие параметры:
    • contatiner, getClass, wait, isPrevented, notifyAll, decreaseFieldSlot, notify, prevent, fieldSlot, getFieldSlot, hashCode, equals, toString, class, prevented.
  • field - по-идее слот результата содержащий id, count, data и возможно extra. Еще не проверялось!!!!!
  • result - содержит сам предмет который возвращается в инвентарь при удачном крафте. Параметры которые содержит result идентичны field

 

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

Ингридиенты это массив, в котором данные идут в порядке ['символ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: id, count: кол-во, data: data}, [{id: id1, data: data1}, {id: id2, data: data2}, ...], функция выполнения, префикс) - добавление бесформенных рецептов.
  • 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: 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); //Переплавка лазурита в палку