<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://wiki.mineprogramming.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=80LK</id>
		<title>mineprogramming wiki - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.mineprogramming.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=80LK"/>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/80LK"/>
		<updated>2026-04-28T17:01:30Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2530</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2530"/>
				<updated>2020-11-21T22:25:04Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Исправление ошибок &lt;br /&gt;
*Поддержка RecipeViewer &lt;br /&gt;
*В TileEntity верстака добавлен метод setWorkbench(sid) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#dddddd;&amp;quot;&amp;gt;(2.0 и выше)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Интеграция с RecipeViewer ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Добавление ваших кравтов происходит автоматически. ===&lt;br /&gt;
&lt;br /&gt;
В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
    bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
    x: 600,&lt;br /&gt;
    y: 170,&lt;br /&gt;
    RV:true,&lt;br /&gt;
    scale: 4&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для задания своего интерфейса в RecipeViewer прототип должен иметь поле&amp;amp;nbsp;RVGuiScreen с полями drawable и elements.&amp;lt;br/&amp;gt; Входные слоты имеют имя input+index, вызодные - output+index.&lt;br /&gt;
&lt;br /&gt;
Подробнее об элементах на странице [[InnerCore/Введение_в_GUI|Введение в GUI]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2482</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2482"/>
				<updated>2020-05-31T19:00:21Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Исправление ошибок &lt;br /&gt;
*Поддержка RecipeViewer &lt;br /&gt;
*В TileEntity верстака добавлен метод setWorkbench(sid) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#dddddd;&amp;quot;&amp;gt;(2.0 и выше)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Интеграция с RecipeViewer ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Добавление ваших кравтов происходит автомотически. ===&lt;br /&gt;
&lt;br /&gt;
В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
    bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
    x: 600,&lt;br /&gt;
    y: 170,&lt;br /&gt;
    RV:true,&lt;br /&gt;
    scale: 4&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для задания своего интерфейса в RecipeViewer прототип должен иметь поле&amp;amp;nbsp;RVGuiScreen с полями drawable и elements.&amp;lt;br/&amp;gt; Входные слоты имеют имя input+index, вызодные - output+index.&lt;br /&gt;
&lt;br /&gt;
Подробнее об элементах на странице [[InnerCore/Введение_в_GUI|Введение в GUI]].&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2481</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2481"/>
				<updated>2020-05-31T18:59:33Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Исправление ошибок &lt;br /&gt;
*Поддержка RecipeViewer &lt;br /&gt;
*В TileEntity верстака добавлен метод setWorkbench(sid) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#dddddd;&amp;quot;&amp;gt;(2.0 и выше)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Интеграция с RecipeViewer ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Добавление ваших кравтов происходит автомотически. ===&lt;br /&gt;
&lt;br /&gt;
В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
    bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
    x: 600,&lt;br /&gt;
    y: 170,&lt;br /&gt;
    RV:true,&lt;br /&gt;
    scale: 4&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для задания своего интерфейса в RecipeViewer прототип должен иметь поле&amp;amp;nbsp;RVGuiScreen с полями drawable и elements.&amp;lt;br/&amp;gt; Входные слоты имеют имя input+index, вызодные - output+index.&lt;br /&gt;
&lt;br /&gt;
Подробнее об элементах на странице [[InnerCore/Введение_в_GUI|Введение в GUI]].&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2480</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2480"/>
				<updated>2020-05-31T18:58:43Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Исправление ошибок &lt;br /&gt;
*Поддержка RecipeViewer &lt;br /&gt;
*В TileEntity верстака добавлен метод setWorkbench(sid) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#dddddd;&amp;quot;&amp;gt;(2.0 и выше)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Интеграция с RecipeViewer ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Добавление ваших кравтов происходит автомотически. ===&lt;br /&gt;
&lt;br /&gt;
В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
    bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
    x: 600,&lt;br /&gt;
    y: 170,&lt;br /&gt;
    RV:true,&lt;br /&gt;
    scale: 4&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для задания своего интерфейса в RecipeViewer прототип должен иметь поле&amp;amp;nbsp;RVGuiScreen с полями drawable и elements.&amp;lt;br/&amp;gt; Входные слоты имеют имя input+index, вызодные - output+index.&lt;br /&gt;
&lt;br /&gt;
Подробнее об элементах на странице [[InnerCore/Введение_в_GUI|Введение в GUI]].&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2479</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2479"/>
				<updated>2020-05-31T18:57:11Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Исправление ошибок &lt;br /&gt;
*Поддержка RecipeViewer &lt;br /&gt;
*В TileEntity верстака добавлен метод setWorkbench(sid) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#dddddd;&amp;quot;&amp;gt;(2.0 и выше)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Интеграция с RecipeViewer ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Добавление ваших кравтов происходит автомотически. ===&lt;br /&gt;
&lt;br /&gt;
В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
    bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
    x: 600,&lt;br /&gt;
    y: 170,&lt;br /&gt;
    RV:true,&lt;br /&gt;
    scale: 4&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для задания своего интерфейса в RecipeViewer прототип должен иметь поле&amp;amp;nbsp;RVGuiScreen с полями drawable и elements.&amp;lt;br/&amp;gt; Входные слоты имеют имя input+index, вызодные - output+index.&lt;br /&gt;
&lt;br /&gt;
Подробнее об элементах на странице [[InnerCore/Введение_в_GUI|Введение в GUI]].&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2478</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2478"/>
				<updated>2020-05-31T18:56:22Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Исправление ошибок &lt;br /&gt;
*Поддержка RecipeViewer &lt;br /&gt;
*В TileEntity верстака добавлен метод setWorkbench(sid) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#dddddd;&amp;quot;&amp;gt;(2.0 и выше)&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Интеграция с RecipeViewer ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Добавление ваших кравтов происходит автомотически. ===&lt;br /&gt;
&lt;br /&gt;
В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
    bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
    x: 600,&lt;br /&gt;
    y: 170,&lt;br /&gt;
    RV:true,&lt;br /&gt;
    scale: 4&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для задания своего интерфейса в RecipeViewer прототип должен иметь поле&amp;amp;nbsp;RVGuiScreen с полями drawable и elements.&amp;lt;br/&amp;gt; Входные слоты имеют имя input+index, вызодные - output+index.&lt;br /&gt;
&lt;br /&gt;
Подробнее об элементах на странице [[InnerCore/Введение_в_GUI|Введение в GUI]].&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2468</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2468"/>
				<updated>2020-05-13T09:21:03Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2305 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*StructuresAPI удален. &lt;br /&gt;
*Добавлен объект Rotate. Используется для сложных поворотов. &lt;br /&gt;
*Метод структуры get был изменен. struct.get(x, y, z, rotates, return_index). &lt;br /&gt;
*Метод структуры set был изменен. struct.set(x, y, z, rotate, progressively, time). &lt;br /&gt;
*Добавлен метод destroy(x, y, z, rotates, progressively, time) для структуры. &lt;br /&gt;
*Добавлен метод check(...) для структуры. Эквивалентен методу get(...). &lt;br /&gt;
*Добавлен метод Structure.setInWorld(name, ...). Альтернатива Structure.get(name).set(...). &lt;br /&gt;
*Добавлен метод Structure.destroyInWorld(name, ...). Альтернатива Structure.get(name).destroy(...). &lt;br /&gt;
*Добавлены константы Structure.PROGRESSIVELY и Structure.NOT_PROGRESSIVELY. &lt;br /&gt;
*Добавлены константы Structure.MIRROR_X, Structure.MIRROR_Y и Structure.MIRROR_Z. &lt;br /&gt;
*Исправлена установка блоков добавленных модом. &lt;br /&gt;
*Исправлено сохранение предметов и блоков. &lt;br /&gt;
*Исправлен поворот на 180 градусов по Y. &lt;br /&gt;
*Сохраняются TileEntity &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.4'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2410 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Дополнен перевод.&amp;amp;nbsp; &lt;br /&gt;
*Установка структуры производится в потоке, только если установка в режиме Structure.PROGRESSIVELY.&amp;amp;nbsp; &lt;br /&gt;
*Блоки воздуха в структуре больше не заменяются на камень. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Structure ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#f39c12;&amp;quot;&amp;gt;Добавлен с версии 1.2&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 115px;&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 248px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| Возвращает экземпляр объекта Structure с именем ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | setInWorld(string name, int x, int y, int z, array rotate, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структуру ''name'' в мире по координатам ''x,y,z'', с выбраным рандомно поворотм из массива ''rotate''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | destroyInWorld(string name, int x, int y, int z, array rotates, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структуру ''name'' в мире по координатам ''x,y,z'', &amp;amp;nbsp;с возможными поворотами ''rotates''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_NONE&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Y&lt;br /&gt;
| Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Y&lt;br /&gt;
| Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Y&lt;br /&gt;
| Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90X&lt;br /&gt;
| Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180X&lt;br /&gt;
| Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270X&lt;br /&gt;
| Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Z&lt;br /&gt;
| Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Z&lt;br /&gt;
| Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Z&lt;br /&gt;
| Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_RANDOM&lt;br /&gt;
| Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_ALL&lt;br /&gt;
| Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_Y&lt;br /&gt;
| Поворот по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| NOT_PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки не постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_X&lt;br /&gt;
| Отражение по оси X&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Y&lt;br /&gt;
| Отражение по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Z&lt;br /&gt;
| Отражение по оси Z&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Экземпляр&amp;amp;nbsp;Structure =====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;'''Только 1.2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, bool rotate_y)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, array rotates, bool return_index)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*return_index - Возвращать ли индекс найденного поворота(По стандарту false) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | check(int x, int y, int z, array rotates, bool return_index)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | getName()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Вернет имя структуры&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | save()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Сохранить структуру в файл&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;'''Только 1.2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | destroy(int x, int y, int z, array rotates, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между уничтожением&amp;amp;nbsp;блоков &lt;br /&gt;
&lt;br /&gt;
| Уничтожить структуру в мире&amp;amp;nbsp;по координатам x,y,z, с возможными поворотами rotates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | addBlock(x, y, z, block)&lt;br /&gt;
| &lt;br /&gt;
*x - Координата структуры по оси X относительно нулевой координаты структуры &lt;br /&gt;
*y - Координата структуры по оси Y относительно нулевой координаты структуры &lt;br /&gt;
*z - Координата структуры по оси Z относительно нулевой координаты структуры &lt;br /&gt;
*block - Блок &lt;br /&gt;
**id - ID блока &lt;br /&gt;
**data - Data блока   &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Добавить блок в структуру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Rotate ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#f39c12;&amp;quot;&amp;gt;Добавлен с версии 1.3&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Объект Rotate позволяет задовать сложные повороты, которые будут выполнятся при поиске/уничтожении/установке структуры.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var rotate = new Rotate();&lt;br /&gt;
rotate.addRotate(Structure.ROTATE_90Y);&lt;br /&gt;
rotate.addRotate(Structure.ROTATE_90X);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данный код позволит повернуть структуру сначала на 90 градусов по оси Y, затем по оси X.&lt;br /&gt;
&lt;br /&gt;
===== экземпляр&amp;amp;nbsp;Rotate =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Аргументы&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Описание&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| addRotate(array rotate)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
*rotate - Матрица поворота или экземпляр&amp;amp;nbsp;Rotate &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | Добавить поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| add(array rotate)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| addRotates(array rotates)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
*rotates - Массив митриц и экземпляров Rotate &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | Добавить повороты в указанном порядке&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| adds(array rotates)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2&amp;lt;br/&amp;gt; Удален в&amp;amp;nbsp;версии 1.3'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2467</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2467"/>
				<updated>2020-05-12T06:06:44Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2305 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*StructuresAPI удален. &lt;br /&gt;
*Добавлен объект Rotate. Используется для сложных поворотов. &lt;br /&gt;
*Метод структуры get был изменен. struct.get(x, y, z, rotates, return_index). &lt;br /&gt;
*Метод структуры set был изменен. struct.set(x, y, z, rotate, progressively, time). &lt;br /&gt;
*Добавлен метод destroy(x, y, z, rotates, progressively, time) для структуры. &lt;br /&gt;
*Добавлен метод check(...) для структуры. Эквивалентен методу get(...). &lt;br /&gt;
*Добавлен метод Structure.setInWorld(name, ...). Альтернатива Structure.get(name).set(...). &lt;br /&gt;
*Добавлен метод Structure.destroyInWorld(name, ...). Альтернатива Structure.get(name).destroy(...). &lt;br /&gt;
*Добавлены константы Structure.PROGRESSIVELY и Structure.NOT_PROGRESSIVELY. &lt;br /&gt;
*Добавлены константы Structure.MIRROR_X, Structure.MIRROR_Y и Structure.MIRROR_Z. &lt;br /&gt;
*Исправлена установка блоков добавленных модом. &lt;br /&gt;
*Исправлено сохранение предметов и блоков. &lt;br /&gt;
*Исправлен поворот на 180 градусов по Y. &lt;br /&gt;
*Сохраняются TileEntity &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Structure ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#f39c12;&amp;quot;&amp;gt;Добавлен с версии 1.2&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 115px;&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 248px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| Возвращает экземпляр объекта Structure с именем ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | setInWorld(string name, int x, int y, int z, array rotate, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структуру ''name'' в мире по координатам ''x,y,z'', с выбраным рандомно поворотм из массива ''rotate''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | destroyInWorld(string name, int x, int y, int z, array rotates, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структуру ''name'' в мире по координатам ''x,y,z'', &amp;amp;nbsp;с возможными поворотами ''rotates''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_NONE&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Y&lt;br /&gt;
| Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Y&lt;br /&gt;
| Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Y&lt;br /&gt;
| Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90X&lt;br /&gt;
| Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180X&lt;br /&gt;
| Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270X&lt;br /&gt;
| Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Z&lt;br /&gt;
| Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Z&lt;br /&gt;
| Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Z&lt;br /&gt;
| Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_RANDOM&lt;br /&gt;
| Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_ALL&lt;br /&gt;
| Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_Y&lt;br /&gt;
| Поворот по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| NOT_PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки не постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_X&lt;br /&gt;
| Отражение по оси X&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Y&lt;br /&gt;
| Отражение по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Z&lt;br /&gt;
| Отражение по оси Z&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Экземпляр&amp;amp;nbsp;Structure =====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;'''Только 1.2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, bool rotate_y)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, array rotates, bool return_index)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*return_index - Возвращать ли индекс найденного поворота(По стандарту false) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | check(int x, int y, int z, array rotates, bool return_index)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | getName()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Вернет имя структуры&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | save()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Сохранить структуру в файл&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;'''Только 1.2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | destroy(int x, int y, int z, array rotates, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между уничтожением&amp;amp;nbsp;блоков &lt;br /&gt;
&lt;br /&gt;
| Уничтожить структуру в мире&amp;amp;nbsp;по координатам x,y,z, с возможными поворотами rotates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | addBlock(x, y, z, block)&lt;br /&gt;
| &lt;br /&gt;
*x - Координата структуры по оси X относительно нулевой координаты структуры &lt;br /&gt;
*y - Координата структуры по оси Y относительно нулевой координаты структуры &lt;br /&gt;
*z - Координата структуры по оси Z относительно нулевой координаты структуры &lt;br /&gt;
*block - Блок &lt;br /&gt;
**id - ID блока &lt;br /&gt;
**data - Data блока   &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Добавить блок в структуру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Rotate ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#f39c12;&amp;quot;&amp;gt;Добавлен с версии 1.3&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Объект Rotate позволяет задовать сложные повороты, которые будут выполнятся при поиске/уничтожении/установке структуры.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var rotate = new Rotate();&lt;br /&gt;
rotate.addRotate(Structure.ROTATE_90Y);&lt;br /&gt;
rotate.addRotate(Structure.ROTATE_90X);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данный код позволит повернуть структуру сначала на 90 градусов по оси Y, затем по оси X.&lt;br /&gt;
&lt;br /&gt;
===== экземпляр&amp;amp;nbsp;Rotate =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Аргументы&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Описание&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| addRotate(array rotate)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
*rotate - Матрица поворота или экземпляр&amp;amp;nbsp;Rotate &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | Добавить поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| add(array rotate)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| addRotates(array rotates)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
*rotates - Массив митриц и экземпляров Rotate &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | Добавить повороты в указанном порядке&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| adds(array rotates)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2&amp;lt;br/&amp;gt; Удален в&amp;amp;nbsp;версии 1.3'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2454</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2454"/>
				<updated>2020-04-29T09:27:06Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Исправление ошибок &lt;br /&gt;
*Поддержка RecipeViewer &lt;br /&gt;
*В TileEntity верстака добавлен метод setWorkbench(sid) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Интеграция с RecipeViewer ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Добавление ваших кравтов происходит автомотически. ===&lt;br /&gt;
&lt;br /&gt;
В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
    bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
    x: 600,&lt;br /&gt;
    y: 170,&lt;br /&gt;
    RV:true,&lt;br /&gt;
    scale: 4&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для задания своего интерфейса в RecipeViewer прототип должен иметь поле&amp;amp;nbsp;RVGuiScreen с полями drawable и elements.&amp;lt;br/&amp;gt; Входные слоты имеют имя input+index, вызодные - output+index.&lt;br /&gt;
&lt;br /&gt;
Подробнее об элементах на странице [[InnerCore/Введение_в_GUI|Введение в GUI]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2453</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2453"/>
				<updated>2020-04-29T09:26:38Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Исправление ошибок &lt;br /&gt;
*Поддержка RecipeViewer &lt;br /&gt;
*В TileEntity верстака добавлен метод setWorkbench(sid) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Интеграция с RecipeViewer ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Добавление ваших кравтов происходит автомотически. ===&lt;br /&gt;
&lt;br /&gt;
В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
    bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
    x: 600,&lt;br /&gt;
    y: 170,&lt;br /&gt;
    RV:true,&lt;br /&gt;
    scale: 4&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для задания своего интерфейса в RecipeViewer прототип должен иметь поле&amp;amp;nbsp;RVGuiScreen с полями drawable и elements.&amp;lt;br/&amp;gt; Входные слоты имеют имя input+index, вызодные - output+index.&lt;br /&gt;
&lt;br /&gt;
Подробнее об элементах на странице [[InnerCore/Введение_в_GUI|Введение в GUI]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2452</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2452"/>
				<updated>2020-04-29T09:24:49Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Интеграция с RecipeViewer ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Добавление ваших кравтов происходит автомотически. ===&lt;br /&gt;
&lt;br /&gt;
В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
    bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
    x: 600,&lt;br /&gt;
    y: 170,&lt;br /&gt;
    RV:true,&lt;br /&gt;
    scale: 4&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для задания своего интерфейса в RecipeViewer прототип должен иметь поле&amp;amp;nbsp;RVGuiScreen с полями drawable и elements.&amp;lt;br/&amp;gt; Входные слоты имеют имя input+index, вызодные - output+index.&lt;br /&gt;
&lt;br /&gt;
Подробнее об элементах на странице [[InnerCore/Введение_в_GUI|Введение в GUI]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2451</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2451"/>
				<updated>2020-04-29T09:24:04Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Интеграция с RecipeViewer ===&lt;br /&gt;
&lt;br /&gt;
=== Добавление ваших кравтов происходит автомотически. В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV. ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
    bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
    x: 600,&lt;br /&gt;
    y: 170,&lt;br /&gt;
    RV:true,&lt;br /&gt;
    scale: 4&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для задания своего интерфейса в RecipeViewer прототип должен иметь поле&amp;amp;nbsp;RVGuiScreen с полями drawable и elements.&amp;lt;br/&amp;gt; Входные слоты имеют имя input+index, вызодные - output+index.&lt;br /&gt;
&lt;br /&gt;
Подробнее об элементах на странице [[InnerCore/Введение_в_GUI|Введение в GUI]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:80LK&amp;diff=2450</id>
		<title>Участник:80LK</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:80LK&amp;diff=2450"/>
				<updated>2020-04-28T23:44:05Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
= Вклад =&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;[https://wiki.mineprogramming.org/index.php/Служебная:Вклад/80LK Вклад в WiKi.]&amp;lt;/div&amp;gt; &lt;br /&gt;
== Разработка: ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Библиотеки ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;[[InnerCore/Libs/SoundAPI|SoundAPI]]&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;[[InnerCore/Libs/ShootLib|ShootLib]]&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;[[InnerCore/Libs/MobLib|MobLib]]&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;[[InnerCore/Libs/RecipeTELib|RecipeTELib]]&amp;lt;/div&amp;gt; [[InnerCore/Libs/StructuresAPI|StructuresAPI]] &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Моды ===&lt;br /&gt;
&lt;br /&gt;
[https://icmods.mineprogramming.org/mod?id=295 WorldEdit]&amp;lt;br/&amp;gt; [https://icmods.mineprogramming.org/mod?id=299 DemoShootLib]&amp;lt;br/&amp;gt; [https://icmods.mineprogramming.org/mod?id=397 WolfGunsMod]&amp;lt;br/&amp;gt; [https://icmods.mineprogramming.org/mod?id=495 S.T.A.L.K.E.R.PE]&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ModPE ===&lt;br /&gt;
&lt;br /&gt;
[[ModPE/File|FileAPI]]&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2449</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2449"/>
				<updated>2020-04-28T23:37:53Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Интеграция с RecipeViewer ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(255, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!: Это предрелизная информация. Актуальна для будущей версии.'''&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Добавление ваших кравтов происходит автомотически. В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
    bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
    x: 600,&lt;br /&gt;
    y: 170,&lt;br /&gt;
    RV:true,&lt;br /&gt;
    scale: 4&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для задания своего интерфейса в RecipeViewer прототип должен иметь поле&amp;amp;nbsp;RVGuiScreen с полями drawable и elements.&amp;lt;br/&amp;gt; Входные слоты имеют имя input+index, вызодные - output+index.&lt;br /&gt;
&lt;br /&gt;
Подробнее об элементах на странице [[InnerCore/Введение_в_GUI|Введение в GUI]].&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2448</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2448"/>
				<updated>2020-04-28T23:36:02Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Интеграция с RecipeViewer ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(255, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Добавление ваших кравтов происходит автомотически. В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
    bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
    x: 600,&lt;br /&gt;
    y: 170,&lt;br /&gt;
    RV:true,&lt;br /&gt;
    scale: 4&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для задания своего интерфейса в RecipeViewer прототип должен иметь поле&amp;amp;nbsp;RVGuiScreen с полями drawable и elements.&amp;lt;br/&amp;gt; Входные слоты имеют имя input+index, вызодные - output+index.&lt;br /&gt;
&lt;br /&gt;
Подробнее об элементах на странице [[InnerCore/Введение_в_GUI|Введение в GUI]].&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2447</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2447"/>
				<updated>2020-04-28T23:33:45Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Интеграция с RecipeViewer ===&lt;br /&gt;
&lt;br /&gt;
АЛЕРТ&lt;br /&gt;
&lt;br /&gt;
Добавление ваших кравтов происходит автомотически. В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;{&lt;br /&gt;
    type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
    bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
    x: 600,&lt;br /&gt;
    y: 170,&lt;br /&gt;
    RV:true,&lt;br /&gt;
    scale: 4&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для задания своего интерфейса в RecipeViewer прототип должен иметь поле&amp;amp;nbsp;RVGuiScreen с полями drawable и elements.&amp;lt;br/&amp;gt; Входные слоты имеют имя input+index, вызодные - output+index.&lt;br /&gt;
&lt;br /&gt;
Подробнее об элементах на странице [[InnerCore/Введение_в_GUI|Введение в GUI]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2446</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2446"/>
				<updated>2020-04-28T23:33:05Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Интеграция с RecipeViewer ===&lt;br /&gt;
&lt;br /&gt;
АЛЕРТ&lt;br /&gt;
&lt;br /&gt;
Добавление ваших кравтов происходит автомотически. В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;{&lt;br /&gt;
    type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
    bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
    x: 600,&lt;br /&gt;
    y: 170,&lt;br /&gt;
    RV:true,&lt;br /&gt;
    scale: 4&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для задания своего интерфейса в RecipeViewer прототип должен иметь поле&amp;amp;nbsp;RVGuiScreen с полями drawable и elements.&amp;lt;br/&amp;gt; Входные слоты имеют имя input+index, вызодные - output+index.&lt;br /&gt;
&lt;br /&gt;
Подробнее об элементах на странице [[InnerCore/Введение_в_GUI|Введение в GUI]].&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2444</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2444"/>
				<updated>2020-04-28T23:14:59Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Интеграция с RecipeViewer ===&lt;br /&gt;
&lt;br /&gt;
Добавление ваших кравтов происходит автомотически. В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;{&lt;br /&gt;
    type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
    bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
    x: 600,&lt;br /&gt;
    y: 170,&lt;br /&gt;
    RV:true,&lt;br /&gt;
    scale: 4&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2443</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2443"/>
				<updated>2020-04-28T23:11:01Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Интеграция с RecipeViewer ===&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2423</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2423"/>
				<updated>2020-03-29T16:47:58Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2422</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2422"/>
				<updated>2020-03-29T16:47:12Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2421</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2421"/>
				<updated>2020-03-29T16:46:21Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2420</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2420"/>
				<updated>2020-03-29T16:45:10Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;myInputSlot&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;myOutputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Furnace&amp;quot;, {&lt;br /&gt;
    time:5 * 20, //Время крафта&lt;br /&gt;
    slots:1, //Кол-во слотов&lt;br /&gt;
    GuiScreen:Furnace, //Интерфейс печи&lt;br /&gt;
    input:[&amp;quot;myInputSlot&amp;quot;], //Входные слоты&lt;br /&gt;
    output:&amp;quot;myOutputSlot&amp;quot;, //Слот результата&lt;br /&gt;
    scale:&amp;quot;timerScale&amp;quot;, //Шкала прогресса&lt;br /&gt;
    condition:function(){ //Условие работы верстака&lt;br /&gt;
        return this.data.power&lt;br /&gt;
    },&lt;br /&gt;
    //Параметры TileEntity&lt;br /&gt;
    defaultValues:{&lt;br /&gt;
        power:false,&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Добавление рецептов для&amp;amp;nbsp;печи&lt;br /&gt;
&lt;br /&gt;
Создание бесформенных рецептов для верстака происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result,&amp;amp;nbsp; ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*ingredients - Массив&amp;amp;nbsp;ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280}, [{id:5}]);&lt;br /&gt;
RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:281}, [{id:1}], .2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2419</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2419"/>
				<updated>2020-03-29T16:38:17Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2418</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2418"/>
				<updated>2020-03-29T16:37:36Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addShapeRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addShapeRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
    }, [&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
    ], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:1&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2417</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2417"/>
				<updated>2020-03-29T16:31:56Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: rgb(204, 0, 0);&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff;&amp;quot;&amp;gt;'''ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужно&amp;amp;nbsp;называть &amp;quot;'''''inputSlot'''''&amp;quot;+&amp;amp;nbsp;'''порядковое число'''&amp;amp;nbsp;слота, начиная с нуля, иначе указать имена слотов(или имя, если используются порядковые числа) при регистрации.&amp;lt;br/&amp;gt; Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;,&amp;amp;nbsp;иначе указать имя слота при регистрации.&amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerWorkbench(&amp;quot;Workbench_Grid&amp;quot;,//SID блока&lt;br /&gt;
{&lt;br /&gt;
    rows:4,//Кол-во строк сетки&lt;br /&gt;
    cols:4,//Кол-во столбцов сетки&lt;br /&gt;
    GuiScreen:Workbench_Grid //Интерфейс верстака&lt;br /&gt;
    //Так же тут можно(И нужно) описать поля TileEntity&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2416</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2416"/>
				<updated>2020-03-29T16:23:46Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана &lt;br /&gt;
*Добавлена возможность создавать бесформенные рецепты &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2415</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2415"/>
				<updated>2020-03-29T16:19:46Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string name, object Info)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*name - Имя верстака &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак с именем name не привязывая его к блоку&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.registerWorkbench(string block_sid, object TE_Prototype)&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid - Строковый ID блока &lt;br /&gt;
*TE_Prototype - объект прототипа TE &lt;br /&gt;
**int columns &amp;amp;#124;&amp;amp;#124; cols - кол-ыо столбцов сетки &lt;br /&gt;
**int rows - кол-во строк сетки &lt;br /&gt;
**int slots - кол-во слотов(В место cols и rows) &lt;br /&gt;
**UIWindow gui - Окно для TileEntity &lt;br /&gt;
**int&amp;amp;nbsp;time - Кол-во тиков, нужное для крафта &lt;br /&gt;
**string output - имя слота для результата(По стандарту outputSlot) &lt;br /&gt;
**string&amp;amp;nbsp;input - префикс слотов&amp;amp;nbsp;входных предметов(По стандарту inputSlot) &lt;br /&gt;
**string[]&amp;amp;nbsp;input - массив имен входных слотов. &lt;br /&gt;
**string&amp;amp;nbsp;scale - Имя шкалы используемое для отображения прогресса &lt;br /&gt;
**function&amp;amp;nbsp;condition - функция-условие функционирования верстака   &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Регистрирует верстак для блока с SID block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | bool&amp;amp;nbsp;RecipeTE.isRegistered(string block_sid)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Вернет true, если верстак с строковым ID block_sid был зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addRecipe(string block_sid, object result, object[] ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*ingridients - Массив объектов ингредиента &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавлет безформенный рецепт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Строка символов, формирующих рецепт(Предметы разложены в слотак в порядке от 0 к N) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.addShapeRecipe(string block_sid, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*block_sid -&amp;amp;nbsp;Строковый ID блока &lt;br /&gt;
*result - результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int data - дата предмета(По стандарту 0) &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)   &lt;br /&gt;
*recipe - Массив строка символов, формирующих рецепт(элемент массива - строка сетки, элемент строки - столбец сетки) &lt;br /&gt;
*ingridients - Объект описывающий символы рецепта как ингредиент&amp;lt;br/&amp;gt; Объект ингредиента: &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во предметоа(По стандарту 1)&amp;amp;nbsp; &lt;br /&gt;
**int data - дата предмета(По стандарту 0)   &lt;br /&gt;
*time_multiplier - множитель времени крафта(По стандарту 1) &lt;br /&gt;
*craft - Функция крафта(По стандарту RecipeTE.defaultCraftEvent) &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Добавляет крафт для верстака block_sid&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | '''2.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; vertical-align: top;&amp;quot; | void RecipeTE.defaultCraftEvent(TileEntity TE)&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | &lt;br /&gt;
*TE - TileEntity верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;vertical-align: top;&amp;quot; | Стандартная функция крафта&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2414</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2414"/>
				<updated>2020-03-29T15:33:17Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&lt;br /&gt;
==== Регистрация верстака ====&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;верстака ====&lt;br /&gt;
&lt;br /&gt;
=== Электрическая печь(Редстоун сигнал) ===&lt;br /&gt;
&lt;br /&gt;
==== Регистрация печи ====&lt;br /&gt;
&lt;br /&gt;
==== Добавление рецептов для&amp;amp;nbsp;печи ====&lt;br /&gt;
&lt;br /&gt;
=== Полная документация&amp;lt;br/&amp;gt; &amp;amp;nbsp; ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2413</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2413"/>
				<updated>2020-03-29T15:30:16Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2412</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2412"/>
				<updated>2020-03-29T15:29:13Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полная документация ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2411</id>
		<title>InnerCore/Libs/RecipeTELib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2411"/>
				<updated>2020-03-29T15:27:09Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'''RecipeTELib'''''&amp;amp;nbsp;''- библиотека, упрощающая создание верстаков и печей.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | '''Ссылка'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Изменения'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wolf___team?w=wall-80513593_2247 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Первая версия &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2248 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerGridCraftTable and registerTimerGridCraftTable &lt;br /&gt;
*Слияние методов&amp;amp;nbsp;registerCraftTable and registerTimerCraftTable &lt;br /&gt;
*Исправлено имя метода с&amp;amp;nbsp;getTickResipes на getTickRecipes &lt;br /&gt;
*Добавлена возможность использовать свои идентификаторы элементов &lt;br /&gt;
*Для рецептов добавлен параметр множителя времени крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://vk.com/wall-80513593_2253 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*Удален метод registerTimerGridCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод registerTimerCraftTable&amp;amp;nbsp; &lt;br /&gt;
*Удален метод getTickResipes &lt;br /&gt;
*Исправлена смена крафта у печей &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 63px;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 57px;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/RecipeTileEntityLib.js GitHub]&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Документация ==&lt;br /&gt;
&lt;br /&gt;
== Документация &amp;lt;span style=&amp;quot;color:#95a5a6;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:smaller;&amp;quot;&amp;gt;(до версии 2.0)&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;RecipeTileEntityLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
=== Верстак ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание верстака ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Workbench_Grid&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;Workbench_Grid&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Workbench Grid&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;work_table_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;work_table_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 1], // front&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;work_table_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:&amp;amp;nbsp;'''Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть &amp;quot;'''''inputSlot'''''&amp;quot;+ '''порядковое число''' слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавать '''''isValid''''' для outputSlot как&amp;amp;nbsp;'''''RecipeTE.outputSlotValid'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Workbench_Grid = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Workbench Grid 4x4&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170, scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:350, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot1&amp;quot;:{x:410, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot2&amp;quot;:{x:470, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot3&amp;quot;:{x:530, y:80, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot4&amp;quot;:{x:350, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot5&amp;quot;:{x:410, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot6&amp;quot;:{x:470, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot7&amp;quot;:{x:530, y:140, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot8&amp;quot;:{x:350, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot9&amp;quot;:{x:410, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot10&amp;quot;:{x:470, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot11&amp;quot;:{x:530, y:200, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;inputSlot12&amp;quot;:{x:350, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot13&amp;quot;:{x:410, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot14&amp;quot;:{x:470, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &amp;quot;inputSlot15&amp;quot;:{x:530, y:260, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак, есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''''RecipeTE.registerGridCraftTable(description);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable({&lt;br /&gt;
    name:&amp;quot;Workbench_Grid&amp;quot;,&lt;br /&gt;
    rows:4,&lt;br /&gt;
    cols:4&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*​​'''''RecipeTE.registerGridCraftTable(name, columns, rows);''''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerGridCraftTable(&amp;quot;Workbench_Grid&amp;quot;, 4, 4);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе тика мы вызываем&amp;amp;nbsp;'''''RecipeTE.getTickResipes(name, TileEntity)&amp;amp;nbsp;''''':&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Workbench_Grid&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Workbench_Grid;&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Workbench_Grid&amp;quot;, this);&lt;br /&gt;
    }  &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для верстака ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака с сеткой происходит через метод&amp;amp;nbsp;'''''RecipeTE.addGridRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Массив строк крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id:280,&lt;br /&gt;
    count:1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aa&amp;quot;,&lt;br /&gt;
    &amp;quot;aa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a:{&lt;br /&gt;
        id:5&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
RecipeTE.addGridRecipe(&amp;quot;Workbench_Grid&amp;quot;, {&lt;br /&gt;
    id: 281,&lt;br /&gt;
    count: 1&lt;br /&gt;
},&lt;br /&gt;
[   &amp;quot;aaaa&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;a  a&amp;quot;,&lt;br /&gt;
    &amp;quot;aaaa&amp;quot;&lt;br /&gt;
], {&lt;br /&gt;
    a: {&lt;br /&gt;
        id: 1,&lt;br /&gt;
        data:0&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Электрическая(редстоун сигнал) печь ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Создание печи ====&lt;br /&gt;
&lt;br /&gt;
Для начала создаем блок:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IDRegistry.genBlockID(&amp;quot;Furnace&amp;quot;);&lt;br /&gt;
Block.createBlockWithRotation(&amp;quot;Furnace&amp;quot;, [{&lt;br /&gt;
    name: &amp;quot;Furnace&amp;quot;, &lt;br /&gt;
    texture: [&lt;br /&gt;
        [&amp;quot;iron_furnace_bottom&amp;quot;, 0], // bottom&lt;br /&gt;
        [&amp;quot;iron_furnace_top&amp;quot;, 0], // top&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // back&lt;br /&gt;
        [&amp;quot;iron_furnace_front&amp;quot;, 0], // front&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0], // left&lt;br /&gt;
        [&amp;quot;iron_furnace_side&amp;quot;, 0]  // right&lt;br /&gt;
    ], &lt;br /&gt;
    inCreative: true &lt;br /&gt;
}]);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем создаем наш интерфейс:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:small;&amp;quot;&amp;gt;'''!ВАЖНО!:''' Слоты, в которые нужно ложить предмет нужна ОБЯЗАТЕЛЬНО называть ''&amp;quot;'''inputSlot'''&amp;quot;''+ '''порядковое число '''слота, начиная с нуля. Слот результата должен иметь название &amp;quot;'''''outputSlot'''''&amp;quot;, так же стоит задавть '''''isValid'''''для outputSlot как '''''RecipeTE.outputSlotValid''''', для шкалы процесса использовать имя '''''&amp;quot;timerScale&amp;quot;'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var Furnace = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {text: {text: &amp;quot;Furnace&amp;quot;}},&lt;br /&gt;
        inventory: {standart:true},&lt;br /&gt;
        background: {standart: true}&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [{&lt;br /&gt;
        type: &amp;quot;bitmap&amp;quot;,&lt;br /&gt;
        bitmap: &amp;quot;arrow&amp;quot;,&lt;br /&gt;
        x: 600,&lt;br /&gt;
        y: 170,&lt;br /&gt;
        scale: 4&lt;br /&gt;
    }],&lt;br /&gt;
    elements:{&lt;br /&gt;
        &amp;quot;inputSlot0&amp;quot;:{x:530, y:170, type:&amp;quot;slot&amp;quot;},&lt;br /&gt;
        &lt;br /&gt;
        &amp;quot;outputSlot&amp;quot;:{x:698, y:170, type:&amp;quot;slot&amp;quot;, isValid:RecipeTE.outputSlotValid },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;timerScale&amp;quot;:{&lt;br /&gt;
            type: &amp;quot;scale&amp;quot;,&lt;br /&gt;
            x: 600,&lt;br /&gt;
            y: 170,&lt;br /&gt;
            direction:0,&lt;br /&gt;
            bitmap: &amp;quot;arrow_scale&amp;quot;,&lt;br /&gt;
            scale: 4&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Затем регистрируем наш верстак(печь), есть два способа:&lt;br /&gt;
&lt;br /&gt;
*'''RecipeTE.registerTimerCraftTable(description);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable({&lt;br /&gt;
    name:&amp;quot;Furnace&amp;quot;,&lt;br /&gt;
    cols:1,&lt;br /&gt;
    timer:5*20&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''​​RecipeTE.registerTimerCraftTable(name, columns, timer);''' &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.registerTimerCraftTable(&amp;quot;Furnace&amp;quot;, 1, 5*20);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь нам следует зарегистрировать TileEntity. В getGuiScreen мы возвращаем наше окно. В методе ''redstone ''мы будем проверять, сльный ли редстоун-сигнал и включать машину. В методе тика мы вызываем '''''RecipeTE.getTickResipes(name, TileEntity, condition)''''' с нашим условием:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;TileEntity.registerPrototype(BlockID[&amp;quot;Furnace&amp;quot;], {&lt;br /&gt;
    getGuiScreen: function(){&lt;br /&gt;
        return Furnace;&lt;br /&gt;
    },&lt;br /&gt;
    redstone: function(params){&lt;br /&gt;
        if(params.power &amp;lt; 10)&lt;br /&gt;
            this.data.power = false;&lt;br /&gt;
        else&lt;br /&gt;
            this.data.power = true;&lt;br /&gt;
    },&lt;br /&gt;
    tick:function(){&lt;br /&gt;
        RecipeTE.getTickResipes(&amp;quot;Furnace&amp;quot;, this, function(TE){&lt;br /&gt;
            return TE.data.power;&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
==== Создание рецептов для печи ====&lt;br /&gt;
&lt;br /&gt;
Создание рецептов для верстака(печи) без сетки происходит через метод&amp;amp;nbsp;'''''RecipeTE.addRecipe(name_workbench, result, recipe, ingredients)''''', где:&lt;br /&gt;
&lt;br /&gt;
*name_workbench - имя верстака &lt;br /&gt;
*result - объект результата &lt;br /&gt;
**id - ID предмета &lt;br /&gt;
**count - Кол-во предмета &lt;br /&gt;
**data - Дата предмета   &lt;br /&gt;
*recipe - Строка крафта &lt;br /&gt;
*ingredients - объект ингредиентов &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;RecipeTE.addRecipe(&amp;quot;Furnace&amp;quot;, {id:280, count:1}, &amp;quot;a&amp;quot;, {a:{id:5}});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Полная документация ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;width: 326px; text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 200px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerGridCraftTable(string name, int columns, int rows, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов(Версия 1) &lt;br /&gt;
**slots - Кол-во слотов(С версии 1.1) &lt;br /&gt;
**elements - Объект с названиями элементов(С версии 1.1, не обязательный) &lt;br /&gt;
***input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
***output - Строка названия выходного слото &lt;br /&gt;
***progress - Строка названия шкалы прогресса   &lt;br /&gt;
**time -&amp;amp;nbsp;Длительность производства(С версии 1.1, не обязательный)   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;5&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerCraftTable(string name, int slots, object elements, int time)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*elements - Объект с названиями элементов &lt;br /&gt;
**input - Массив строк(Кол-во жлементов должно быть равно ''columns * row'') или строка(Слоты должны иметь название ''elements.input'' + индекс)&amp;amp;nbsp;названия входных слотов &lt;br /&gt;
**output - Строка названия выходного слото &lt;br /&gt;
**progress - Строка названия шкалы прогресса   &lt;br /&gt;
*time - Длительность производства &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1&amp;lt;br/&amp;gt; &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во колонок &lt;br /&gt;
**rows - Кол-во строк &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака с сеткой, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | &lt;br /&gt;
'''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerGridCraftTable(string name, int columns, int rows, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*columns - Кол-во колонок &lt;br /&gt;
*rows - Кол-во строк &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(object description)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*description- Описание верстака &lt;br /&gt;
**name - Идентификатор/имя верстака &lt;br /&gt;
**columns/cols - Кол-во слотов &lt;br /&gt;
**timer - Время производства в тиках   &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Регистрация верстака без сетки, требующий время на производство&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.registerTimerCraftTable(string name, int slots, int timer)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*slots&amp;amp;nbsp;- Кол-во слотов &lt;br /&gt;
*timer - Время производства в тиках &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.isRegistered(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет true, если верстак зарегистрирован, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getMechanism(string name)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name -&amp;amp;nbsp;Идентификатор/имя верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Вернет описание верстака если он сущечтвует, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addRecipe(string name, object result, string recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Строка, образующая&amp;amp;nbsp;рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier - Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;4&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Добавить крафт для верстака с сеткой ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*craft - Функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.addGridRecipe(string name, object result, string[] recipe, object ingridients, int time_multiplier, function craft)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*result&amp;amp;nbsp;- Результат крафта &lt;br /&gt;
**int id - ID предмета &lt;br /&gt;
**int count - Кол-во &lt;br /&gt;
**int data - Дата предмета   &lt;br /&gt;
*recipe&amp;amp;nbsp;- Массив строк, образующие рецепт &lt;br /&gt;
*ingridients&amp;amp;nbsp;- Объект ингридиентов &lt;br /&gt;
*time_multiplier&amp;amp;nbsp;- Множитель времения(Только для верстаков с временем производства) &lt;br /&gt;
*craft - функция крафта &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&amp;lt;br/&amp;gt; ''Устаревшее в 1.1''&amp;lt;br/&amp;gt; ''&amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;background-color:#ffffff;&amp;quot;&amp;gt;Удалено в 1.2&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickResipes(string name, TileEntity TE, function condition)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*name - Идентификатор/имя верстака &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*condition -&amp;amp;nbsp;Функция условия (Не обязательный) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 200px;&amp;quot; | Обработчик тика для TileEntity&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.getTickReсipes(string name, TileEntity TE, function condition)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 709px;&amp;quot; | RecipeTE.outputSlotValid()&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Функция проверки слота результата&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 121px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 326px;&amp;quot; | RecipeTE.defaultCraftEvent(TileEntity TE, object workbench)&lt;br /&gt;
| style=&amp;quot;width: 379px;&amp;quot; | &lt;br /&gt;
*TE&amp;amp;nbsp;- TileEntity &lt;br /&gt;
*workbench - Объект описания верстака &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 200px;&amp;quot; | Стандартная функция крафта (Для методов RecipeTE.addRecipe и RecipeTE.addGridRecipe)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%BB%D0%BB%D0%B1%D0%B5%D0%BA%D0%BE%D0%B2&amp;diff=2370</id>
		<title>InnerCore/Список коллбеков</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%BB%D0%BB%D0%B1%D0%B5%D0%BA%D0%BE%D0%B2&amp;diff=2370"/>
				<updated>2020-02-20T18:14:52Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Собыитя мира==&lt;br /&gt;
===LevelCreated===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('LevelCreated', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при создании мира&lt;br /&gt;
&lt;br /&gt;
===LevelSelected===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('LevelSelected', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при выборе мира&lt;br /&gt;
&lt;br /&gt;
===LevelPreLoaded===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('LevelPreLoaded', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при предзагрузке мира&lt;br /&gt;
&lt;br /&gt;
===LevelLoaded===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('LevelLoaded', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при полной загрузке мира&lt;br /&gt;
&lt;br /&gt;
===LevelPreLeft===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('LevelPreLeft', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при предвыходе из мира&lt;br /&gt;
&lt;br /&gt;
===LevelLeft===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('LevelLeft', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при полном выходе из мира&lt;br /&gt;
&lt;br /&gt;
==Сохранения Saver==&lt;br /&gt;
===ReadSaves===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('ReadSaves', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при чтении данных&lt;br /&gt;
&lt;br /&gt;
===WriteSaves===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('WriteSaves', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при сохранении данных&lt;br /&gt;
&lt;br /&gt;
==Генерация==&lt;br /&gt;
===GenerateNetherChunk===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('GenerateNetherChunk', function (chunkX, chunkZ) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при генерации чанка в Аду&lt;br /&gt;
&lt;br /&gt;
===GenerateEndChunk===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('GenerateEndChunk', function (chunkX, chunkZ) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при генерации чанка в Краю&lt;br /&gt;
&lt;br /&gt;
===GenerateChunk===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('GenerateChunk', function (chunkX, chunkZ) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при генерации чанка в Верхнем мире&lt;br /&gt;
&lt;br /&gt;
===GenerateChunkUndeground===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('GenerateChunkUndeground', function (chunkX, chunkZ) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при генерации чанка в Верхнем мире под землей&lt;br /&gt;
&lt;br /&gt;
==Игровой тик==&lt;br /&gt;
===Tick===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('Tick', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается каждый игровой тик, очень нагружен и нестабилен&lt;br /&gt;
&lt;br /&gt;
==Блок==&lt;br /&gt;
===DestroyBlock===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('DestroyBlock', function (coords, block, player) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при полном разрушении блока&lt;br /&gt;
&lt;br /&gt;
===DestroyBlockStart===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('DestroyBlockStart', function (coords, block, player) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при начале разрушения блока&lt;br /&gt;
&lt;br /&gt;
===DestroyBlockContinue===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('DestroyBlockContinue', function (coords, block, progress, player) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при продолжении разрушения блока&lt;br /&gt;
&lt;br /&gt;
===Explosion===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('Explosion', function (coords, params) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при любом взрыве&lt;br /&gt;
&lt;br /&gt;
===RedstoneSignal===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('RedstoneSignal', function (coords, params, block) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при передаче редстоун сигнала&lt;br /&gt;
&lt;br /&gt;
===BuildBlock===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('BuildBlock', function (coords, block, entity) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при постановке блока&lt;br /&gt;
&lt;br /&gt;
===CustomBlockTessellation===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('CustomBlockTessellation', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при изменении 3д модели кастомного блока&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Чат==&lt;br /&gt;
===NativeCommand===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('NativeCommand', function (str) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при вызове нативной команды&lt;br /&gt;
&lt;br /&gt;
===ClientChat===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('ClientChat', function (str) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при отправке любого сообщения в чат&lt;br /&gt;
&lt;br /&gt;
===ServerChat===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('ServerChat', function (str) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при отправке любого сообщения в сервеный чат&lt;br /&gt;
&lt;br /&gt;
==Предмет==&lt;br /&gt;
===ItemUse===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('ItemUse', function (coords, item, block) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при использовании (тапа) предмета по блоку&lt;br /&gt;
&lt;br /&gt;
===FoodEaten===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('FoodEaten', function (food, satRatio) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при съедении еды&lt;br /&gt;
&lt;br /&gt;
===ItemIconOverride===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('ItemIconOverride', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при динамичном изменении иконки предмета&lt;br /&gt;
&lt;br /&gt;
===ItemNameOverride===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('ItemNameOverride', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при динамичном изменении имени предмета&lt;br /&gt;
&lt;br /&gt;
===ItemUseNoTarget===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('ItemUseNoTarget', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при использовании предмета в воздухе&lt;br /&gt;
&lt;br /&gt;
===ItemUsingReleased===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('ItemUsingReleased', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при начале использования предмета&lt;br /&gt;
&lt;br /&gt;
===ItemUsingComplete===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('ItemUsingComplete', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при завершении использования предмета&lt;br /&gt;
&lt;br /&gt;
===ItemDispensed===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('ItemDispensed', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при дропе предмета из раздатчика&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Игрок==&lt;br /&gt;
===PlayerAttack===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('PlayerAttack', function (player, victim) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при ударе игроком сущности&lt;br /&gt;
&lt;br /&gt;
===ExpAdd===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('ExpAdd', function (amount, player) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при добавлении опыта игроку&lt;br /&gt;
&lt;br /&gt;
===ExpLevelAdd===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('ExpLevelAdd', function (levelAmount, player) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при добавлении уровней игроку&lt;br /&gt;
&lt;br /&gt;
==Сущности Entity==&lt;br /&gt;
===EntityAdded===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('EntityAdded', function (entity) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при спавне новой сущности&lt;br /&gt;
&lt;br /&gt;
===EntityRemoved===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('EntityRemoved', function (entity) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при уничтожении сущности&lt;br /&gt;
&lt;br /&gt;
===EntityDeath===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('EntityDeath', function (entity) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при при полной смерти сущности&lt;br /&gt;
&lt;br /&gt;
===EntityHurt===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('EntityHurt', function (attacker, victim, damage) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при ударе по любой сущности&lt;br /&gt;
&lt;br /&gt;
===EntityInteract===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('EntityInteract', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при взаимодействии с сущностью&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Кидаемый предмет==&lt;br /&gt;
===ProjectileHit===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('ProjectileHit', function (projectile, item, target) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при попадании кидаемой сущности в цель target&lt;br /&gt;
&lt;br /&gt;
===ProjectileHitBlock===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('ProjectileHitBlock', function (projectile, coords, block) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при попадании кидаемой сущности в блок&lt;br /&gt;
&lt;br /&gt;
===ProjectileHitEntity===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('ProjectileHitEntity', function (projectile, entity) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при попадании кидаемой сущности в существо&lt;br /&gt;
&lt;br /&gt;
==Интерфейс==&lt;br /&gt;
===NativeGuiChanged===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('NativeGuiChanged', function (screenName) {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при изменении нативных экранов&lt;br /&gt;
&lt;br /&gt;
==Мод==&lt;br /&gt;
===ModDirLoaded===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('ModDirLoaded', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при условии, что папка мода полностью загружена&lt;br /&gt;
&lt;br /&gt;
===PreBlocksDefined===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('PreBlocksDefined', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при условии, что блоки почти созданы&lt;br /&gt;
&lt;br /&gt;
===BlocksDefined===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('BlocksDefined', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при условии, что блоки созданы полностью&lt;br /&gt;
&lt;br /&gt;
===PreLoaded===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('PreLoaded', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при предзагрузке&lt;br /&gt;
&lt;br /&gt;
===APILoaded===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('APILoaded', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при загрузке всех апи&lt;br /&gt;
&lt;br /&gt;
===ModsLoaded===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('ModsLoaded', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при условии, что все моды были загружены&lt;br /&gt;
&lt;br /&gt;
===PostLoaded===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('PostLoaded', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при оконачательной загрузке&lt;br /&gt;
&lt;br /&gt;
==Приложение==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== AppSuspended ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;Callback.addCallback('AppSuspended', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при остановке/паузе приложения(Работает только если игрок находится в мире)&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Измерения==&lt;br /&gt;
===DimensionLoaded===&lt;br /&gt;
&amp;lt;syntaxhighlight lang='Javascript'&amp;gt;Callback.addCallback('DimensionLoaded', function () {&lt;br /&gt;
&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Вызывается при загрузке измерения&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2369</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2369"/>
				<updated>2020-02-20T15:49:56Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*StructuresAPI удален. &lt;br /&gt;
*Добавлен объект Rotate. Используется для сложных поворотов. &lt;br /&gt;
*Метод структуры get был изменен. struct.get(x, y, z, rotates, return_index). &lt;br /&gt;
*Метод структуры set был изменен. struct.set(x, y, z, rotate, progressively, time). &lt;br /&gt;
*Добавлен метод destroy(x, y, z, rotates, progressively, time) для структуры. &lt;br /&gt;
*Добавлен метод check(...) для структуры. Эквивалентен методу get(...). &lt;br /&gt;
*Добавлен метод Structure.setInWorld(name, ...). Альтернатива Structure.get(name).set(...). &lt;br /&gt;
*Добавлен метод Structure.destroyInWorld(name, ...). Альтернатива Structure.get(name).destroy(...). &lt;br /&gt;
*Добавлены константы Structure.PROGRESSIVELY и Structure.NOT_PROGRESSIVELY. &lt;br /&gt;
*Добавлены константы Structure.MIRROR_X, Structure.MIRROR_Y и Structure.MIRROR_Z. &lt;br /&gt;
*Исправлена установка блоков добавленных модом. &lt;br /&gt;
*Исправлено сохранение предметов и блоков. &lt;br /&gt;
*Исправлен поворот на 180 градусов по Y. &lt;br /&gt;
*Сохраняются TileEntity &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Structure ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#f39c12;&amp;quot;&amp;gt;Добавлен с версии 1.2&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 115px;&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 248px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| Возвращает экземпляр объекта Structure с именем ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | setInWorld(string name, int x, int y, int z, array rotate, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структуру ''name'' в мире по координатам ''x,y,z'', с выбраным рандомно поворотм из массива ''rotate''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | destroyInWorld(string name, int x, int y, int z, array rotates, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структуру ''name'' в мире по координатам ''x,y,z'', &amp;amp;nbsp;с возможными поворотами ''rotates''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_NONE&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Y&lt;br /&gt;
| Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Y&lt;br /&gt;
| Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Y&lt;br /&gt;
| Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90X&lt;br /&gt;
| Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180X&lt;br /&gt;
| Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270X&lt;br /&gt;
| Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Z&lt;br /&gt;
| Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Z&lt;br /&gt;
| Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Z&lt;br /&gt;
| Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_RANDOM&lt;br /&gt;
| Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_ALL&lt;br /&gt;
| Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_Y&lt;br /&gt;
| Поворот по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| NOT_PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки не постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_X&lt;br /&gt;
| Отражение по оси X&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Y&lt;br /&gt;
| Отражение по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Z&lt;br /&gt;
| Отражение по оси Z&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Экземпляр&amp;amp;nbsp;Structure =====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;'''Только 1.2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, bool rotate_y)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, array rotates, bool return_index)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*return_index - Возвращать ли индекс найденного поворота(По стандарту false) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | check(int x, int y, int z, array rotates, bool return_index)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | getName()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Вернет имя структуры&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | save()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Сохранить структуру в файл&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;'''Только 1.2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | destroy(int x, int y, int z, array rotates, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между уничтожением&amp;amp;nbsp;блоков &lt;br /&gt;
&lt;br /&gt;
| Уничтожить структуру в мире&amp;amp;nbsp;по координатам x,y,z, с возможными поворотами rotates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | addBlock(x, y, z, block)&lt;br /&gt;
| &lt;br /&gt;
*x - Координата структуры по оси X относительно нулевой координаты структуры &lt;br /&gt;
*y - Координата структуры по оси Y относительно нулевой координаты структуры &lt;br /&gt;
*z - Координата структуры по оси Z относительно нулевой координаты структуры &lt;br /&gt;
*block - Блок &lt;br /&gt;
**id - ID блока &lt;br /&gt;
**data - Data блока   &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Добавить блок в структуру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Rotate ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#f39c12;&amp;quot;&amp;gt;Добавлен с версии 1.3&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Объект Rotate позволяет задовать сложные повороты, которые будут выполнятся при поиске/уничтожении/установке структуры.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var rotate = new Rotate();&lt;br /&gt;
rotate.addRotate(Structure.ROTATE_90Y);&lt;br /&gt;
rotate.addRotate(Structure.ROTATE_90X);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данный код позволит повернуть структуру сначала на 90 градусов по оси Y, затем по оси X.&lt;br /&gt;
&lt;br /&gt;
===== экземпляр&amp;amp;nbsp;Rotate =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Аргументы&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Описание&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| addRotate(array rotate)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
*rotate - Матрица поворота или экземпляр&amp;amp;nbsp;Rotate &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | Добавить поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| add(array rotate)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| addRotates(array rotates)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
*rotates - Массив митриц и экземпляров Rotate &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | Добавить повороты в указанном порядке&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| adds(array rotates)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2&amp;lt;br/&amp;gt; Удален в&amp;amp;nbsp;версии 1.3'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2368</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2368"/>
				<updated>2020-02-20T15:46:10Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Structure ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#f39c12;&amp;quot;&amp;gt;Добавлен с версии 1.2&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 115px;&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 248px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| Возвращает экземпляр объекта Structure с именем ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | setInWorld(string name, int x, int y, int z, array rotate, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структуру ''name'' в мире по координатам ''x,y,z'', с выбраным рандомно поворотм из массива ''rotate''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | destroyInWorld(string name, int x, int y, int z, array rotates, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структуру ''name'' в мире по координатам ''x,y,z'', &amp;amp;nbsp;с возможными поворотами ''rotates''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_NONE&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Y&lt;br /&gt;
| Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Y&lt;br /&gt;
| Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Y&lt;br /&gt;
| Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90X&lt;br /&gt;
| Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180X&lt;br /&gt;
| Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270X&lt;br /&gt;
| Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Z&lt;br /&gt;
| Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Z&lt;br /&gt;
| Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Z&lt;br /&gt;
| Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_RANDOM&lt;br /&gt;
| Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_ALL&lt;br /&gt;
| Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_Y&lt;br /&gt;
| Поворот по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| NOT_PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки не постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_X&lt;br /&gt;
| Отражение по оси X&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Y&lt;br /&gt;
| Отражение по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Z&lt;br /&gt;
| Отражение по оси Z&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Экземпляр&amp;amp;nbsp;Structure =====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;'''Только 1.2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, bool rotate_y)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, array rotates, bool return_index)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*return_index - Возвращать ли индекс найденного поворота(По стандарту false) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | check(int x, int y, int z, array rotates, bool return_index)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | getName()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Вернет имя структуры&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | save()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Сохранить структуру в файл&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;'''Только 1.2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | destroy(int x, int y, int z, array rotates, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между уничтожением&amp;amp;nbsp;блоков &lt;br /&gt;
&lt;br /&gt;
| Уничтожить структуру в мире&amp;amp;nbsp;по координатам x,y,z, с возможными поворотами rotates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | addBlock(x, y, z, block)&lt;br /&gt;
| &lt;br /&gt;
*x - Координата структуры по оси X относительно нулевой координаты структуры &lt;br /&gt;
*y - Координата структуры по оси Y относительно нулевой координаты структуры &lt;br /&gt;
*z - Координата структуры по оси Z относительно нулевой координаты структуры &lt;br /&gt;
*block - Блок &lt;br /&gt;
**id - ID блока &lt;br /&gt;
**data - Data блока   &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Добавить блок в структуру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Rotate ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#f39c12;&amp;quot;&amp;gt;Добавлен с версии 1.3&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Объект Rotate позволяет задовать сложные повороты, которые будут выполнятся при поиске/уничтожении/установке структуры.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var rotate = new Rotate();&lt;br /&gt;
rotate.addRotate(Structure.ROTATE_90Y);&lt;br /&gt;
rotate.addRotate(Structure.ROTATE_90X);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данный код позволит повернуть структуру сначала на 90 градусов по оси Y, затем по оси X.&lt;br /&gt;
&lt;br /&gt;
===== экземпляр&amp;amp;nbsp;Rotate =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Аргументы&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Описание&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| addRotate(array rotate)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
*rotate - Матрица поворота или экземпляр&amp;amp;nbsp;Rotate &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | Добавить поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| add(array rotate)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| addRotates(array rotates)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
*rotates - Массив митриц и экземпляров Rotate &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | Добавить повороты в указанном порядке&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| adds(array rotates)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2&amp;lt;br/&amp;gt; Удален в&amp;amp;nbsp;версии 1.3'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2367</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2367"/>
				<updated>2020-02-20T15:38:32Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Structure ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#f39c12;&amp;quot;&amp;gt;Добавлен с версии 1.2&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 115px;&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 248px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| Возвращает экземпляр объекта Structure с именем ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | setInWorld(string name, int x, int y, int z, array rotate, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структуру ''name'' в мире по координатам ''x,y,z'', с выбраным рандомно поворотм из массива ''rotate''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | destroyInWorld(string name, int x, int y, int z, array rotates, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структуру ''name'' в мире по координатам ''x,y,z'', &amp;amp;nbsp;с возможными поворотами ''rotates''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_NONE&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Y&lt;br /&gt;
| Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Y&lt;br /&gt;
| Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Y&lt;br /&gt;
| Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90X&lt;br /&gt;
| Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180X&lt;br /&gt;
| Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270X&lt;br /&gt;
| Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Z&lt;br /&gt;
| Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Z&lt;br /&gt;
| Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Z&lt;br /&gt;
| Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_RANDOM&lt;br /&gt;
| Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_ALL&lt;br /&gt;
| Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_Y&lt;br /&gt;
| Поворот по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| NOT_PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки не постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_X&lt;br /&gt;
| Отражение по оси X&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Y&lt;br /&gt;
| Отражение по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Z&lt;br /&gt;
| Отражение по оси Z&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Экземпляр&amp;amp;nbsp;Structure =====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;'''Только 1.2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, bool rotate_y)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, array rotates, bool return_index)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*return_index - Возвращать ли индекс найденного поворота(По стандарту false) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | check(int x, int y, int z, array rotates, bool return_index)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | getName()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Вернет имя структуры&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | save()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Сохранить структуру в файл&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;'''Только 1.2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | destroy(int x, int y, int z, array rotates, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между уничтожением&amp;amp;nbsp;блоков &lt;br /&gt;
&lt;br /&gt;
| Уничтожить структуру в мире&amp;amp;nbsp;по координатам x,y,z, с возможными поворотами rotates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | addBlock(x, y, z, block)&lt;br /&gt;
| &lt;br /&gt;
*x - Координата структуры по оси X относительно нулевой координаты структуры &lt;br /&gt;
*y - Координата структуры по оси Y относительно нулевой координаты структуры &lt;br /&gt;
*z - Координата структуры по оси Z относительно нулевой координаты структуры &lt;br /&gt;
*block - Блок &lt;br /&gt;
**id - ID блока &lt;br /&gt;
**data - Data блока   &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Добавить блок в структуру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Rotate ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#f39c12;&amp;quot;&amp;gt;Добавлен с версии 1.3&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2&amp;lt;br/&amp;gt; Удален в&amp;amp;nbsp;версии 1.3'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2366</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2366"/>
				<updated>2020-02-20T15:37:57Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Structure ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 115px;&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 248px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| Возвращает экземпляр объекта Structure с именем ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | setInWorld(string name, int x, int y, int z, array rotate, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структуру ''name'' в мире по координатам ''x,y,z'', с выбраным рандомно поворотм из массива ''rotate''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | destroyInWorld(string name, int x, int y, int z, array rotates, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структуру ''name'' в мире по координатам ''x,y,z'', &amp;amp;nbsp;с возможными поворотами ''rotates''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_NONE&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Y&lt;br /&gt;
| Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Y&lt;br /&gt;
| Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Y&lt;br /&gt;
| Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90X&lt;br /&gt;
| Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180X&lt;br /&gt;
| Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270X&lt;br /&gt;
| Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Z&lt;br /&gt;
| Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Z&lt;br /&gt;
| Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Z&lt;br /&gt;
| Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_RANDOM&lt;br /&gt;
| Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_ALL&lt;br /&gt;
| Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_Y&lt;br /&gt;
| Поворот по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| NOT_PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки не постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_X&lt;br /&gt;
| Отражение по оси X&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Y&lt;br /&gt;
| Отражение по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Z&lt;br /&gt;
| Отражение по оси Z&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Экземпляр&amp;amp;nbsp;Structure =====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;'''Только 1.2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, bool rotate_y)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, array rotates, bool return_index)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*return_index - Возвращать ли индекс найденного поворота(По стандарту false) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | check(int x, int y, int z, array rotates, bool return_index)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | getName()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Вернет имя структуры&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | save()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Сохранить структуру в файл&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;'''Только 1.2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | destroy(int x, int y, int z, array rotates, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между уничтожением&amp;amp;nbsp;блоков &lt;br /&gt;
&lt;br /&gt;
| Уничтожить структуру в мире&amp;amp;nbsp;по координатам x,y,z, с возможными поворотами rotates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | addBlock(x, y, z, block)&lt;br /&gt;
| &lt;br /&gt;
*x - Координата структуры по оси X относительно нулевой координаты структуры &lt;br /&gt;
*y - Координата структуры по оси Y относительно нулевой координаты структуры &lt;br /&gt;
*z - Координата структуры по оси Z относительно нулевой координаты структуры &lt;br /&gt;
*block - Блок &lt;br /&gt;
**id - ID блока &lt;br /&gt;
**data - Data блока   &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Добавить блок в структуру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Rotate ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#f39c12;&amp;quot;&amp;gt;Добавлен с версии 1.3&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2&amp;lt;br/&amp;gt; Удален в&amp;amp;nbsp;версии 1.3'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2365</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2365"/>
				<updated>2020-02-20T15:36:32Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Structure ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 115px;&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 248px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| Возвращает экземпляр объекта Structure с именем ''name''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | setInWorld(string name, int x, int y, int z, array rotate, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структуру ''name'' в мире по координатам ''x,y,z'', с выбраным рандомно поворотм из массива ''rotate''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | destroyInWorld(string name, int x, int y, int z, array rotates, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структуру ''name'' в мире по координатам ''x,y,z'', &amp;amp;nbsp;с возможными поворотами ''rotates''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_NONE&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Y&lt;br /&gt;
| Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Y&lt;br /&gt;
| Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Y&lt;br /&gt;
| Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90X&lt;br /&gt;
| Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180X&lt;br /&gt;
| Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270X&lt;br /&gt;
| Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Z&lt;br /&gt;
| Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Z&lt;br /&gt;
| Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Z&lt;br /&gt;
| Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_RANDOM&lt;br /&gt;
| Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_ALL&lt;br /&gt;
| Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_Y&lt;br /&gt;
| Поворот по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| NOT_PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки не постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_X&lt;br /&gt;
| Отражение по оси X&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Y&lt;br /&gt;
| Отражение по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Z&lt;br /&gt;
| Отражение по оси Z&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Экземпляр&amp;amp;nbsp;Structure =====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;'''Только 1.2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, bool rotate_y)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, array rotates, bool return_index)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*return_index - Возвращать ли индекс найденного поворота(По стандарту false) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | check(int x, int y, int z, array rotates, bool return_index)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | getName()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Вернет имя структуры&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | save()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Сохранить структуру в файл&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;'''Только 1.2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | destroy(int x, int y, int z, array rotates, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между уничтожением&amp;amp;nbsp;блоков &lt;br /&gt;
&lt;br /&gt;
| Уничтожить структуру в мире&amp;amp;nbsp;по координатам x,y,z, с возможными поворотами rotates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | addBlock(x, y, z, block)&lt;br /&gt;
| &lt;br /&gt;
*x - Координата структуры по оси X относительно нулевой координаты структуры &lt;br /&gt;
*y - Координата структуры по оси Y относительно нулевой координаты структуры &lt;br /&gt;
*z - Координата структуры по оси Z относительно нулевой координаты структуры &lt;br /&gt;
*block - Блок &lt;br /&gt;
**id - ID блока &lt;br /&gt;
**data - Data блока   &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Добавить блок в структуру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2&amp;lt;br/&amp;gt; Удален в&amp;amp;nbsp;версии 1.3'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2364</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2364"/>
				<updated>2020-02-20T15:33:37Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Structure ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 115px;&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 248px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| Возвращает экземпляр объекта Structure с именем ''name''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_NONE&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Y&lt;br /&gt;
| Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Y&lt;br /&gt;
| Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Y&lt;br /&gt;
| Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90X&lt;br /&gt;
| Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180X&lt;br /&gt;
| Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270X&lt;br /&gt;
| Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Z&lt;br /&gt;
| Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Z&lt;br /&gt;
| Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Z&lt;br /&gt;
| Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_RANDOM&lt;br /&gt;
| Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_ALL&lt;br /&gt;
| Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_Y&lt;br /&gt;
| Поворот по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| NOT_PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки не постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_X&lt;br /&gt;
| Отражение по оси X&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Y&lt;br /&gt;
| Отражение по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Z&lt;br /&gt;
| Отражение по оси Z&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Экземпляр&amp;amp;nbsp;Structure =====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;'''Только 1.2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, bool rotate_y)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, array rotates, bool return_index)&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*return_index - Возвращать ли индекс найденного поворота(По стандарту false) &lt;br /&gt;
&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; rowspan=&amp;quot;2&amp;quot; | Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | check(int x, int y, int z, array rotates, bool return_index)&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | getName()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Вернет имя структуры&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | save()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Сохранить структуру в файл&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#e74c3c;&amp;quot;&amp;gt;'''Только 1.2'''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | destroy(int x, int y, int z, array rotates, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotates - Возможные повороты структуры &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между уничтожением&amp;amp;nbsp;блоков &lt;br /&gt;
&lt;br /&gt;
| Уничтожить структуру в мире&amp;amp;nbsp;по координатам x,y,z, с возможными поворотами rotates&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | addBlock(x, y, z, block)&lt;br /&gt;
| &lt;br /&gt;
*x - Координата структуры по оси X относительно нулевой координаты структуры &lt;br /&gt;
*y - Координата структуры по оси Y относительно нулевой координаты структуры &lt;br /&gt;
*z - Координата структуры по оси Z относительно нулевой координаты структуры &lt;br /&gt;
*block - Блок &lt;br /&gt;
**id - ID блока &lt;br /&gt;
**data - Data блока   &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Добавить блок в структуру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2&amp;lt;br/&amp;gt; Удален в&amp;amp;nbsp;версии 1.3'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2363</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2363"/>
				<updated>2020-02-20T15:25:17Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Structure ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 115px;&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 248px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| Возвращает экземпляр объекта Structure с именем ''name''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_NONE&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Y&lt;br /&gt;
| Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Y&lt;br /&gt;
| Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Y&lt;br /&gt;
| Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90X&lt;br /&gt;
| Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180X&lt;br /&gt;
| Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270X&lt;br /&gt;
| Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Z&lt;br /&gt;
| Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Z&lt;br /&gt;
| Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Z&lt;br /&gt;
| Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_RANDOM&lt;br /&gt;
| Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_ALL&lt;br /&gt;
| Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_Y&lt;br /&gt;
| Поворот по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| NOT_PROGRESSIVELY&lt;br /&gt;
| Установка/уничтожение постройки не постепенное&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_X&lt;br /&gt;
| Отражение по оси X&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Y&lt;br /&gt;
| Отражение по оси Y&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.3'''&lt;br /&gt;
| MIRROR_Z&lt;br /&gt;
| Отражение по оси Z&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Экземпляр&amp;amp;nbsp;Structure ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, bool rotate_y)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | getName()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Вернет имя структуры&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | save()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Сохранить структуру в файл&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | addBlock(x, y, z, block)&lt;br /&gt;
| &lt;br /&gt;
*x - Координата структуры по оси X относительно нулевой координаты структуры &lt;br /&gt;
*y - Координата структуры по оси Y относительно нулевой координаты структуры &lt;br /&gt;
*z - Координата структуры по оси Z относительно нулевой координаты структуры &lt;br /&gt;
*block - Блок &lt;br /&gt;
**id - ID блока &lt;br /&gt;
**data - Data блока   &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Добавить блок в структуру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2&amp;lt;br/&amp;gt; Удален в&amp;amp;nbsp;версии 1.3'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2362</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2362"/>
				<updated>2020-02-20T15:22:33Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Structure ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 115px;&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 248px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| Возвращает экземпляр объекта Structure с именем ''name''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_NONE&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Y&lt;br /&gt;
| Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Y&lt;br /&gt;
| Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Y&lt;br /&gt;
| Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90X&lt;br /&gt;
| Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180X&lt;br /&gt;
| Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270X&lt;br /&gt;
| Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Z&lt;br /&gt;
| Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Z&lt;br /&gt;
| Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Z&lt;br /&gt;
| Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_RANDOM&lt;br /&gt;
| Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_ALL&lt;br /&gt;
| Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_Y&lt;br /&gt;
| Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Экземпляр&amp;amp;nbsp;Structure ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, bool rotate_y)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | getName()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Вернет имя структуры&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | save()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Сохранить структуру в файл&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | addBlock(x, y, z, block)&lt;br /&gt;
| &lt;br /&gt;
*x - Координата структуры по оси X относительно нулевой координаты структуры &lt;br /&gt;
*y - Координата структуры по оси Y относительно нулевой координаты структуры &lt;br /&gt;
*z - Координата структуры по оси Z относительно нулевой координаты структуры &lt;br /&gt;
*block - Блок &lt;br /&gt;
**id - ID блока &lt;br /&gt;
**data - Data блока   &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Добавить блок в структуру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2&amp;lt;br/&amp;gt; Удален в&amp;amp;nbsp;версии 1.3'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2360</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2360"/>
				<updated>2020-02-16T15:10:16Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Structure ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 115px;&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 248px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| Возвращает экземпляр объекта Structure с именем ''name''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_NONE&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Y&lt;br /&gt;
| Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Y&lt;br /&gt;
| Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Y&lt;br /&gt;
| Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90X&lt;br /&gt;
| Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180X&lt;br /&gt;
| Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270X&lt;br /&gt;
| Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Z&lt;br /&gt;
| Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Z&lt;br /&gt;
| Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Z&lt;br /&gt;
| Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_RANDOM&lt;br /&gt;
| Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_ALL&lt;br /&gt;
| Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_Y&lt;br /&gt;
| Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Экземпляр&amp;amp;nbsp;Structure ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, bool rotate_y)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | getName()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Вернет имя структуры&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | save()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Сохранить структуру в файл&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | addBlock(x, y, z, block)&lt;br /&gt;
| &lt;br /&gt;
*x - Координата структуры по оси X относительно нулевой координаты структуры &lt;br /&gt;
*y - Координата структуры по оси Y относительно нулевой координаты структуры &lt;br /&gt;
*z - Координата структуры по оси Z относительно нулевой координаты структуры &lt;br /&gt;
*block - Блок &lt;br /&gt;
**id - ID блока &lt;br /&gt;
**data - Data блока   &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Добавить блок в структуру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
==== StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2359</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2359"/>
				<updated>2020-02-16T15:09:27Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&lt;br /&gt;
'''''ВАЖНО!:''' Документация по версии 1.2 не полная''&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Structure ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 115px;&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 248px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| Возвращает экземпляр объекта Structure с именем ''name''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_NONE&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Y&lt;br /&gt;
| Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Y&lt;br /&gt;
| Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Y&lt;br /&gt;
| Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90X&lt;br /&gt;
| Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180X&lt;br /&gt;
| Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270X&lt;br /&gt;
| Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Z&lt;br /&gt;
| Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Z&lt;br /&gt;
| Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Z&lt;br /&gt;
| Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_RANDOM&lt;br /&gt;
| Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_ALL&lt;br /&gt;
| Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_Y&lt;br /&gt;
| Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Экземпляр&amp;amp;nbsp;Structure ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | get(int x, int y, int z, bool rotate_y)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Вернет true, если на координатах данная структура, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | getName()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Вернет имя структуры&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | save()&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
| Сохранить структуру в файл&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | set(int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси Y &lt;br /&gt;
*z - Начальная координата структуры по оси Z &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| Установить структурув мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | addBlock(x, y, z, block)&lt;br /&gt;
| &lt;br /&gt;
*x - Координата структуры по оси X относительно нулевой координаты структуры &lt;br /&gt;
*y - Координата структуры по оси Y относительно нулевой координаты структуры &lt;br /&gt;
*z - Координата структуры по оси Z относительно нулевой координаты структуры &lt;br /&gt;
*block - Блок &lt;br /&gt;
**id - ID блока &lt;br /&gt;
**data - Data блока   &lt;br /&gt;
&lt;br /&gt;
| &amp;amp;nbsp;Добавить блок в структуру&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2358</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2358"/>
				<updated>2020-02-16T14:55:14Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&lt;br /&gt;
'''''ВАЖНО!:''' Документация по версии 1.2 не полная''&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Structure ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 115px;&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 248px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 115px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;width: 248px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| Возвращает экземпляр объекта Structure с именем ''name''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_NONE&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Y&lt;br /&gt;
| Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Y&lt;br /&gt;
| Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Y&lt;br /&gt;
| Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90X&lt;br /&gt;
| Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180X&lt;br /&gt;
| Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270X&lt;br /&gt;
| Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Z&lt;br /&gt;
| Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Z&lt;br /&gt;
| Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Z&lt;br /&gt;
| Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_RANDOM&lt;br /&gt;
| Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_ALL&lt;br /&gt;
| Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_Y&lt;br /&gt;
| Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Экземпляр&amp;amp;nbsp;Structure ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2357</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2357"/>
				<updated>2020-02-16T14:53:32Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&lt;br /&gt;
'''''ВАЖНО!:''' Документация по версии 1.2 не полная''&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Structure ====&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | '''Аргументы'''&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| init(string path)&lt;br /&gt;
| &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| get(string name)&lt;br /&gt;
| &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| Возвращает экземпляр объекта Structure с именем ''name''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_NONE&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Y&lt;br /&gt;
| Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Y&lt;br /&gt;
| Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Y&lt;br /&gt;
| Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90X&lt;br /&gt;
| Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180X&lt;br /&gt;
| Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270X&lt;br /&gt;
| Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_90Z&lt;br /&gt;
| Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_180Z&lt;br /&gt;
| Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_270Z&lt;br /&gt;
| Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_RANDOM&lt;br /&gt;
| Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_ALL&lt;br /&gt;
| Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| ROTATE_Y&lt;br /&gt;
| Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Экземпляр&amp;amp;nbsp;Structure ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2356</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2356"/>
				<updated>2020-02-16T14:51:46Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&lt;br /&gt;
'''''ВАЖНО!:''' Документация по версии 1.2 не полная''&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Structure ====&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Метод&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | '''Аргументы'''&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| init(string path)&lt;br /&gt;
| &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| get(string name)&lt;br /&gt;
| &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| Возвращает экземпляр объекта Structure с именем ''name''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| ROTATE_NONE&lt;br /&gt;
| &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| ROTATE_90Y&lt;br /&gt;
| Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ROTATE_180Y&lt;br /&gt;
| Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ROTATE_270Y&lt;br /&gt;
| Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ROTATE_90X&lt;br /&gt;
| Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ROTATE_180X&lt;br /&gt;
| Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ROTATE_270X&lt;br /&gt;
| Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ROTATE_90Z&lt;br /&gt;
| Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ROTATE_180Z&lt;br /&gt;
| Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ROTATE_270Z&lt;br /&gt;
| Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ROTATE_RANDOM&lt;br /&gt;
| Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| ROTATE_ALL&lt;br /&gt;
| Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| ROTATE_Y&lt;br /&gt;
| Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Экземпляр&amp;amp;nbsp;Structure ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2355</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2355"/>
				<updated>2020-02-16T14:46:51Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&lt;br /&gt;
'''''ВАЖНО!:''' Документация по версии 1.2 не полная''&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&lt;br /&gt;
==== Structure ====&lt;br /&gt;
&lt;br /&gt;
==== Экземпляр&amp;amp;nbsp;Structure ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2354</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2354"/>
				<updated>2020-02-16T14:45:57Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&lt;br /&gt;
'''''ВАЖНО!:''' Документация по версии 1.2 не полная''&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
===== Методы =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
===== Константы =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2353</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2353"/>
				<updated>2020-02-16T14:45:15Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&lt;br /&gt;
'''''ВАЖНО!:''' Документация по версии 1.2 не полная''&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Методы StructuresAPI ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;'''''Считается устаревшим с версии 1.2'''''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Константы ====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2352</id>
		<title>InnerCore/Libs/StructuresAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StructuresAPI&amp;diff=2352"/>
				<updated>2020-02-16T14:44:07Z</updated>
		
		<summary type="html">&lt;p&gt;80LK: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
StructuresAPI - библиотека, упрощающая работу со структурами.&lt;br /&gt;
&lt;br /&gt;
'''''ВАЖНО!:''' Документация по версии 1.2 не полная''&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 500px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 64px;&amp;quot; | Версия&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 114px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Изменения&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2254 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
Первая версия&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2300 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Добавлен метод StructuresAPI.init(string NameFolder) - Задает папку со структурами. &lt;br /&gt;
*Изменен метод StructuresAPI.set(name, x, y, z, rotate, destroy, progressively, time) - Добавлены параметры (Автор ToxesFoxes) &lt;br /&gt;
**destroy - Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
**progressively - Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
**time - Время в миллисекундах между установкой/уничтожением блоков   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''1.2'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2301 Подробнее]&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &lt;br /&gt;
*Библиотека переписана. Объект StructuresAPI устарел. &lt;br /&gt;
*Сохраняется содержимое сундуков, печей и воронок &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''GitHub'''&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/Wolf-Team/Libraries/blob/master/StructuresAPI.js '''GitHub''']&lt;br /&gt;
| style=&amp;quot;width: 304px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Используя данный продукт&amp;amp;nbsp;вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&lt;br /&gt;
Для начала работы импортируйте библиотеку.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;StructuresAPI&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Сохранение структур ===&lt;br /&gt;
&lt;br /&gt;
Для сохранения структур есть два способа:&lt;br /&gt;
&lt;br /&gt;
==== Через WorldEdit ====&lt;br /&gt;
&lt;br /&gt;
Для начала выделите вашу структуру топориком&amp;lt;sub&amp;gt;''(1 точка - тап по блоку, 2 точка - ломание блока)''&amp;lt;/sub&amp;gt;, затем выделите с помощью деревянного меча начальную точку структуры&amp;lt;sub&amp;gt;''(Она может быть вне области структуры)''&amp;lt;/sub&amp;gt;.&amp;lt;br/&amp;gt; После введите в чат команду ''/save &amp;lt;name&amp;gt; [-a] [-x n] [-y n] [-z n]'' со следующими параметрами&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры(Без пробелов) &lt;br /&gt;
*''-a&amp;amp;nbsp;''- Сохранить структуру с воздухом &lt;br /&gt;
*''-x n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по X &lt;br /&gt;
*''-y&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Y &lt;br /&gt;
*''-z&amp;amp;nbsp;n&amp;amp;nbsp;''- Установить центр структуры в координате n&amp;amp;nbsp;по Z &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Через код ====&lt;br /&gt;
&lt;br /&gt;
'''''!Не рекомендуется'''''&lt;br /&gt;
&lt;br /&gt;
1. Создать или получить объект структуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(name)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
2. Добавить блоки&lt;br /&gt;
&lt;br /&gt;
3. Сохранить структуру&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;struct.save()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Устаревший способ =====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.save(name, structures)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив данных о блоках &lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
=== Проверка структур ===&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''get экземпляра объекта Structure''&lt;br /&gt;
&lt;br /&gt;
''struct.get(x,y,z,)''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;stuct.get(x, y, z, rotate_y)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это нужная структура, иначе ''false.''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var struct = Structure.get(&amp;quot;myStructure&amp;quot;);&lt;br /&gt;
Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; struct.get(coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Устаревший способ ====&lt;br /&gt;
&lt;br /&gt;
Для проверки структур используется функция ''getStructures()''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StructuresAPI.getStructures(name, x, y, z, rotate_y)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Где:&lt;br /&gt;
&lt;br /&gt;
*''name'' - Имя структуры &lt;br /&gt;
*''x'' - Начальная координата структуры по X &lt;br /&gt;
*''y'' -&amp;amp;nbsp;Начальная координата структуры по Y &lt;br /&gt;
*''z'' -&amp;amp;nbsp;Начальная координата структуры по Z &lt;br /&gt;
*''rotate_y'' -&amp;amp;nbsp;Вращение только по оси Y &lt;br /&gt;
&lt;br /&gt;
Вернет ''true'' если это структура ''name'', иначе ''false''&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;Callback.addCallback(&amp;quot;ItemUse&amp;quot;, function(coords, item){&lt;br /&gt;
    if(item.id == 280 &amp;amp;&amp;amp; StructuresAPI.getStructures(&amp;quot;myStructure&amp;quot;, coords.x, coords.y, coords.z)){&lt;br /&gt;
        alert(&amp;quot;It's my structure&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Полный перечень методов и констант ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
==== Методы ====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''Версия'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | '''Метод'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | '''Аргументы'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 332px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | init(string path)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*path - Путь к папке со структурами &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Устанавливает место хранения структур, относительно мода&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | get(string name)&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Возвращает объект структуры, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | &lt;br /&gt;
getStructures(string name, int x, int y, int z, bool rotate_y)&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate_y - Структура может быть повернута только по оси Y &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Вернет true, если на координатах структура name, иначе false&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | save(string name, array structures)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*structures - Массив с данными о блоках &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Сохраняет струкутуру name&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.0'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | &lt;br /&gt;
Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 59px;&amp;quot; | '''1.1'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 197px;&amp;quot; | set(string name, int x, int y, int z, array rotate, bool destroy, bool progressively, int time)&lt;br /&gt;
| style=&amp;quot;width: 362px;&amp;quot; | &lt;br /&gt;
*name - Имя структуры &lt;br /&gt;
*x - Начальная координата структуры по оси X &lt;br /&gt;
*y - Начальная координата структуры по оси X &lt;br /&gt;
*z - Начальная координата структуры по оси X &lt;br /&gt;
*rotate - Массив матриц поворотов &lt;br /&gt;
*destroy -&amp;amp;nbsp;Если true, структура будет &amp;quot;уничтожаться&amp;quot; &lt;br /&gt;
*progressively -&amp;amp;nbsp;Если true, структура будет постепенно &amp;quot;строиться/уничтожаться&amp;quot; &lt;br /&gt;
*time -&amp;amp;nbsp;Время в миллисекундах между установкой/уничтожением блоков &lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 332px;&amp;quot; | Установить структуру name в мире по координатам x,y,z, с выбраным рандомно поворотм из массива rotate&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
==== Константы ====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | '''Константа'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 824px;&amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_NONE&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Y на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270X&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси X на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_90Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 90&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_180Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 180&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_270Z&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Матрица поворота по оси Z на 270&amp;lt;sup&amp;gt;о&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_RANDOM&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Рандомный поворот&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_ALL&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по всем осям&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 210px;&amp;quot; | ROTATE_Y&lt;br /&gt;
| style=&amp;quot;width: 824px;&amp;quot; | Поворот по оси Y&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>80LK</name></author>	</entry>

	</feed>