<?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=TigerZhang</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=TigerZhang"/>
		<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/TigerZhang"/>
		<updated>2026-07-27T23:26:49Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/RecipeTELib&amp;diff=2659</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=2659"/>
				<updated>2026-07-14T20:18:25Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''RecipeTELib''''''' - библиотека, упрощающая создание верстаков и печей.&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;
&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;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;
&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;
&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;
&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;
=== Электрическая печь(Редстоун сигнал) ===&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;
&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;
&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;
&lt;br /&gt;
=== Интеграция с RecipeViewer ===&lt;br /&gt;
&amp;lt;h3&amp;gt;Добавление ваших крафтов происходит автоматически.&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;В RecipeViewer переносятся только входные слоты и слот-результат. Для отображения дополнительных элементов, нужно добавить к элементу параметр RV.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;fck_mw_syntaxhighlight&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; type: &amp;amp;quot;bitmap&amp;amp;quot;,&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; bitmap: &amp;amp;quot;arrow&amp;amp;quot;,&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; x: 600,&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; y: 170,&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; RV:true,&lt;br /&gt;
&amp;amp;nbsp; &amp;amp;nbsp; scale: 4&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Для задания своего интерфейса в RecipeViewer прототип должен иметь поле&amp;amp;nbsp;RVGuiScreen с полями drawable и elements.&amp;lt;br /&amp;gt;&lt;br /&gt;
Входные слоты имеют имя input+index, выходные - output+index.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Подробнее об элементах на странице &amp;lt;a href=&amp;quot;InnerCore%2F%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B2%20GUI&amp;quot;&amp;gt;Введение в GUI&amp;lt;/a&amp;gt;. &amp;amp;lt;/div&amp;amp;gt;&amp;lt;/p&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.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;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;
=== Инициализация ===&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;
&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;
&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;
&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;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;
&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;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;
&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;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/MobLib&amp;diff=2658</id>
		<title>InnerCore/Libs/MobLib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/MobLib&amp;diff=2658"/>
				<updated>2026-07-14T20:15:26Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''MobLib''' - библиотека упрощающая создание мобов.&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: 589px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 581px;&amp;quot; | &amp;lt;span style=&amp;quot;font-size:large;&amp;quot;&amp;gt;'''Библиотека'''&amp;lt;/span&amp;gt;&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: 66px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 441px;&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: 66px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2242 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 441px;&amp;quot; | Первая версия&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''2'''&lt;br /&gt;
| style=&amp;quot;width: 66px; text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;''На этапе тестирования''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 441px;&amp;quot; | &lt;br /&gt;
*Исправлены&amp;amp;nbsp;MobRenderType &lt;br /&gt;
*Добавлены новые EntityType и MobRenderType &lt;br /&gt;
*Добавлен&amp;amp;nbsp;метод&amp;amp;nbsp;&amp;lt;mob&amp;gt;.isThisMob(entity); &lt;br /&gt;
*Добавлен&amp;amp;nbsp;метод &amp;lt;mob&amp;gt;.getAllInRange(coords, range); &lt;br /&gt;
*Добавлен&amp;amp;nbsp;метод &amp;lt;mob&amp;gt;.getAllInRangeSpawn(coords); &lt;br /&gt;
*Добавлен&amp;amp;nbsp;метод Mob.getType(entity); &lt;br /&gt;
*Добавлен&amp;amp;nbsp;метод Mob.getAllInRange(coords, range, type); &lt;br /&gt;
*Добавлен&amp;amp;nbsp;метод Mob.getAllInRangeSpawn(coords, type); &lt;br /&gt;
*Добавлено поле events &lt;br /&gt;
*Добавлено поле&amp;amp;nbsp; spawn &lt;br /&gt;
*Добавлено поле equipments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;width: 581px; text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;font-size:large;&amp;quot;&amp;gt;'''Модификации'''&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''Название'''&lt;br /&gt;
| style=&amp;quot;width: 441px; text-align: center;&amp;quot; | '''Ссылки'''&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''Animals and Plants'''&lt;br /&gt;
| style=&amp;quot;width: 441px;&amp;quot; | [https://icmods.mineprogramming.org/mod?id=386 Подробнее]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Если вы используете данную библиотеку, пожалуйста добавляйте ваш мод в список или пишите&amp;amp;nbsp;[https://vk.com/id93821471 мне].'''&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;
== Документация ==&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;MobLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Создание моба ===&lt;br /&gt;
Для создания моба, используется конструктор '''Mob(''settings'')''', где ''settings ''- объект описания моба.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var myMob = new Mob({&lt;br /&gt;
    sid:&amp;quot;myMob&amp;quot;,//Строковый идентификатор моба !Обязательный параметр&lt;br /&gt;
    name:&amp;quot;My New Mob&amp;quot;,//Название моба, по умолчанию - sid&lt;br /&gt;
    health:20,//Здоровье моба, по умолчанию - 20&lt;br /&gt;
    render:3,//Рендер моба, принимает Render или ID ванильного рендера, по умолчанию - 3&lt;br /&gt;
    hitbox:{//Хитбокс, если указать число, то применется к W и H&lt;br /&gt;
         w: 1,//Ширина хитбокса, по умолчанию - 1&lt;br /&gt;
         h: 2//Высота хитбокса, по умолчанию - 2&lt;br /&gt;
    },&lt;br /&gt;
    skin:&amp;quot;steve.png&amp;quot;,//Текстура моба&lt;br /&gt;
    spawn:0,//Шанс спавна в мире, по умолчанию - 0&lt;br /&gt;
    loot:[{&lt;br /&gt;
            id: id, //id предмета: число,&lt;br /&gt;
            count: count, //кол-во предмета: число / массив чисел (будет выбрано случайно из массива) / объект {min: min, max: max} (кол-во будет выбрано между min и max включительно)&lt;br /&gt;
            data: data, // метадата предмета, формат аналогичен count&lt;br /&gt;
            chance: chance, // шанс: число с плавающей точкой от 0 до 1 - вероятность дропа этого предмета&lt;br /&gt;
            separate: false // если true, то при количестве больше 1, предмет будет дропнут в виде нескольких предметов, каждый с кол-вом 1&lt;br /&gt;
        },&lt;br /&gt;
        // {...}&lt;br /&gt;
    ],//Лут при убйистве моба&lt;br /&gt;
    ai:32,//AI моба. Число - поведение ванильного моба или AITypes, по умолчанию - 28&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Яйцо спавна ===&lt;br /&gt;
Что бы зарегистрировать яайцо спавна, требуется вызвать метод '''registerEgg(''texture'')''', где ''texture'' - объект описания текстуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;myMob.registerEgg({&lt;br /&gt;
    name:&amp;quot;spawn_egg_myMob&amp;quot;,//Имя текстуры&lt;br /&gt;
    meta:0//Мета текстуры&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/MobLib&amp;diff=2657</id>
		<title>InnerCore/Libs/MobLib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/MobLib&amp;diff=2657"/>
				<updated>2026-07-14T20:15:10Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''MobLib''' - библиотека упрощающая создание мобов.&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: 589px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 581px;&amp;quot; | &amp;lt;span style=&amp;quot;font-size:large;&amp;quot;&amp;gt;'''Библиотека'''&amp;lt;/span&amp;gt;&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: 66px;&amp;quot; | Ссылка&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 441px;&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: 66px; text-align: center;&amp;quot; | [https://vk.com/wall-80513593_2242 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 441px;&amp;quot; | Первая версия&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''2'''&lt;br /&gt;
| style=&amp;quot;width: 66px; text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;color:#c0392b;&amp;quot;&amp;gt;''На этапе тестирования''&amp;lt;/span&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 441px;&amp;quot; | &lt;br /&gt;
*Исправлены&amp;amp;nbsp;MobRenderType &lt;br /&gt;
*Добавлены новые EntityType и MobRenderType &lt;br /&gt;
*Добавлен&amp;amp;nbsp;метод&amp;amp;nbsp;&amp;lt;mob&amp;gt;.isThisMob(entity); &lt;br /&gt;
*Добавлен&amp;amp;nbsp;метод &amp;lt;mob&amp;gt;.getAllInRange(coords, range); &lt;br /&gt;
*Добавлен&amp;amp;nbsp;метод &amp;lt;mob&amp;gt;.getAllInRangeSpawn(coords); &lt;br /&gt;
*Добавлен&amp;amp;nbsp;метод Mob.getType(entity); &lt;br /&gt;
*Добавлен&amp;amp;nbsp;метод Mob.getAllInRange(coords, range, type); &lt;br /&gt;
*Добавлен&amp;amp;nbsp;метод Mob.getAllInRangeSpawn(coords, type); &lt;br /&gt;
*Добавлено поле events &lt;br /&gt;
*Добавлено поле&amp;amp;nbsp; spawn &lt;br /&gt;
*Добавлено поле equipments &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;width: 581px; text-align: center;&amp;quot; | &amp;lt;span style=&amp;quot;font-size:large;&amp;quot;&amp;gt;'''Модификации'''&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''Название'''&lt;br /&gt;
| style=&amp;quot;width: 441px; text-align: center;&amp;quot; | '''Ссылки'''&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; style=&amp;quot;width: 64px; text-align: center;&amp;quot; | '''Animals and Plants'''&lt;br /&gt;
| style=&amp;quot;width: 441px;&amp;quot; | [https://icmods.mineprogramming.org/mod?id=386 Подробнее]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Если вы используете данную библиотеку, пожалуйста добавляйте ваш мод в список или пишите&amp;amp;nbsp;[https://vk.com/id93821471 мне].'''&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;
== Документация ==&lt;br /&gt;
=== Инициализация ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;MobLib&amp;quot;)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Создание моба ===&lt;br /&gt;
Для создания моба, используется конструктор '''Mob(''settings'')''', где ''settings ''- объект описания моба.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;var myMob = new Mob({&lt;br /&gt;
    sid:&amp;quot;myMob&amp;quot;,//Строковый идентификатор моба !Обязательный параметр&lt;br /&gt;
    name:&amp;quot;My New Mob&amp;quot;,//Название моба, по умолчанию - sid&lt;br /&gt;
    health:20,//Здоровье моба, по умолчанию - 20&lt;br /&gt;
    render:3,//Рендер моба, принимает Render или ID ванильного рендера, по умолчанию - 3&lt;br /&gt;
    hitbox:{//Хитбокс, если указать число, то применется к W и H&lt;br /&gt;
         w: 1,//Ширина хитбокса, по умолчанию - 1&lt;br /&gt;
         h: 2//Высота хитбокса, по умолчанию - 2&lt;br /&gt;
    },&lt;br /&gt;
    skin:&amp;quot;steve.png&amp;quot;,//Текстура моба&lt;br /&gt;
    spawn:0,//Шанс спавна в мире, по умолчанию - 0&lt;br /&gt;
    loot:[{&lt;br /&gt;
            id: id, //id предмета: число,&lt;br /&gt;
            count: count, //кол-во предмета: число / массив чисел (будет выбрано случайно из массива) / объект {min: min, max: max} (кол-во будет выбрано между min и max включительно)&lt;br /&gt;
            data: data, // метадата предмета, формат аналогичен count&lt;br /&gt;
            chance: chance, // шанс: число с плавающей точкой от 0 до 1 - вероятность дропа этого предмета&lt;br /&gt;
            separate: false // если true, то при количестве больше 1, предмет будет дропнут в виде нескольких предметов, каждый с кол-вом 1&lt;br /&gt;
        },&lt;br /&gt;
        // {...}&lt;br /&gt;
    ],//Лут при убйистве моба&lt;br /&gt;
    ai:32,//AI моба. Число - поведение ванильного моба или AITypes, по умолчанию - 28&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Яйцо спавна ===&lt;br /&gt;
&lt;br /&gt;
Что бы зарегистрировать яайцо спавна, требуется вызвать метод '''registerEgg(''texture'')''', где ''texture'' - объект описания текстуры&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;myMob.registerEgg({&lt;br /&gt;
    name:&amp;quot;spawn_egg_myMob&amp;quot;,//Имя текстуры&lt;br /&gt;
    meta:0//Мета текстуры&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/GuideAPI&amp;diff=2656</id>
		<title>InnerCore/Libs/GuideAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/GuideAPI&amp;diff=2656"/>
				<updated>2026-07-14T20:13:44Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== GuideAPI ==&lt;br /&gt;
'''GuideAPI''' – мод-библиотека, предоставляющая большие возможности для создания игровых документаций.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;ModAPI.addAPICallback(&amp;quot;GuideAPI&amp;quot;, function(api) {&lt;br /&gt;
    const GuideAPI = api.GuideAPI;&lt;br /&gt;
    const GuideHelper = api.GuideHelper;&lt;br /&gt;
    const PageControllers = api.PageControllers;&lt;br /&gt;
&lt;br /&gt;
    IDRegistry.genItemID(&amp;quot;testGuide&amp;quot;);&lt;br /&gt;
    Item.createItem(&amp;quot;testGuide&amp;quot;, &amp;quot;Test Guide&amp;quot;, {&lt;br /&gt;
        name: &amp;quot;stick&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    GuideAPI.registerGuide(&amp;quot;guideTest&amp;quot;, {&lt;br /&gt;
        item: ItemID.testGuide,&lt;br /&gt;
        debug: false,&lt;br /&gt;
        textures: {&lt;br /&gt;
            background: &amp;quot;your_texture&amp;quot;,&lt;br /&gt;
            nextLink: &amp;quot;your_texture&amp;quot;,&lt;br /&gt;
            preLink: &amp;quot;your_texture&amp;quot;,&lt;br /&gt;
            close: &amp;quot;your_texture&amp;quot;,&lt;br /&gt;
        },&lt;br /&gt;
        pages: {&lt;br /&gt;
            &amp;quot;default&amp;quot;: {&lt;br /&gt;
                nextLink: &amp;quot;test&amp;quot;,&lt;br /&gt;
                left: {&lt;br /&gt;
                    controller: PageControllers.BASIC_PAGE,&lt;br /&gt;
                    elements: []&lt;br /&gt;
                },&lt;br /&gt;
&lt;br /&gt;
                right: {&lt;br /&gt;
                    controller: PageControllers.BASIC_PAGE,&lt;br /&gt;
                    elements: []&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Регистрация происходит через метод ''GuideAPI.registerGuide(unique, params)'', где '''''unique'''''&amp;amp;nbsp;– уникальный идентификатор, '''''params'''''&amp;amp;nbsp;– объект с параметрами.&amp;lt;br/&amp;gt; Параметры:&lt;br /&gt;
&lt;br /&gt;
*Объект '''''textures''''' задаёт текстуры для интерфейса. Если не объявлен, будет использоваться стандартное оформление&lt;br /&gt;
**&amp;lt;u&amp;gt;''background''&amp;lt;/u&amp;gt;''&amp;amp;nbsp;''– текстура заднего фона&lt;br /&gt;
**&amp;lt;u&amp;gt;''nextLink''&amp;lt;/u&amp;gt;''– текстура для кнопки “вперёд”''&lt;br /&gt;
**&amp;lt;u&amp;gt;''preLink''&amp;lt;/u&amp;gt; – текстура для кнопки “назад”&lt;br /&gt;
**''&amp;lt;u&amp;gt;сlose&amp;lt;/u&amp;gt;'' – текстура для кнопки закрытия интерфейса&lt;br /&gt;
*Объект '''item''' задаёт ид предмета, при клике которым происходит открытие интерфейса. Является необязательным параметром&lt;br /&gt;
*Если '''debug''' объявлен и равен true, у интерфейса вызывается метод setDebugEnabled(true)&lt;br /&gt;
*Объект '''pages''' содержит страницы. Каждая имеет правую'''''(right)''''' и левую'''''(left)''''' секции, для которых задаются контроллеры'''''(controller)'''''. Любую из них можно пропустить. '''''nextLink'''''&amp;amp;nbsp;содержит идентификатор страницы, на которую происходит переход при нажатии кнопки “вперёд”, '''''preLink'''''при нажатии кнопки “назад”. При открытии интерфейса происходит загрузка страницы с идентификатором '''''default'''''.&lt;br /&gt;
&lt;br /&gt;
== Контроллеры ==&lt;br /&gt;
&lt;br /&gt;
'''Контроллер''' – функция, указанная под идентификатором '''''controller'''''&amp;amp;nbsp;в объекте секции. GuideAPI предоставляет стандартные контроллеры, находящиеся в объекте ''PageControllers'', которые позволяют решить большинство задач.&lt;br /&gt;
&lt;br /&gt;
=== BASIC_PAGE ====Контроллер ''BASIC_PAGE''&amp;amp;nbsp;позволяет создавать простые страницы с текстом.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    controller: PageControllers.BASIC_PAGE,&lt;br /&gt;
    elements: [&lt;br /&gt;
        {text: &amp;quot;I'm simple text!&amp;quot; },&lt;br /&gt;
        { text: &amp;quot;I'm big text!&amp;quot;, size: 20 },&lt;br /&gt;
        { text: &amp;quot;I'm red text!&amp;quot;, color: android.graphics.Color.RED },&lt;br /&gt;
        { text: &amp;quot;I'm underlined bold text!&amp;quot;, underline: true, bold: true },&lt;br /&gt;
        { text: &amp;quot;I'm link. Click me, please!&amp;quot;, color: android.graphics.Color.BLUE, link: &amp;quot;page2&amp;quot; }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Объект '''''elements''''' доступен для использования во всех стандартных контроллерах. Он содержит массив строк, каждая из которых отображается на новой строке. Если текст не влезает в границы секции, он будет перенесён.&amp;lt;br/&amp;gt; Параметры текста:&lt;br /&gt;
&lt;br /&gt;
*'''size''' – размер шрифта&lt;br /&gt;
*'''color'''&amp;amp;nbsp;– цвет текста(android.graphics.Color.RED, android.graphics.Color.BLUE и тд)&lt;br /&gt;
*'''underline''' – подчёркнутый ли текст&lt;br /&gt;
*'''bold''' – жирный ли текст&lt;br /&gt;
*'''link''' – идентификатор страница, на которую будет осуществлён переход при клике на текст&lt;br /&gt;
=== ITEM_PAGE ===&lt;br /&gt;
&lt;br /&gt;
Котроллер ''ITEM_PAGE ''позволяет создавать страницы с группой предметов и текстом.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;{&lt;br /&gt;
    controller: PageControllers.ITEM_PAGE,&lt;br /&gt;
    items: [&lt;br /&gt;
        { id: 1, data: 1 },&lt;br /&gt;
        { id: 264 },&lt;br /&gt;
        { id: 266 },&lt;br /&gt;
    ],&lt;br /&gt;
    elements: [&lt;br /&gt;
        { text: &amp;quot;I'm text&amp;quot;, size: 20 },&lt;br /&gt;
        { text: &amp;quot;And I'm text too&amp;quot; }&lt;br /&gt;
    ]&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''items''''' – массив из отображаемых предметов. Первый из них будет помещён в большой слот.&lt;br /&gt;
&lt;br /&gt;
=== ITEM_GRID_PAGE ===&lt;br /&gt;
Контроллер ''ITEM_GRID_PAGE ''позволяет располагать предметы сеткой.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;{&lt;br /&gt;
    controller: PageControllers.ITEM_GRID_PAGE,&lt;br /&gt;
    columns: 8,&lt;br /&gt;
    item_size: 30,&lt;br /&gt;
    items: [&lt;br /&gt;
        { id: 1, data: 1, count: 34 },&lt;br /&gt;
        { id: 264, link: &amp;quot;test&amp;quot; },&lt;br /&gt;
        {&lt;br /&gt;
            id: 265,&lt;br /&gt;
            clicker: {&lt;br /&gt;
                onClick: function() {&lt;br /&gt;
                    alert(&amp;quot;CLICK!!!!!!!!!!!!!!!!!!11&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        { id: 4 },&lt;br /&gt;
        { id: 5 },&lt;br /&gt;
        { id: 6 },&lt;br /&gt;
        { id: 7 },&lt;br /&gt;
        { id: 8 },&lt;br /&gt;
        { id: 9 },&lt;br /&gt;
        { id: 10 },&lt;br /&gt;
    ],&lt;br /&gt;
    elements: [&lt;br /&gt;
        { text: &amp;quot;HELLO&amp;quot;, size: 15, underline: true, bold: true }&lt;br /&gt;
    ]&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''''items''''' – массив из отображаемых предметов&amp;lt;br/&amp;gt; '''''сolumns''''' – количество колонок. По умолчанию 6&amp;lt;br/&amp;gt; '''''item_size''''' – размер предмета. По умолчанию 60&lt;br /&gt;
&lt;br /&gt;
Параметры для предметов:&lt;br /&gt;
&lt;br /&gt;
*'''''link''''' – идентификатор страница, на которую будет осуществлён переход при клике на текст &lt;br /&gt;
*'''''clicker''''' – объект клика. &lt;br /&gt;
**&amp;lt;u&amp;gt;''onClick''&amp;lt;/u&amp;gt; – короткий клик &lt;br /&gt;
**''&amp;lt;u&amp;gt;onLongClick&amp;lt;/u&amp;gt;'' - длинный   &lt;br /&gt;
&lt;br /&gt;
=== OTO_RECIPE_PAGE ===&lt;br /&gt;
&lt;br /&gt;
Котроллер ''OTO_RECIPE_PAGE'' позволяет создавать страницы с рецептами ''“Один к одному”''.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;{&lt;br /&gt;
    controller: PageControllers.OTO_RECIPE_PAGE,&lt;br /&gt;
    title: &amp;quot;Furnace Recipe&amp;quot;,&lt;br /&gt;
    type: 0,&lt;br /&gt;
    bar_texture: &amp;quot;furnace_bar_guide&amp;quot;,&lt;br /&gt;
    recipes: [&lt;br /&gt;
        {&lt;br /&gt;
            input: { id: 4, data: 1, count: 10 },&lt;br /&gt;
            output: { id: 264 }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            input: { id: 264 },&lt;br /&gt;
            output: { id: 265 }&lt;br /&gt;
        }&lt;br /&gt;
    ],&lt;br /&gt;
    elements: [&lt;br /&gt;
        { text: &amp;quot;Text&amp;quot; },&lt;br /&gt;
        { text: &amp;quot;And Text&amp;quot; },&lt;br /&gt;
    ]&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если '''''type''''' равен 0, '''''recipes''''' – массив из объектов, в которых содержится предмет на вход'''''(input)''''' и предмет на выход'''''(output)'''''.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;{&lt;br /&gt;
    controller: PageControllers.OTO_RECIPE_PAGE,&lt;br /&gt;
    title: &amp;quot;Furnace Recipe&amp;quot;,&lt;br /&gt;
    type: 1,&lt;br /&gt;
    bar_texture: &amp;quot;furnace_bar_guide&amp;quot;,&lt;br /&gt;
    recipes: [&lt;br /&gt;
        { id: 1 },&lt;br /&gt;
        { id: 17, data: 1 }&lt;br /&gt;
    ],&lt;br /&gt;
    elements: [&lt;br /&gt;
        { text: &amp;quot;This is type 1&amp;quot; }&lt;br /&gt;
    ]&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если '''''type''''' равен 1, '''''recipes''''' – массив из объектов, которые содержат информацию о предмет на вход. В выходной слот будет помещаться результат обработки указанного предмета в печи.&amp;lt;br/&amp;gt; Остальные параметры:&lt;br /&gt;
&lt;br /&gt;
*'''''title''''' – заголовок страницы&lt;br /&gt;
*'''''bar_texture''''' – текстура для индикатора прогресса&lt;br /&gt;
&lt;br /&gt;
=== GRID_3x3_PAGE ===&lt;br /&gt;
Котроллер ''GRID_3x3_PAGE'' позволяет создавать страницы рецептов с сеткой 3x3.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;{&lt;br /&gt;
    controller: PageControllers.GRID_3x3_PAGE,&lt;br /&gt;
    title: &amp;quot;Workbench Recipe&amp;quot;,&lt;br /&gt;
    recipes: [{&lt;br /&gt;
        grid: [&lt;br /&gt;
            [&amp;quot;b&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;b&amp;quot;],&lt;br /&gt;
            [&amp;quot;b&amp;quot;, &amp;quot;g&amp;quot;, &amp;quot;b&amp;quot;],&lt;br /&gt;
            [&amp;quot;b&amp;quot;, &amp;quot;8&amp;quot;, &amp;quot;b&amp;quot;]&lt;br /&gt;
        ],&lt;br /&gt;
        materials: {&lt;br /&gt;
            &amp;quot;b&amp;quot;: { id: 4, data: 0 },&lt;br /&gt;
            &amp;quot;g&amp;quot;: { id: 1, data: 0 },&lt;br /&gt;
        },&lt;br /&gt;
        result: { id: 61, count: 3 }&lt;br /&gt;
    }],&lt;br /&gt;
    elements: [&lt;br /&gt;
        { text: &amp;quot;Text&amp;quot;}&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;
Для создания собственных контроллеров необходимо в поле ''controller'' передать функцию, которая будет рисовать элементы на странице.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;PageControllers[&amp;quot;MY_TEST_PAGE&amp;quot;] = function(params, elements, container, section) {&lt;br /&gt;
    let x = section === &amp;quot;left&amp;quot; ? 50 : 550;&lt;br /&gt;
    elements[&amp;quot;text_&amp;quot; + section + &amp;quot;_&amp;quot; + i] = {&lt;br /&gt;
        type: &amp;quot;text&amp;quot;,&lt;br /&gt;
        x: section,&lt;br /&gt;
        y: 40,&lt;br /&gt;
        text: params.title&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    if (params.elements)&lt;br /&gt;
        GuideHelper.drawTextArray(params.elements, x, 55, globalSize, elements, section);&lt;br /&gt;
};&lt;br /&gt;
//...&lt;br /&gt;
{&lt;br /&gt;
    controller: PageControllers.MY_TEST_PAGE,&lt;br /&gt;
    title: &amp;quot;I'm title&amp;quot;,&lt;br /&gt;
    elements: [&lt;br /&gt;
        { text: &amp;quot;Text&amp;quot; }&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;
*'''''params''''' – объект секции, для которой вызывается функция&lt;br /&gt;
*'''''elements''''' – элементы интерфейса&lt;br /&gt;
*'''''container''''' – контейнер интерфейса&lt;br /&gt;
*'''''section''''' – название секции(left, right)&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/EntityState&amp;diff=2655</id>
		<title>InnerCore/Libs/EntityState</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/EntityState&amp;diff=2655"/>
				<updated>2026-07-14T20:09:12Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Загрузка ==&lt;br /&gt;
Библиотека является частью мода с открытым исходным кодом A.P.O. Craft. Последняя версия библиотеки находится по [https://github.com/mineprogramming/APO_craft/blob/master/lib/EntityState.js этому адресу].&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
Разрешено неограниченное использование данной библиотеки в собственных модификациях&lt;br /&gt;
&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&lt;br /&gt;
&lt;br /&gt;
Используя данный продукт вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
== Документация ==&lt;br /&gt;
=== Подключение ===&lt;br /&gt;
Чтобы подключить библиотеку, необходимо расположить файл библиотеки в папку lib в корне мода написать следующее в начале вашего кода:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;IMPORT(&amp;quot;EntityState&amp;quot;);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После этого вам станет доступен весь функционал библиотеки.&lt;br /&gt;
&lt;br /&gt;
=== Использование ===&lt;br /&gt;
Данная библиотека содержит статический класс ''EntityState'', хранящий все необходимые методы и константы, а так же конструктор ''EntityStateInfo'', предназначенный для хранения информации и упрощающий доступ к нему.&lt;br /&gt;
&lt;br /&gt;
Константы ''EntityState:''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;EntityState.STANDING = 1;  // Игрок неподвижен в горизонтальной плоскости&lt;br /&gt;
EntityState.STEALING = 2;  // Игрок крадется или медленно перемещается&lt;br /&gt;
EntityState.WALKING = 4;   // Игрок идет с нормальной скоростью&lt;br /&gt;
EntityState.RUNNING = 8;   // Игрок бежит&lt;br /&gt;
EntityState.JUMPING = 16;  // Игрок в прыжке&lt;br /&gt;
EntityState.FALLING = 32;  // Игрок падает с большой высоты&lt;br /&gt;
EntityState.SWIMMING = 64; // Игрок плывет под водой&lt;br /&gt;
EntityState.FLOATING = 128;// Игрок плывет по поверхности воды&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данные константы являются флагами, и поэтому могут быть объеденины с помощью симвла &amp;quot;|&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Методы класса ''EntityState:''&lt;br /&gt;
&lt;br /&gt;
*getEntityState(entty) - возвращает объект ''EntityStateInfo'', содержащий информацию о текущем действии сущности entity &lt;br /&gt;
*getPlayerState() - возвращает объект ''EntityStateInfo'', содержащий информацию о текущем действии игрока &lt;br /&gt;
*getSpeed(entity) - возвращает линейную горизонтальную составляющую скорости сущности (значение больше нуля) &lt;br /&gt;
&lt;br /&gt;
Методы и поля объектов ''EntityStateInfo:''&lt;br /&gt;
&lt;br /&gt;
*state - поле, содержащее текущее состояние сущности. Является результатом побитового &amp;quot;или&amp;quot; всех текущих флагов. &lt;br /&gt;
*checkFlags(flags) - проверяет, присутствуют ли в текущем состоянии данные флаги. Пример: &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;let state = EntityState.getPlayerState();&lt;br /&gt;
Game.message(state.checkFlags(EntityState.RUNNING)) // Выведет 0, если игрок не бежит,8 в противном случае&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*toString() - возвращает строковое представление всех флагов. Например, если игрок бежит &amp;quot;вприпрыжку&amp;quot;, ''toString()'' вернет ''&amp;quot;RUNNING | JUMPING&amp;quot;'' (в основном используется для отладки). &lt;br /&gt;
&lt;br /&gt;
Стоит заметить, что библиотека на данный момент не учитывает зелья или средства передвижения (второе невозможно технически), поэтому может выдавать неожиданные результаты.&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/EnergyNet&amp;diff=2654</id>
		<title>InnerCore/Libs/EnergyNet</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/EnergyNet&amp;diff=2654"/>
				<updated>2026-07-14T20:02:25Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Данная библиотека для Inner Core представляет собой инструмент для быстрого создания новых типов энергии и имеет большой функционал для работы с ними.&lt;br /&gt;
&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
Последняя версия (v9) - [https://github.com/MineExplorer/IC_Libraries/releases/tag/energy-net-v9 скачать]&amp;lt;br/&amp;gt; Файлы:&amp;lt;br/&amp;gt; energy-net.js - сама библиотека&amp;lt;br/&amp;gt; energy-net.d.ts - заголовочный файл (API)&lt;br /&gt;
&lt;br /&gt;
== Импорт ==&lt;br /&gt;
Для добавления библиотеки в мод ее файл ''(energy-net.js)'' нужно добавить в папку ''lib/'' в директории мода (если таковой нету, то ее нужно создать).Для импорта библиотеки в мод в заголовочном файле (или если он отсутствует в первом файле кода) следует добавить строку:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;EnergyNet&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Модули и классы ==&lt;br /&gt;
#''EnergyTypeRegistry'' - модуль для регистрации новых типов энергии&lt;br /&gt;
#''EnergyTileRegistry'' - модуль для привязки типов энергии к TileEntity&lt;br /&gt;
#''EnergyGridBuilder'' - модуль построения энергосетей&lt;br /&gt;
#''EnergyNet'' - модуль, хранящий энергосети&lt;br /&gt;
#''EnergyNode'' - базовый класс энергоузла&lt;br /&gt;
#''EnergyGrid'' - класс узла блока-проводника&lt;br /&gt;
&lt;br /&gt;
== Механика передачи энергии ==&lt;br /&gt;
Энергия может передаваться как по проводам, так и напрямую от генератора к соседним механизмам. Для этого строится граф (энергосеть), в которым механизмы и блоки-проводники являются узлами. Энергия передаётся пакетами от блока-источника по всем узлам, с которыми он соединён. Каждый пакет имеет определённое количество энергии и напряжение (количество энергии, которое в нём было изначально).&lt;br /&gt;
&lt;br /&gt;
В целях оптимизации провода одного типа, соединенные друг с другом, объединяются в один энергоузел, в то время как каждый блок-механизм имеет свой энергоузел.&lt;br /&gt;
&lt;br /&gt;
== Создание нового типа энергии ==&lt;br /&gt;
''EnergyTypeRegistry.assureEnergyType(&amp;quot;name&amp;quot;, value)'' - создает новый тип энергии и возвращает его, если такой тип энергии уже существует, новый создан не будет, а вернется уже существующий, таким образом если 2 мода создают один тип энергии, он будет общий.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Параметры:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*''name'' - уникальное название энергии, обычно используется сокращение (''&amp;quot;Eu&amp;quot; - energy units, &amp;quot;RF&amp;quot; - redstone flux'' и т.п.)&lt;br /&gt;
*''value'' - сколько ''Eu'' (единиц энергии ''IndustrialCraft'') содержится в 1 единице данного типа энергии, данное значение используется для конвертации из одного вида энергии в другой. ''Энергия Eu принята за эталон.''&lt;br /&gt;
&lt;br /&gt;
Возвращает функция тип с данным именем (созданный или импортированный), который обладает следующими методами и значениями:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;''energyType''&amp;gt;''.name'' - имя данного типа энергии.&lt;br /&gt;
*&amp;lt;''energyType''&amp;gt;''.registerWire(id, value, energyGridClass?)'' – регистрирует провод с данным id. Параметры:&lt;br /&gt;
**''value'' - лимит на размер пакета энергии (напряжение), который блок может проводить. При превышении максимального напряжения размер пакета уменьшается до лимита провода и вызывается функция onOverload в классе провода.&lt;br /&gt;
**''energyGridClass'' - опционально, позволяет задать свой класс провода, который должен быть наследован от класса ''EnergyGrid''.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;// в начале мода импортируем библиотеку (см. выше)&lt;br /&gt;
&lt;br /&gt;
// создаем тип энергии redstone flux&lt;br /&gt;
var energyRF = EnergyTypeRegistry.assureEnergyType(&amp;quot;RF&amp;quot;, 0.25);&lt;br /&gt;
// регистрируем блок-проводник для данного типа энергии&lt;br /&gt;
energyRF.registerWire(BlockID.RFconduct, 2000);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Привязка типов энергии к TileEntity ==&lt;br /&gt;
''EnergyTileRegistry.addEnergyTypeForId(blockId, energyType)'' - добавляет в tile entity объект класса [[InnerCore/Libs/EnergyNet#Объект_EnergyNode|EnergyNode]], который может быть получен через ''this.energyNode'' в функциях tile entity, а так же дополнительные события, которые позволяют ему работать с данным типом энергии. К одному tile entity можно привязать несколько разных типов энергии.&amp;lt;br/&amp;gt; &amp;lt;u&amp;gt;Параметры:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*''blockId'' – id блока, на который был зарегистрирован нужный tile entity. &lt;br /&gt;
*''energyType'' - тип энергии, который требуется к нему привязать. &lt;br /&gt;
&lt;br /&gt;
Новые события:&lt;br /&gt;
&lt;br /&gt;
*''energyTick: function(type, node) { /* … */ }'' - вызывается каждый тик для энергоузла tile entity.&amp;lt;br/&amp;gt; Параметры: &lt;br /&gt;
**''type'' - название типа энергии, для которого вызвано это событие. &lt;br /&gt;
**''node'' - энергоузел механизма, позволяет добавлять энергию   &lt;br /&gt;
*''energyReceive: function(type, amount, voltage) { /* … */ }'' – вызывается при приёме пакета энергии данным tile entity. Должна возвращать количество энергии, которое удалось добавить.&amp;lt;br/&amp;gt; Параметры: &lt;br /&gt;
**''type'' - название типа энергии &lt;br /&gt;
**''amount'' – количество энергии &lt;br /&gt;
**''voltage'' – напряжение энергии   &lt;br /&gt;
*''canReceiveEnergy: function(side, type) {return boolean;}'' – определяет, может ли tile entity получать энергию данного типа и с каких сторон. Вызывается при попытке соединения tile entity к энергосети. По умолчанию возвращает ''true''. &lt;br /&gt;
*''canExtractEnergy: function(side, type) {return boolean;}'' – определяет, с каких сторон tile entity может выдавать энергию. По умолчанию возвращает ''true''. &lt;br /&gt;
*''isConductor': function(type) {return boolean;}'' – определяет, может ли tile entity проводить энергию данного типа. По умолчанию возвращает ''false''. &lt;br /&gt;
&lt;br /&gt;
== Объект EnergyNode ==&lt;br /&gt;
Данный объект представляет собой узел энергосети.&amp;lt;br/&amp;gt; &amp;lt;u&amp;gt;Основные методы:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*''add(amount, voltage)'' - добавляет в сеть данное кол-во энергии ''(amount)'', возвращает, какое кол-во энергии добавить не удалось из-за переполнения (0, если вся энергия добавлена). Если значение ''voltage'' (напряжение) не указано, то оно будет равно ''amount''. &lt;br /&gt;
*''addCoords(x, y, z)'' - добавляет блок на координатах x, y, z в список блоков энергоузла (позволяет, например, сделать проводящим энергию блоки обшивки в многоблочном механизме) &lt;br /&gt;
*''removeCoords(x, y, z)'' - удаляет блок из энергоузла &lt;br /&gt;
*''addConnection(node)'' - добавляет выходящее соединение с другим узлом &lt;br /&gt;
*''removeConnection(node) ''- удаляет соединение с узлом &lt;br /&gt;
*''resetConnections()'' - удаляет все соединения с другими узлами &lt;br /&gt;
*''destroy()'' - удаляет энергоузел. &lt;br /&gt;
&lt;br /&gt;
== Работа с энергетическими сетями ==&lt;br /&gt;
''EnergyNet.getNodeOnCoords(blockSource, x, y, z)'' – возвращает узел на данных координатах, если он существует. Используется в IndustrialCraft для нанесения урона от оголённых проводов и для мультиметра.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
=== Генератор ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;// Cоздадим блок с id &amp;quot;RFgenerator&amp;quot;, который будет вырабатывать энергию.&lt;br /&gt;
TileEntity.registerPrototype(BlockID.RFgenerator, {&lt;br /&gt;
    canReceiveEnergy: function(){&lt;br /&gt;
        return false; // не может получать энергию&lt;br /&gt;
    },&lt;br /&gt;
    energyTick: function(type, src) {&lt;br /&gt;
        src.add(10); // генерирует 10 RF за тик.&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// привяжем к этому tile entity наш тип энергии&lt;br /&gt;
EnergyTileRegistry.addEnergyTypeForId(BlockID.RFgenerator, energyRF);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&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;// Cоздадим блок с id &amp;quot;RFconsumer&amp;quot;, который будет потреблять энергию для производства алмазов.&lt;br /&gt;
TileEntity.registerPrototype(BlockID.RFconsumer, {&lt;br /&gt;
    defaultValues: {&lt;br /&gt;
        progress: 0 // сохраняемое значение прогресса работы&lt;br /&gt;
    },&lt;br /&gt;
    canExtractEnergy: function(side, type) {&lt;br /&gt;
        return false; // не может отдавать энергию&lt;br /&gt;
    },&lt;br /&gt;
    energyReceive: function(type, amount, voltage) {&lt;br /&gt;
        this.data.progress += amount; // увеличиваем прогресс производства алмаза.&lt;br /&gt;
        return amount; // и возвращаем сколько забрали энергии&lt;br /&gt;
    },&lt;br /&gt;
    tick: function(){&lt;br /&gt;
        if(this.data.progress &amp;gt;= 10000){&lt;br /&gt;
            this.data.progress = 0;&lt;br /&gt;
            World.drop(this.x, this.y +1, this.z, 264, 1); // дропнуть алмаз на координатах tile entity.&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// привяжем к этому tile entity наш тип энергии&lt;br /&gt;
EnergyTileRegistry.addEnergyTypeForId(BlockID.RFconsumer, energyRF);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Хранилище ===&lt;br /&gt;
&lt;br /&gt;
Стороны приёма и отправки энергии для хранилища должны быть разделены. Иначе два хранилища будут бесконечно обмениваться энергией друг с другом, уменьшая количество энергии, отдаваемое другим tile enity.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;//Cоздадим блок с id &amp;quot;RFstorage&amp;quot; и настроим его так, чтобы он отдавал энергию снизу, а принимал сбоку или сверху.&lt;br /&gt;
TileEntity.registerPrototype(BlockID.RFstorage, {&lt;br /&gt;
    defaultValues: {&lt;br /&gt;
        energy: 0 // сохраняемое значение, обозначающее запасенную энергию&lt;br /&gt;
    },&lt;br /&gt;
    canReceiveEnergy: function(side, type) {&lt;br /&gt;
        return side != 0; // side != 0 выведет true, если сторона любая, кроме нижней.&lt;br /&gt;
    } ,&lt;br /&gt;
    canExtractEnergy: function(side, type) {&lt;br /&gt;
        return side == 0; // выведет true при подключении блока для выхода энергии с нижней стороны.&lt;br /&gt;
    },&lt;br /&gt;
    getCapacity: function(){&lt;br /&gt;
        return 2e6; // установим лимит хранилища энергии в 2 миллиона (2e6 - это способ записи числа 2000000)&lt;br /&gt;
    },&lt;br /&gt;
    energyReceive: function(type, amount, voltage) {&lt;br /&gt;
        amount = Math.min(amount, 1000); // устанавливаем максимальное количество энергии, которое может принять механизм равным 1000.&lt;br /&gt;
        var add = Math.min(amount, this.getCapacity() - this.data.energy); // уменьшаем количество энергии, так, чтобы хранилище не переполнялось;&lt;br /&gt;
        this.data.energy += add; // добавляем энергию в хранилище&lt;br /&gt;
        return add; // и возвращаем сколько забрали энергии&lt;br /&gt;
    },&lt;br /&gt;
    energyTick: function(type, src){&lt;br /&gt;
        var output = Math.min(1000, this.data.energy); // определяем, сколько энергии блок может отдать&lt;br /&gt;
        this.data.energy += src.add(output) - output; // прибавляем к хранилищу количество энергии, которое осталось после отправки пакета, и вычитаем сколько отправляли.&lt;br /&gt;
    },&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// привяжем к этому tile entity наш тип энергии&lt;br /&gt;
EnergyTileRegistry.addEnergyTypeForId(BlockID.RFstorage, energyRF);&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/EnergyLib&amp;diff=2653</id>
		<title>InnerCore/Libs/EnergyLib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/EnergyLib&amp;diff=2653"/>
				<updated>2026-07-14T20:01:16Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-size:large;&amp;quot;&amp;gt;'''!Поддержка библиотеки прекращена, используйте [[InnerCore/Libs/EnergyNet|EnergyNet]]!'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Данная библиотека для Core Engine представляет собой инструмент для быстрого создания новых типов энергии и работы с ними. &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Подключение ==&lt;br /&gt;
Для добавления библиотеки в мод ее файл ([https://github.com/MineExplorer/IndustrialCraft_2/blob/master/IndustrialCraft²/lib/energylib.js ''energylib.js'']) нужно добавить в директорию ''lib/'' в директории мода (если таковой нету, то ее нужно создать).&lt;br /&gt;
&lt;br /&gt;
Для импорта библиотеки в мод в заголовочном файле (или если он остутвует в первом файле кода) следует добавить строку ''importLib(&amp;quot;energylib.js&amp;quot;, &amp;quot;*&amp;quot;) .''&lt;br /&gt;
&lt;br /&gt;
= Модули =&lt;br /&gt;
#''EnergyLibCore'' - модуль для технической работы с библиотекой, осуществляет доступ к объекту ее конфигурации.''' &lt;br /&gt;
#''EnergyTypeRegistry - ''модуль для регистрации новых типов энергии. &lt;br /&gt;
#''EnergyTileRegistry - ''модуль для привязки типов энергии к Tile Entity. &lt;br /&gt;
&lt;br /&gt;
= Создание новых типов энергии =&lt;br /&gt;
''EnergyTypeRegistry.assureEnergyType(&amp;quot;name&amp;quot;, value)'' - создает новый тип энергии и возвращает его, если такой тип энергии уже существует, новый создан не будет, а вернется уже существующий, таким образом если 2 мода создают один тип энергии, он будет общий.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;&amp;lt;u style=&amp;quot;text-underline:black&amp;quot;&amp;gt;Параметры:&amp;lt;/u&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*name - уникальное название энергии, обычно используется сокращение (&amp;quot;Eu&amp;quot; - energy units, &amp;quot;RF&amp;quot; - redstone flux и т.п.) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family:&amp;quot;&amp;gt;•&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;value - сколько Eu (единиц энергии industrial craft) содержится в 1 единице данного типа энергии, данное значение используется для конвертации из одного вида энергии в другой. Энергия Eu принята за эталон.&lt;br /&gt;
&lt;br /&gt;
Возвращает функция тип с данным именем (созданный или импортированый), который обладает следующими методами и значениями:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;energyType&amp;gt;.name - имя данного типа энергии. &lt;br /&gt;
*&amp;lt;span style=&amp;quot;line-height:109%&amp;quot;&amp;gt;&amp;lt;energyType&amp;gt;.&amp;lt;span style=&amp;quot;font-size:11.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:109%&amp;quot;&amp;gt;getWireSpecialType() - возвращает специальный тип блока, который будет являться проводником данного типа энергии.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;'''&amp;lt;span style=&amp;quot;font-size:11.0pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;Пример:&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;// в начале мода импортируем библиотеку (она должна находиться в lib/)&lt;br /&gt;
importLib(&amp;quot;energylib.js&amp;quot;, &amp;quot;*&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// создаем тип энергии redstone flux var energyRedstoneFlux = EnergyTypeRegistry.assureEnergyType(&amp;quot;RF&amp;quot;, 0.25);&lt;br /&gt;
// создаем блок-проводник для данного типа энергии&lt;br /&gt;
IDRegistry.genBlockID(&amp;quot;RFconduct&amp;quot;);&lt;br /&gt;
Block.createBlock(&amp;quot;RFconduct&amp;quot;, [&lt;br /&gt;
{name: &amp;quot;RF Conduct&amp;quot;, texture: [[&amp;quot;rf_conduct&amp;quot;, 0]], inCreative: true} // текстура images/terrain-atlas/rf_conduct_0.png должна находиться в ресурсах мода  ], energyRestroneFlux.getWireSpecialType()); &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= Привязка типов энергии к TileEntity =&lt;br /&gt;
Для того, чтобы привязать тип энергии к tile entity используется метод&lt;br /&gt;
&lt;br /&gt;
''EnergyTileRegistry.addEnergyTypeForId(tileEntityId, energyType)'' - добавляет tile entity&amp;amp;nbsp; с данным id дополнительные события, которые позволяют ему работать с данным типом энергии. К одному tile entity можно привязать несколько разных типов энергии.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;&amp;lt;u style=&amp;quot;text-underline:black&amp;quot;&amp;gt;Параметры:&amp;lt;/u&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*tileEntityId – id блока, на который был зарегистрирован нужный tile entity. &lt;br /&gt;
*energyType - тип энергии, который требуется к нему привязать. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;&amp;lt;u style=&amp;quot;text-underline:black&amp;quot;&amp;gt;Новые&amp;lt;/u&amp;gt;&amp;lt;u style=&amp;quot;text-underline:black&amp;quot;&amp;gt;события&amp;lt;/u&amp;gt;&amp;lt;u style=&amp;quot;text-underline:black&amp;quot;&amp;gt;:&amp;lt;/u&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
energyTick: function(type, src) { /* … */ } - вызывается каждый тик для каждого типа энергии, привязанного к данному tile entity. Параметры:&lt;br /&gt;
&lt;br /&gt;
*type - название типа энергии, для которого вызвано это событие &lt;br /&gt;
*&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;src - объект типа energy source для работы с энергией, о нем речь пойдет позже.&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
energyReceive: function(type, src) { /* … */ } - аналогична energyTick, но вызывается только если в сети есть энергия.&lt;br /&gt;
&lt;br /&gt;
isGenerator: function() {return true;} - данный метод нужно только если tile entity в основном генерирует энергию, а не забирает ее (является генератором), нужна для более точного расчёта.&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;
Несколько tile entity поддерживающих одинаковый тип энергии и соединенные подходящим проводником объединяются в энергетическую сеть. Tile entity имеют возможность забирать энергию из сети и передавать ее туда, при этом вся переданная энергия распределяется равномерно по потребителям.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Объект EnergySource =&lt;br /&gt;
&lt;br /&gt;
Данный объект является интерфейсом для работы с энергией в сети, который передается в события для работы с энергией (src).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;&amp;lt;u style=&amp;quot;text-underline:black&amp;quot;&amp;gt;Методы:&amp;lt;/u&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*src.add(amount) - добавляет в сеть данное кол-во энергии (amount), возвращает, какое кол-во энергии добавить не удалось из-за переполнения (0, если вся энергия добавлена). Обычно данный метод используется в генераторах. &amp;amp;nbsp; &lt;br /&gt;
*src.get(amount) - забирает из сети данное кол-во энергии (amount), возвращает, какое кол-во энергии удалось забрать. &lt;br /&gt;
*src.getAll(amount) - аналогичен методу get, но игнорирует равномерное распределение по всем tile entity в сети, в большинстве случаев лучше использовать get. &lt;br /&gt;
*src.free() - возвращает, сколько в сети есть свободного места для энергии. &lt;br /&gt;
*src.amount() - возвращает, сколько энергии есть в сети. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:108%&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family:&amp;quot;&amp;gt;•&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;src.storage(receive, retreive) - данный метод является функцией хранилищ энергии. Как параметры принимает то, сколько энергии он максимально может принять (reveive) и сколько максимально может отдать (retreive) за данный тик. Возвращает изменение энергии (отрицательное, если энергия была отдана, положительное, если принята). &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;'''Пример 1 - генератор:'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;// требуется создать блок с id &amp;quot;RFgenerator&amp;quot;&lt;br /&gt;
TileEntity.registerPrototype(BlockID.RFgenerator, {&lt;br /&gt;
    isGenerator: function() {&lt;br /&gt;
        return true;&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    energyTick: function(type, src) {&lt;br /&gt;
        src.add(10); // генерирует 10 RF за тик&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// привяжем к этому tile entity наш тип энергии&lt;br /&gt;
EnergyTileRegistry.addEnergyTypeForId(BlockID.RFgenerator, energyRedstoneFlux);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;''&amp;amp;nbsp;''&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;'''Пример 2 - потребитель:'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;// требуется создать блок с id &amp;quot;RFconsumer&amp;quot;&lt;br /&gt;
TileEntity.registerPrototype(BlockID.RFconsumer, {&lt;br /&gt;
    energyTick: function(type, src) {&lt;br /&gt;
        var energy = Math.floor(src.get(10)); // получить от 0 до 10 энергии, Math.floor используется в данном случае для устранения ошибки вычислений, в большинстве случаев это не нужно&lt;br /&gt;
        for (var i = 0; i &amp;lt; energy; i++) { // чем больше энергии, тем больше частиц&lt;br /&gt;
            Particles.addParticle(this.x + Math.random(), this.y + 1, this.z +&lt;br /&gt;
                    Math.random(), 6, 0, .07, 0); // создать частицу над блоком&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// привяжем к этому tile entity наш тип энергии&lt;br /&gt;
EnergyTileRegistry.addEnergyTypeForId(BlockID.RFconsumer, energyRedstoneFlux);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;''&amp;amp;nbsp;''&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;&amp;lt;u style=&amp;quot;text-underline:black&amp;quot;&amp;gt;При соединении 2х этих блоков проводом, созданным ранее один из них будет&amp;lt;/u&amp;gt; &amp;lt;u style=&amp;quot;text-underline:black&amp;quot;&amp;gt;испускать частицы, если потребителей будет несколько, а генератор один, то частиц на&amp;lt;/u&amp;gt; &amp;lt;u style=&amp;quot;text-underline:black&amp;quot;&amp;gt;каждом по отдельности будет меньше, а суммарно столько же.&amp;lt;/u&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;'''Пример 3 - хранилище:'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;// требуется создать блок с id &amp;quot;RFstorage&amp;quot;&lt;br /&gt;
TileEntity.registerPrototype(BlockID.RFstorage, {&lt;br /&gt;
    defaultValues: {&lt;br /&gt;
        energy: 0 // сохраняемое значение, обозначающее запасенную энергию&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    energyTick: function(type, src) {&lt;br /&gt;
        this.data.energy += src.storage(Math.min(20, 1000 - this.data.energy), Math.min(20, this.data.energy)); // вызовем функцию хранилища: передаем не более 20 энергии в тик, при этом отдаем так, чтобы энергии не стало меньше 0, а принимаем так, чтобы не было больше 1000&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// привяжем к этому tile entity наш тип энергии&lt;br /&gt;
EnergyTileRegistry.addEnergyTypeForId(BlockID.RFstorage, energyRedstoneFlux);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;line-height:107%&amp;quot;&amp;gt;&amp;lt;u style=&amp;quot;text-underline:black&amp;quot;&amp;gt;Для проверки хранилища, можно сначала подзаряжать его от генератора, а потом&amp;lt;/u&amp;gt; &amp;lt;u style=&amp;quot;text-underline:black&amp;quot;&amp;gt;отключать генератор и подключать потребитель, который будет работать от него&amp;lt;/u&amp;gt; &amp;lt;u style=&amp;quot;text-underline:black&amp;quot;&amp;gt;ограниченное время.&amp;lt;/u&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/Dimensions&amp;diff=2652</id>
		<title>InnerCore/Libs/Dimensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/Dimensions&amp;diff=2652"/>
				<updated>2026-07-14T20:00:25Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dimensions - библиотека, значительно упрощающая процесс создания измерений. В этой документации будут описаны ее основные возможности и функционал.&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;&lt;br /&gt;
|-&lt;br /&gt;
| Версия&lt;br /&gt;
| Ссылка&lt;br /&gt;
| Список изменений&lt;br /&gt;
|-&lt;br /&gt;
| '''2'''&lt;br /&gt;
| [https://raw.githubusercontent.com/mineprogramming/APO_craft/d93907979d4113ec9d05da892502eee27264a848/lib/dimensions.js Скачать]&lt;br /&gt;
| Фикс ошибки получения координат в функции генерации чанка (by IchZerowan)&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;dimensions&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Генерация ==&lt;br /&gt;
Для генерации измерения используется объект&amp;lt;span&amp;gt;&amp;lt;span class=&amp;quot;fctbNone&amp;quot;&amp;gt;Dimension. В конструктор передаются параметры, связанные с измерением в следующем формате:&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
var dim007 = new Dimension({&lt;br /&gt;
    name: &amp;quot;dim007&amp;quot;, // Название измерения&lt;br /&gt;
    &lt;br /&gt;
    generation: { //Генерация&lt;br /&gt;
        layers: [&lt;br /&gt;
             //Слои генерации &lt;br /&gt;
        ],&lt;br /&gt;
        &lt;br /&gt;
        decoration: {&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    environment: {&lt;br /&gt;
        &lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    callbacks: { &lt;br /&gt;
        // Основные коллбеки измерения&lt;br /&gt;
        // Здесь приведены все коллбеки измерений, ненужные можно опустить.&lt;br /&gt;
        tick: function() { &lt;br /&gt;
            &lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        generateChunk: function(chunkX, chunkZ) { &lt;br /&gt;
            // Генерация чанка&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        loaded: function() {&lt;br /&gt;
            // Загрузка измерения&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        unloaded: function() {&lt;br /&gt;
            // Выгрузка  измерения&lt;br /&gt;
        }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Слои генерации ===&lt;br /&gt;
Основной единицей генерации является слой. Слоев может быть несколько и каждый из них отвечает за отдельную часть генерации ландшафта: различные биомы, слой бедрока, метеориты, парящие в воздухе. Каждый слой представляет из себя json-объект следующего содержания:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;{ &lt;br /&gt;
    range: [0, 80],&lt;br /&gt;
    noise: {&lt;br /&gt;
        octaves: {&lt;br /&gt;
            count: 4,&lt;br /&gt;
            weight: 0.6,&lt;br /&gt;
            scale: [1, 0.4, 1]&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
                &lt;br /&gt;
    gradient: [[-1, 0.8], [-0.6, 0.5], [-0.2, 0.2], [0.2, 0.9], [0.6, 0.7], [1, 0.1]],&lt;br /&gt;
    terrain: {&lt;br /&gt;
        base: 1,&lt;br /&gt;
        cover: {&lt;br /&gt;
             height: 4,&lt;br /&gt;
             top: 2,&lt;br /&gt;
             block: 3&lt;br /&gt;
        },&lt;br /&gt;
    }&lt;br /&gt;
},&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-highlight mw-content-ltr&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;Рассмотрим каждую часть кода подробнее:&amp;lt;/div&amp;gt;&lt;br /&gt;
*range - диапазон высоты, в котором работает генерация. В данном примере ландшафт будет генерироваться на высоте 0-80 блоков. Единственный обязательный параметр.&lt;br /&gt;
*noise - описание [https://ru.wikipedia.org/wiki/Шум_Перлина шума Перлина ], лежащего в основе генерации Подробнее в разделе[https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/Dimensions#.D0.9A.D0.B0.D1.80.D1.82.D1.8B_.D1.88.D1.83.D0.BC.D0.B0 Карты шума]. Таких шумов может несколько, в таком случае их следует записывать в виде массива и они будут накладываться.&lt;br /&gt;
*heights - сродни noise, но накладывается поверх шума. Имеет такой же формат. Используется для генерации мелких биомов (речки, горы)&lt;br /&gt;
*gradient - описание функции [https://ru.wikipedia.org/wiki/Градиент градиента ], которая будет применена к шуму. Отвечает за то, как примерно будет выглядеть ландшафт. Задается в виде набора точек. Между точками интерполируется (соединяется плавной кривой).&lt;br /&gt;
*terrain - настройки блоков нашей генерации, могут содержать следующее:&lt;br /&gt;
**base - блок, служащий основанием для генерации. В данном случае, камень. Можно указать как id и дату (в виде массива из двух элементов либо объекта с полями id, deata), так и просто id.&lt;br /&gt;
**cover - слои блоков, покрывающих генерацию сверху (в нормальной генерации мира это земля и трава). Объект cover имеет три поля: height - высота верхнего слоя, block - основной блок покрытия, top - самый верхний слой. Все блоки задаются таким же образом, как и base.&lt;br /&gt;
**filling - параметры заполнения пустот в генерации чем-либо. Пример - вода в обычном мире и лава в нижнем. Объект состоит из полей height - высота, до которой будет заполнен слой, и block - непосредственно сам блок, которым производится заполнение.&lt;br /&gt;
&lt;br /&gt;
=== Карты шума ===&lt;br /&gt;
Как уже было сказано выше, генерация поверхности происходит по принципу шума Перлина. Подробную информацию о нем можно найти [https://habr.com/post/265775/ здесь]. Каждая карта состоит из октав. Октавы - шум разного масштаба. Подробнее в той же статье.&lt;br /&gt;
&lt;br /&gt;
В библиотеке dimensions октавы для генерации (octaves) задаются двумя способами: одним объектом описания для программной генерации нескольких октав или массивом описаний отдельных октав. Начнем с первого случая, при этом поля у объекта октав будут следующие:&lt;br /&gt;
&lt;br /&gt;
*count - количество октав. Чем больше октав, тем мельче и труднопроходимее будет рельеф. Чаще всего используют 4 октавы.&lt;br /&gt;
*weight - ?&lt;br /&gt;
*scale - ?&lt;br /&gt;
*mt - ?&lt;br /&gt;
*mw - ?&lt;br /&gt;
&lt;br /&gt;
Всему шуму (не отдельным октавам) также можно задавать следующие параметры:&lt;br /&gt;
&lt;br /&gt;
*gradient - градиент для данной карты шума.&lt;br /&gt;
*seed - зерно генерации (сид).&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline !important;&amp;quot;&amp;gt;При создании карты шума отдельными октавами (octaves - массив), каждая октава будет иметь следующие параметры: &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
*weight - ? &lt;br /&gt;
*offset - ? &lt;br /&gt;
*scale - ? &lt;br /&gt;
&lt;br /&gt;
=== Environment ===&lt;br /&gt;
Объект environment предлагает инструменты для настройки среды, а именно цвета неба и туман. Может содержать следующие поля:&lt;br /&gt;
&lt;br /&gt;
*sky - цвет неба, задается массивом из трех составляющих RGB (от 0 до 1), каждая из которых может быть как значением, так и массивом из двух значений для более тонкой настройки цветов. &lt;br /&gt;
*fog - цвет тумана, имеет аналогичный sky массив описания.&lt;br /&gt;
&lt;br /&gt;
== Объект Dimensions и его методы ==&lt;br /&gt;
Результатом создания нового измерения будет объект Dimension. От будет использоваться для дальнейшей работы с измерением и имеет для этого следующие методы:&lt;br /&gt;
&lt;br /&gt;
*setupGeneration(description) - ?&lt;br /&gt;
*setupTransfer(description) - ?&lt;br /&gt;
*setupEnvironment(description) - ?&lt;br /&gt;
*setupCallbacks(callbacks) - устанавливает коллбеки в формате, описанном выше.&lt;br /&gt;
*getName() - возвращает имя измерения, заданное при его создании.&lt;br /&gt;
*getId() - получает уникальное id биома.&lt;br /&gt;
*getWrappedObject() - получает лежащий в основе библиотеки java-объект CustomDimention.&lt;br /&gt;
*getRegion() - ?&lt;br /&gt;
*getTeleporter() - возвращает телепортер из обічного мира в измерение.&lt;br /&gt;
*getTeleporterBack() - возвращает телепортер из измерения в обычный мир.&lt;br /&gt;
*getAllTeleporters() - возвращает массив из getTeleporter() и getTeleporterBack().&lt;br /&gt;
*transferTo(tp) - переносит вас в место, заданное телепортером tp.&lt;br /&gt;
*transferIn() - переносит игрока в измерение.&lt;br /&gt;
*transferOut() - переносит игрока из измерения.&lt;br /&gt;
*isInDimension() - проверяет, находинся ли игрок в данном измерении.&lt;br /&gt;
&lt;br /&gt;
Следующие два метода слишком важны, чтобы оставить их в списке наравне с остальными, поскольку позволяют ускорить процесс отладки генерации в разы. stride в обоих случаях показывает, сколько блоков будет соответствовать одному пикселю битмапы:&lt;br /&gt;
&lt;br /&gt;
*debugTerrainMap(size, stride) - генерирует и показывает всплывающим окном при загрузке InnerCore битмапу с видом на сгенерированный ландшафт сверху размером size*size.&lt;br /&gt;
*debugTerrainSlice(size, stride) - генерирует и показывает всплывающим окном при загрузке InnerCore битмапу со срезом сгенерированного ландшафтавысотой size (вид сбоку).&lt;br /&gt;
&lt;br /&gt;
== PortalRegistry ==&lt;br /&gt;
Объект PortalRegistry позволяет создавать и управлять блоками порталов с их анимациями.&lt;br /&gt;
&lt;br /&gt;
Для создания нового блока порталда используется метод ''newPortalBlock''. Он принимает следующие аргументы:&lt;br /&gt;
&lt;br /&gt;
*id - строковой id блока портала&lt;br /&gt;
*texture - параметры текстуры в формате [name, data]&lt;br /&gt;
*portal - объект типа Portal, возвращаемый метдом ''dimension..getPortal()''&lt;br /&gt;
*portalRenderParams - параметры рендера портала, имеет следующий формат:&lt;br /&gt;
**frameId - ?&lt;br /&gt;
**type - одна из следующих констант&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;PortalRegistry.RENDER_TYPE_FULL = &amp;quot;full&amp;quot;;&lt;br /&gt;
PortalRegistry.RENDER_TYPE_VERTICAL_PLANE = &amp;quot;v-plane&amp;quot;;&lt;br /&gt;
PortalRegistry.RENDER_TYPE_HORIZONTAL_PLANE = &amp;quot;h-plane&amp;quot;;&lt;br /&gt;
PortalRegistry.RENDER_TYPE_UNIVERSAL_PLANE = &amp;quot;u-plane&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/Dimensions&amp;diff=2651</id>
		<title>InnerCore/Libs/Dimensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/Dimensions&amp;diff=2651"/>
				<updated>2026-07-14T19:59:49Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dimensions - библиотека, значительно упрощающая процесс создания измерений. В этой документации будут описаны ее основные возможности и функционал.&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;&lt;br /&gt;
|-&lt;br /&gt;
| Версия&lt;br /&gt;
| Ссылка&lt;br /&gt;
| Список изменений&lt;br /&gt;
|-&lt;br /&gt;
| '''2'''&lt;br /&gt;
| [https://raw.githubusercontent.com/mineprogramming/APO_craft/d93907979d4113ec9d05da892502eee27264a848/lib/dimensions.js Скачать]&lt;br /&gt;
| Фикс ошибки получения координат в функции генерации чанка (by IchZerowan)&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;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;IMPORT(&amp;quot;dimensions&amp;quot;);&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;
Для генерации измерения используется объект&amp;lt;span&amp;gt;&amp;lt;span class=&amp;quot;fctbNone&amp;quot;&amp;gt;Dimension. В конструктор передаются параметры, связанные с измерением в следующем формате:&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;&lt;br /&gt;
var dim007 = new Dimension({&lt;br /&gt;
    name: &amp;quot;dim007&amp;quot;, // Название измерения&lt;br /&gt;
    &lt;br /&gt;
    generation: { //Генерация&lt;br /&gt;
        layers: [&lt;br /&gt;
             //Слои генерации &lt;br /&gt;
        ],&lt;br /&gt;
        &lt;br /&gt;
        decoration: {&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    environment: {&lt;br /&gt;
        &lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    callbacks: { &lt;br /&gt;
        // Основные коллбеки измерения&lt;br /&gt;
        // Здесь приведены все коллбеки измерений, ненужные можно опустить.&lt;br /&gt;
        tick: function() { &lt;br /&gt;
            &lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        generateChunk: function(chunkX, chunkZ) { &lt;br /&gt;
            // Генерация чанка&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        loaded: function() {&lt;br /&gt;
            // Загрузка измерения&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        unloaded: function() {&lt;br /&gt;
            // Выгрузка  измерения&lt;br /&gt;
        }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Слои генерации ===&lt;br /&gt;
Основной единицей генерации является слой. Слоев может быть несколько и каждый из них отвечает за отдельную часть генерации ландшафта: различные биомы, слой бедрока, метеориты, парящие в воздухе. Каждый слой представляет из себя json-объект следующего содержания:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;{ &lt;br /&gt;
    range: [0, 80],&lt;br /&gt;
    noise: {&lt;br /&gt;
        octaves: {&lt;br /&gt;
            count: 4,&lt;br /&gt;
            weight: 0.6,&lt;br /&gt;
            scale: [1, 0.4, 1]&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
                &lt;br /&gt;
    gradient: [[-1, 0.8], [-0.6, 0.5], [-0.2, 0.2], [0.2, 0.9], [0.6, 0.7], [1, 0.1]],&lt;br /&gt;
    terrain: {&lt;br /&gt;
        base: 1,&lt;br /&gt;
        cover: {&lt;br /&gt;
             height: 4,&lt;br /&gt;
             top: 2,&lt;br /&gt;
             block: 3&lt;br /&gt;
        },&lt;br /&gt;
    }&lt;br /&gt;
},&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-highlight mw-content-ltr&amp;quot; dir=&amp;quot;ltr&amp;quot;&amp;gt;Рассмотрим каждую часть кода подробнее:&amp;lt;/div&amp;gt;&lt;br /&gt;
*range - диапазон высоты, в котором работает генерация. В данном примере ландшафт будет генерироваться на высоте 0-80 блоков. Единственный обязательный параметр.&lt;br /&gt;
*noise - описание [https://ru.wikipedia.org/wiki/Шум_Перлина шума Перлина ], лежащего в основе генерации Подробнее в разделе[https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/Dimensions#.D0.9A.D0.B0.D1.80.D1.82.D1.8B_.D1.88.D1.83.D0.BC.D0.B0 Карты шума]. Таких шумов может несколько, в таком случае их следует записывать в виде массива и они будут накладываться.&lt;br /&gt;
*heights - сродни noise, но накладывается поверх шума. Имеет такой же формат. Используется для генерации мелких биомов (речки, горы)&lt;br /&gt;
*gradient - описание функции [https://ru.wikipedia.org/wiki/Градиент градиента ], которая будет применена к шуму. Отвечает за то, как примерно будет выглядеть ландшафт. Задается в виде набора точек. Между точками интерполируется (соединяется плавной кривой).&lt;br /&gt;
*terrain - настройки блоков нашей генерации, могут содержать следующее:&lt;br /&gt;
**base - блок, служащий основанием для генерации. В данном случае, камень. Можно указать как id и дату (в виде массива из двух элементов либо объекта с полями id, deata), так и просто id.&lt;br /&gt;
**cover - слои блоков, покрывающих генерацию сверху (в нормальной генерации мира это земля и трава). Объект cover имеет три поля: height - высота верхнего слоя, block - основной блок покрытия, top - самый верхний слой. Все блоки задаются таким же образом, как и base.&lt;br /&gt;
**filling - параметры заполнения пустот в генерации чем-либо. Пример - вода в обычном мире и лава в нижнем. Объект состоит из полей height - высота, до которой будет заполнен слой, и block - непосредственно сам блок, которым производится заполнение.&lt;br /&gt;
&lt;br /&gt;
=== Карты шума ===&lt;br /&gt;
&lt;br /&gt;
Как уже было сказано выше, генерация поверхности происходит по принципу шума Перлина. Подробную информацию о нем можно найти [https://habr.com/post/265775/ здесь]. Каждая карта состоит из октав. Октавы - шум разного масштаба. Подробнее в той же статье.&lt;br /&gt;
&lt;br /&gt;
В библиотеке dimensions октавы для генерации (octaves) задаются двумя способами: одним объектом описания для программной генерации нескольких октав или массивом описаний отдельных октав. Начнем с первого случая, при этом поля у объекта октав будут следующие:&lt;br /&gt;
&lt;br /&gt;
*count - количество октав. Чем больше октав, тем мельче и труднопроходимее будет рельеф. Чаще всего используют 4 октавы.&lt;br /&gt;
*weight - ?&lt;br /&gt;
*scale - ?&lt;br /&gt;
*mt - ?&lt;br /&gt;
*mw - ?&lt;br /&gt;
&lt;br /&gt;
Всему шуму (не отдельным октавам) также можно задавать следующие параметры:&lt;br /&gt;
&lt;br /&gt;
*gradient - градиент для данной карты шума.&lt;br /&gt;
*seed - зерно генерации (сид).&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: inline !important;&amp;quot;&amp;gt;При создании карты шума отдельными октавами (octaves - массив), каждая октава будет иметь следующие параметры: &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
*weight - ? &lt;br /&gt;
*offset - ? &lt;br /&gt;
*scale - ? &lt;br /&gt;
&lt;br /&gt;
=== Environment ===&lt;br /&gt;
&lt;br /&gt;
Объект environment предлагает инструменты для настройки среды, а именно цвета неба и туман. Может содержать следующие поля:&lt;br /&gt;
&lt;br /&gt;
*sky - цвет неба, задается массивом из трех составляющих RGB (от 0 до 1), каждая из которых может быть как значением, так и массивом из двух значений для более тонкой настройки цветов. &lt;br /&gt;
*fog - цвет тумана, имеет аналогичный sky массив описания.&lt;br /&gt;
&lt;br /&gt;
== Объект Dimensions и его методы ==&lt;br /&gt;
Результатом создания нового измерения будет объект Dimension. От будет использоваться для дальнейшей работы с измерением и имеет для этого следующие методы:&lt;br /&gt;
&lt;br /&gt;
*setupGeneration(description) - ?&lt;br /&gt;
*setupTransfer(description) - ?&lt;br /&gt;
*setupEnvironment(description) - ?&lt;br /&gt;
*setupCallbacks(callbacks) - устанавливает коллбеки в формате, описанном выше.&lt;br /&gt;
*getName() - возвращает имя измерения, заданное при его создании.&lt;br /&gt;
*getId() - получает уникальное id биома.&lt;br /&gt;
*getWrappedObject() - получает лежащий в основе библиотеки java-объект CustomDimention.&lt;br /&gt;
*getRegion() - ?&lt;br /&gt;
*getTeleporter() - возвращает телепортер из обічного мира в измерение.&lt;br /&gt;
*getTeleporterBack() - возвращает телепортер из измерения в обычный мир.&lt;br /&gt;
*getAllTeleporters() - возвращает массив из getTeleporter() и getTeleporterBack().&lt;br /&gt;
*transferTo(tp) - переносит вас в место, заданное телепортером tp.&lt;br /&gt;
*transferIn() - переносит игрока в измерение.&lt;br /&gt;
*transferOut() - переносит игрока из измерения.&lt;br /&gt;
*isInDimension() - проверяет, находинся ли игрок в данном измерении.&lt;br /&gt;
&lt;br /&gt;
Следующие два метода слишком важны, чтобы оставить их в списке наравне с остальными, поскольку позволяют ускорить процесс отладки генерации в разы. stride в обоих случаях показывает, сколько блоков будет соответствовать одному пикселю битмапы:&lt;br /&gt;
&lt;br /&gt;
*debugTerrainMap(size, stride) - генерирует и показывает всплывающим окном при загрузке InnerCore битмапу с видом на сгенерированный ландшафт сверху размером size*size.&lt;br /&gt;
*debugTerrainSlice(size, stride) - генерирует и показывает всплывающим окном при загрузке InnerCore битмапу со срезом сгенерированного ландшафтавысотой size (вид сбоку).&lt;br /&gt;
&lt;br /&gt;
== PortalRegistry ==&lt;br /&gt;
Объект PortalRegistry позволяет создавать и управлять блоками порталов с их анимациями.&lt;br /&gt;
&lt;br /&gt;
Для создания нового блока порталда используется метод ''newPortalBlock''. Он принимает следующие аргументы:&lt;br /&gt;
&lt;br /&gt;
*id - строковой id блока портала&lt;br /&gt;
*texture - параметры текстуры в формате [name, data]&lt;br /&gt;
*portal - объект типа Portal, возвращаемый метдом ''dimension..getPortal()''&lt;br /&gt;
*portalRenderParams - параметры рендера портала, имеет следующий формат:&lt;br /&gt;
**frameId - ?&lt;br /&gt;
**type - одна из следующих констант&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;PortalRegistry.RENDER_TYPE_FULL = &amp;quot;full&amp;quot;;&lt;br /&gt;
PortalRegistry.RENDER_TYPE_VERTICAL_PLANE = &amp;quot;v-plane&amp;quot;;&lt;br /&gt;
PortalRegistry.RENDER_TYPE_HORIZONTAL_PLANE = &amp;quot;h-plane&amp;quot;;&lt;br /&gt;
PortalRegistry.RENDER_TYPE_UNIVERSAL_PLANE = &amp;quot;u-plane&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/BowLib&amp;diff=2650</id>
		<title>InnerCore/Libs/BowLib</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/BowLib&amp;diff=2650"/>
				<updated>2026-07-14T19:55:17Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BowLib - библиотека, упрощающая создание собственного лука&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: 700px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; scope=&amp;quot;col&amp;quot; | '''Библиотека'''&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 100px;&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;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 304px;&amp;quot; | Github&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-150408457_1124 Скачать]&lt;br /&gt;
| style=&amp;quot;width: 304px; text-align: center;&amp;quot; | Первая версия&lt;br /&gt;
| style=&amp;quot;width: 114px; text-align: center;&amp;quot; | [https://github.com/ToxesFoxes/Libraries/tree/master/BowLib%20v1 '''BowLib v1''']&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;4&amp;quot; scope=&amp;quot;col&amp;quot; style=&amp;quot;text-align: center; &amp;quot; | '''Зависимости'''&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; style=&amp;quot;text-align: center; &amp;quot; | '''Библиотека'''&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;text-align: center; &amp;quot; | '''Описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; &amp;quot; | Timer.js&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | Используется в качестве таймера анимаций и некоторых других функций&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; &amp;quot; | SoundAPI&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | Используется для звука выстрела&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; &amp;quot; | InventoryAPI&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | Используется для работы с инвентарем&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество &lt;br /&gt;
*Запрещено изменение кода библиотеки &lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&lt;br /&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;Bow&amp;quot;);&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;&lt;br /&gt;
IDRegistry.genItemID(&amp;quot;cbow&amp;quot;);&lt;br /&gt;
Item.createItem(&amp;quot;cbow&amp;quot;, &amp;quot;Custom Bow&amp;quot;, { name: &amp;quot;Cbow&amp;quot;, meta: 0 }, { stack: 1 });&lt;br /&gt;
&lt;br /&gt;
Item.describeItem(ItemID.cbow, {&lt;br /&gt;
	toolRender: true,&lt;br /&gt;
	maxDamage: 385,&lt;br /&gt;
	useAnimation: 4&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;var CustomBow = new Bow();&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;&lt;br /&gt;
CustomBow.set({&lt;br /&gt;
	id: ItemID.cbow,&lt;br /&gt;
	texture: &amp;quot;Cbow&amp;quot;,&lt;br /&gt;
	bullets: [262],&lt;br /&gt;
	skin: &amp;quot;entity/arrow.png&amp;quot;,&lt;br /&gt;
	speed: 2,&lt;br /&gt;
	damage: 1.5,&lt;br /&gt;
	variations: 3,&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;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; | set(prototype)&lt;br /&gt;
||Прототип описания&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;{&lt;br /&gt;
 id: ItemID.test, - идентификатор предмета с которым будет работать библиотека&lt;br /&gt;
 texture: &amp;quot;test&amp;quot;, - текстура которая будет использоваться для того чтобы анимировать лук&lt;br /&gt;
 bullets: [262], - массив с идентификаторами предметов которые будут использованы в качестве боеприпаса&lt;br /&gt;
 skin: &amp;quot;entity/arrow.png&amp;quot;, - путь к папке с текстурой для для изменения текстуры стрелы&lt;br /&gt;
 speed: 2, - скорость с которой будет лететь стрела&lt;br /&gt;
 damage: 1.5, - урон который будет нанесен сущности&lt;br /&gt;
 variations: 3 - сколько кадров анимации будет у лука. от 0 до n.&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&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; | shoot()&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; | get()&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;
|}&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; | '''Callback'''&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; | BowArrowEntityDamage&lt;br /&gt;
|style=&amp;quot;text-align: center; &amp;quot; | atacker, victim, damage&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; | BowArrowHit&lt;br /&gt;
|style=&amp;quot;text-align: center; &amp;quot; | projectile, item, target&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; | BowOnShot&lt;br /&gt;
|style=&amp;quot;text-align: center; &amp;quot; | bow&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; | BowStateChange&lt;br /&gt;
|style=&amp;quot;text-align: center; &amp;quot; | bow&lt;br /&gt;
|style=&amp;quot;text-align: center; &amp;quot; | Прототип лука когда меняется состояние лука&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/Baubles&amp;diff=2649</id>
		<title>InnerCore/Libs/Baubles</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/Baubles&amp;diff=2649"/>
				<updated>2026-07-14T19:54:36Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Baubles''' - библиотека для регистрации фенечек.&lt;br /&gt;
&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
[https://github.com/DDCompany/ICLibraries/releases https://github.com/DDCompany/ICLibraries/releases]&lt;br /&gt;
&lt;br /&gt;
== Документация ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;IMPORT(&amp;quot;BaublesAPI&amp;quot;);&lt;br /&gt;
Baubles.registerBauble({&lt;br /&gt;
    id: __, //Айди предмета&lt;br /&gt;
    type: BaubleType.___, //Тип (amulet, ring, belt, head, body или charm)&lt;br /&gt;
    onEquip: function (client, container, slotName) {&lt;br /&gt;
        //Вызывается при экипировке указанного предмета в соответствующий слот и при входе в мир, если предмет одет&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    onTakeOff: function (client, container, slotName) {&lt;br /&gt;
        //Вызывается, когда игрок снимет предмет или при его смерти&lt;br /&gt;
    },&lt;br /&gt;
    &lt;br /&gt;
    tick: function (client, container, slotName) {&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;IMPORT(&amp;quot;BaublesAPI&amp;quot;);&lt;br /&gt;
IDRegistry.genItemID(&amp;quot;testAmulet&amp;quot;);&lt;br /&gt;
Item.createItem(&amp;quot;testAmulet&amp;quot;, &amp;quot;Test Amulet&amp;quot;, {name: &amp;quot;stick&amp;quot;, meta: 0}, {});&lt;br /&gt;
&lt;br /&gt;
Baubles.registerBauble({&lt;br /&gt;
    id: ItemID.testAmulet,&lt;br /&gt;
    type: BaubleType.amulet,&lt;br /&gt;
    onEquip: function () {&lt;br /&gt;
        alert(&amp;quot;EQUIP!&amp;quot;);&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    onTakeOff: function () {&lt;br /&gt;
        alert(&amp;quot;TAKE OFF!&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/BackpackAPI&amp;diff=2648</id>
		<title>InnerCore/Libs/BackpackAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/BackpackAPI&amp;diff=2648"/>
				<updated>2026-07-14T19:53:43Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''BackpackAPI''' - библиотека, позволяющая создавать рюкзаки.&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: 579px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | Версия&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | Ссылка&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 294px; text-align: center;&amp;quot; | Список изменений&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 153px; text-align: center;&amp;quot; | Дата релиза&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | '''LATEST'''&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | [https://github.com/DDCompany/ICLibraries/releases/tag/backpack-api-v9 Скачать]&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 294px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 153px; text-align: center;&amp;quot; | -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | '''8'''&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | [https://github.com/DDCompany/ICLibraries/releases/tag/backpack-api-v8 Скачать]&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 294px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 153px; text-align: center;&amp;quot; | 15.05.20&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | '''7'''&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | [https://github.com/DDCompany/ICLibraries/releases/tag/backpack-api-v7 Скачать]&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 294px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 153px; text-align: center;&amp;quot; | 24.04.20&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | '''6'''&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | [https://yadi.sk/d/J94TU-NAg0DfaQ Скачать]&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 294px;&amp;quot; | Добавлена поддержка сохранения id контейнера в extra data&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 153px; text-align: center;&amp;quot; | 21.04.20&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | '''5'''&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | [https://yadi.sk/d/3UwUF1QpD7-T5g Скачать]&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 294px;&amp;quot; | Исправлены баги, оптимизация кода&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 153px; text-align: center;&amp;quot; | 16.10.19&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | '''4'''&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | [https://yadi.sk/d/fGqQqOp9UmF_qQ Скачать]&lt;br /&gt;
| style=&amp;quot;width: 294px;&amp;quot; | Исправлены баги&lt;br /&gt;
| style=&amp;quot;width: 153px; text-align: center;&amp;quot; | 11.09.19&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | '''3'''&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | [https://yadi.sk/d/zNFKHFwWtygALw Скачать]&lt;br /&gt;
| style=&amp;quot;width: 294px;&amp;quot; | &lt;br /&gt;
Новые свойства - items, title&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 153px; text-align: center;&amp;quot; | 10.09.19&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | [https://vk.com/forestry_pe?w=wall-149493963_1420/all Скачать]&lt;br /&gt;
| style=&amp;quot;width: 294px;&amp;quot; | Первая версия&lt;br /&gt;
| style=&amp;quot;width: 153px; text-align: center;&amp;quot; | 09.03.18&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Условия использования ==&lt;br /&gt;
*Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество&lt;br /&gt;
*Запрещено изменение кода библиотеки&lt;br /&gt;
*Запрещено явное копирование кода в другие библиотеки или моды&lt;br /&gt;
&lt;br /&gt;
Используя данный продукт вы автоматически соглашаетесь с этими правилами&lt;br /&gt;
&lt;br /&gt;
== Документация ==&lt;br /&gt;
Для регистрации рюкзака необходимо использовать метод '''''register''''' из объекта '''''BackpackRegistry''''', импортируемый из библиотеки&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;BackpackAPI&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IDRegistry.genItemID(&amp;quot;backpackTest&amp;quot;);&lt;br /&gt;
Item.createItem(&amp;quot;backpackTest&amp;quot;, &amp;quot;Test Backpack&amp;quot;, {name: &amp;quot;backpackMiners&amp;quot;, meta: 0}, {stack: 1});&lt;br /&gt;
&lt;br /&gt;
BackpackRegistry.register(ItemID.backpackTest, {&lt;br /&gt;
    title: &amp;quot;My Backpack&amp;quot;,&lt;br /&gt;
    slots: 80,&lt;br /&gt;
    slotsCenter: true,&lt;br /&gt;
    inRow: 10,&lt;br /&gt;
    items: [&lt;br /&gt;
        &amp;quot;^ore.+&amp;quot;,&lt;br /&gt;
        &amp;quot;^ingot.+&amp;quot;,&lt;br /&gt;
        1&lt;br /&gt;
        {id: 345, data: &amp;quot;^[1-3]$&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;
*&amp;lt;u&amp;gt;''title''&amp;lt;/u&amp;gt; - заголовок окна&lt;br /&gt;
*''&amp;lt;u&amp;gt;slots&amp;lt;/u&amp;gt;'' - количество слотов в рюкзаки&lt;br /&gt;
*''&amp;lt;u&amp;gt;inRow&amp;lt;/u&amp;gt;'' - количество слотов в ряду&lt;br /&gt;
*''&amp;lt;u&amp;gt;slotsCenter&amp;lt;/u&amp;gt;'' - центрировать ли слоты по ширине&lt;br /&gt;
*''&amp;lt;u&amp;gt;kind&amp;lt;/u&amp;gt;'' - определяет способ хранения уникального айди рюкзака. Может иметь значения BackpackKind.EXTRA и BackpackKind.META. Если установить первое значение, айди будет находиться в поле &amp;quot;__backpack_id&amp;quot; экстры, второе - в метаданных предмета&lt;br /&gt;
*&amp;lt;u&amp;gt;''items''&amp;lt;/u&amp;gt;- массив предметов, которые можно положить в рюкзак. Описывается регулярными выражениями, айди или объектом с айди и датой (причем оба свойства могут быть заданы регуляркой)&lt;br /&gt;
&lt;br /&gt;
В объекте можно объявить метод '''''isValidItem(id, data, count)''''', если он возвращает истину предмет перемещается в слот. Если его нет, будет задан стандартный, который разрешает перемещение всех предметов, описанных в массиве '''''items''''', кроме других рюкзаков. В данном примере можно положить только камень:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;BackpackRegistry.register(ItemID.backpackTest, {&lt;br /&gt;
    slots: 20,&lt;br /&gt;
    isValidItem: function (id, data, count) {&lt;br /&gt;
        return id === 1;&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;let gui = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {&lt;br /&gt;
            text: {&lt;br /&gt;
                text: &amp;quot;Custom Gui&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        inventory: {&lt;br /&gt;
            standart: true&lt;br /&gt;
        },&lt;br /&gt;
        background: {&lt;br /&gt;
            standart: true&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [],&lt;br /&gt;
    elements: {}&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
IDRegistry.genItemID(&amp;quot;backpackTest&amp;quot;);&lt;br /&gt;
Item.createItem(&amp;quot;backpackTest&amp;quot;, &amp;quot;Test Backpack&amp;quot;, {name: &amp;quot;backpackMiners&amp;quot;, meta: 0}, {stack: 1});&lt;br /&gt;
&lt;br /&gt;
BackpackRegistry.register(ItemID.backpackTest, {&lt;br /&gt;
    gui: gui&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/BackpackAPI&amp;diff=2647</id>
		<title>InnerCore/Libs/BackpackAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/BackpackAPI&amp;diff=2647"/>
				<updated>2026-07-14T19:52:55Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''BackpackAPI''' - библиотека, позволяющая создавать рюкзаки.&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: 579px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | Версия&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | Ссылка&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 294px; text-align: center;&amp;quot; | Список изменений&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 153px; text-align: center;&amp;quot; | Дата релиза&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | '''LATEST'''&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | [https://github.com/DDCompany/ICLibraries/releases/tag/backpack-api-v9 Скачать]&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 294px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 153px; text-align: center;&amp;quot; | -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | '''8'''&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | [https://github.com/DDCompany/ICLibraries/releases/tag/backpack-api-v8 Скачать]&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 294px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 153px; text-align: center;&amp;quot; | 15.05.20&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | '''7'''&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | [https://github.com/DDCompany/ICLibraries/releases/tag/backpack-api-v7 Скачать]&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 294px;&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 153px; text-align: center;&amp;quot; | 24.04.20&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | '''6'''&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | [https://yadi.sk/d/J94TU-NAg0DfaQ Скачать]&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 294px;&amp;quot; | Добавлена поддержка сохранения id контейнера в extra data&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 153px; text-align: center;&amp;quot; | 21.04.20&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | '''5'''&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | [https://yadi.sk/d/3UwUF1QpD7-T5g Скачать]&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 294px;&amp;quot; | Исправлены баги, оптимизация кода&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 153px; text-align: center;&amp;quot; | 16.10.19&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | '''4'''&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | [https://yadi.sk/d/fGqQqOp9UmF_qQ Скачать]&lt;br /&gt;
| style=&amp;quot;width: 294px;&amp;quot; | Исправлены баги&lt;br /&gt;
| style=&amp;quot;width: 153px; text-align: center;&amp;quot; | 11.09.19&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | '''3'''&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | [https://yadi.sk/d/zNFKHFwWtygALw Скачать]&lt;br /&gt;
| style=&amp;quot;width: 294px;&amp;quot; | &lt;br /&gt;
Новые свойства - items, title&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 153px; text-align: center;&amp;quot; | 10.09.19&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;white-space: nowrap; width: 200px; text-align: center&amp;quot; | '''1'''&lt;br /&gt;
| style=&amp;quot;text-align: center&amp;quot; | [https://vk.com/forestry_pe?w=wall-149493963_1420/all Скачать]&lt;br /&gt;
| style=&amp;quot;width: 294px;&amp;quot; | Первая версия&lt;br /&gt;
| style=&amp;quot;width: 153px; text-align: center;&amp;quot; | 09.03.18&lt;br /&gt;
|}&lt;br /&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;
Для регистрации рюкзака необходимо использовать метод '''''register''''' из объекта '''''BackpackRegistry''''', импортируемый из библиотеки&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;IMPORT(&amp;quot;BackpackAPI&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
IDRegistry.genItemID(&amp;quot;backpackTest&amp;quot;);&lt;br /&gt;
Item.createItem(&amp;quot;backpackTest&amp;quot;, &amp;quot;Test Backpack&amp;quot;, {name: &amp;quot;backpackMiners&amp;quot;, meta: 0}, {stack: 1});&lt;br /&gt;
&lt;br /&gt;
BackpackRegistry.register(ItemID.backpackTest, {&lt;br /&gt;
    title: &amp;quot;My Backpack&amp;quot;,&lt;br /&gt;
    slots: 80,&lt;br /&gt;
    slotsCenter: true,&lt;br /&gt;
    inRow: 10,&lt;br /&gt;
    items: [&lt;br /&gt;
        &amp;quot;^ore.+&amp;quot;,&lt;br /&gt;
        &amp;quot;^ingot.+&amp;quot;,&lt;br /&gt;
        1&lt;br /&gt;
        {id: 345, data: &amp;quot;^[1-3]$&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;
*&amp;lt;u&amp;gt;''title''&amp;lt;/u&amp;gt; - заголовок окна&lt;br /&gt;
*''&amp;lt;u&amp;gt;slots&amp;lt;/u&amp;gt;'' - количество слотов в рюкзаки&lt;br /&gt;
*''&amp;lt;u&amp;gt;inRow&amp;lt;/u&amp;gt;'' - количество слотов в ряду&lt;br /&gt;
*''&amp;lt;u&amp;gt;slotsCenter&amp;lt;/u&amp;gt;'' - центрировать ли слоты по ширине&lt;br /&gt;
*''&amp;lt;u&amp;gt;kind&amp;lt;/u&amp;gt;'' - определяет способ хранения уникального айди рюкзака. Может иметь значения BackpackKind.EXTRA и BackpackKind.META. Если установить первое значение, айди будет находиться в поле &amp;quot;__backpack_id&amp;quot; экстры, второе - в метаданных предмета&lt;br /&gt;
*&amp;lt;u&amp;gt;''items''&amp;lt;/u&amp;gt;- массив предметов, которые&amp;amp;nbsp;можно положить в рюкзак. Описывается&amp;amp;nbsp;регулярными выражениями, айди или объектом с айди и датой (причем оба свойства могут быть заданы регуляркой)&lt;br /&gt;
&lt;br /&gt;
В объекте можно объявить метод '''''isValidItem(id, data, count)''''', если он возвращает истину предмет перемещается в слот. Если его нет, будет задан стандартный, который разрешает перемещение всех предметов, описанных в массиве&amp;amp;nbsp;'''''items''''', кроме других рюкзаков. В данном примере можно положить только камень:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;BackpackRegistry.register(ItemID.backpackTest, {&lt;br /&gt;
    slots: 20,&lt;br /&gt;
    isValidItem: function (id, data, count) {&lt;br /&gt;
        return id === 1;&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;let gui = new UI.StandartWindow({&lt;br /&gt;
    standart: {&lt;br /&gt;
        header: {&lt;br /&gt;
            text: {&lt;br /&gt;
                text: &amp;quot;Custom Gui&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        inventory: {&lt;br /&gt;
            standart: true&lt;br /&gt;
        },&lt;br /&gt;
        background: {&lt;br /&gt;
            standart: true&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    drawing: [],&lt;br /&gt;
    elements: {}&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
IDRegistry.genItemID(&amp;quot;backpackTest&amp;quot;);&lt;br /&gt;
Item.createItem(&amp;quot;backpackTest&amp;quot;, &amp;quot;Test Backpack&amp;quot;, {name: &amp;quot;backpackMiners&amp;quot;, meta: 0}, {stack: 1});&lt;br /&gt;
&lt;br /&gt;
BackpackRegistry.register(ItemID.backpackTest, {&lt;br /&gt;
    gui: gui&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/AdvancedAI&amp;diff=2646</id>
		<title>InnerCore/Libs/AdvancedAI</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/AdvancedAI&amp;diff=2646"/>
				<updated>2026-07-14T19:49:34Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Библиотека AdvancedAI добавляет новые типы исскуственного интеллекта для системы мобов в Inner Core. Библиотека распространяется свободно и доступна по [https://github.com/mineprogramming/Scripts/blob/master/AdvancedAI.js данной ссылке].&lt;br /&gt;
&lt;br /&gt;
== Типы ИИ ==&lt;br /&gt;
В AdvancedAI доступно 7 новых типов ИИ.&lt;br /&gt;
&lt;br /&gt;
=== AdvancedAI.EnemyWatcher ===&lt;br /&gt;
Обьект контроля, ищет игрока, задает его в качестве цели переданным ИИ преследования и атаки и повышает их приоритет. Параметры и значения по умолчанию:&lt;br /&gt;
*attackAI: &amp;quot;attack&amp;quot; - имя ИИ атаки моба,&lt;br /&gt;
*followAI: &amp;quot;follow&amp;quot; - имя ИИ преследования моба,&lt;br /&gt;
*find_delay: 20 - перерыв между поисками игрока в тиках,&lt;br /&gt;
*priority_on_attack: 5 - приоритет ИИ атаки и преследования, если игрок доступен как цель,&lt;br /&gt;
*priority_on_idle: 0 - приоритет ИИ атаки и преследования, если игрок не доступен как цель,&lt;br /&gt;
*feelingModifier: 10 - радиус сферы поиска игрока в блоках&lt;br /&gt;
&lt;br /&gt;
=== AdvancedAI.Shooting ===&lt;br /&gt;
Тип ИИ, стрельба заданными сущностями в сторону взгляда моба. Параметры и значения по умолчанию:&lt;br /&gt;
&lt;br /&gt;
*ammo_type: Native.EntityType.FIREBALL - тип сущности, выстреливаемой мобом,&lt;br /&gt;
*shoot_speed: 20 - перерыв между выстрелами в тиках,&lt;br /&gt;
*projectile_speed: 0.2 - скорость выстреливаемого существа&lt;br /&gt;
&lt;br /&gt;
=== AdvancedAI.PhaseWatcher ===&lt;br /&gt;
Обьект контроля, временно переключает приоритеты ИИ из переданных описаний поведения, как бы сменяя поведение моба. Параметры и значения по умолчанию:&lt;br /&gt;
&lt;br /&gt;
*phases: [] - массив описаний поведения &lt;br /&gt;
&lt;br /&gt;
Формат описания поведения и значения по умолчанию:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Javascript&amp;quot;&amp;gt;{&lt;br /&gt;
     ai: [], //список ИИ моба, активируемых во время действия поведения&lt;br /&gt;
     priority: 5, //приоритет ИИ из ai во время действия поведения&lt;br /&gt;
     other_priority: 0, //приоритет ИИ из ai во время действия другого поведения,&lt;br /&gt;
     time: 1, //время действия поведения в тиках&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AdvancedAI.PlayerWatcher ===&lt;br /&gt;
Обьект поведения, задает указанным ИИ моба игрока в качестве цели, но не повышая приоритет. Параметры и значения по умолчанию:&lt;br /&gt;
&lt;br /&gt;
*ai: [] - список ИИ, которым игрок задается как цель&lt;br /&gt;
&lt;br /&gt;
AdvancedAI.Summoning&lt;br /&gt;
&lt;br /&gt;
Тип ИИ, призывает вокруг моба сущности заданного типа. Параметры и значения по умолчанию:&lt;br /&gt;
&lt;br /&gt;
*entity: Native.EntityType.ZOMBIE - тип призываемой сущности&lt;br /&gt;
*spawn_area: 2 - радиус зоны призыва сущностей&lt;br /&gt;
*summon_delay: 30 - перерыв между призывами сущностей&lt;br /&gt;
&lt;br /&gt;
=== AdvancedAI.Lifetimer ===&lt;br /&gt;
Обьект контроля, уменьшает мобу здоровье через заданный промежуток времени. Параметры и значения по умолчанию:&lt;br /&gt;
&lt;br /&gt;
*damageTimer: 60 - перерыв между уменьшениями здоровья&lt;br /&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;&amp;quot;shoot&amp;quot;: {&lt;br /&gt;
     type: AdvancedAI.Shooting,&lt;br /&gt;
     priority: 5,&lt;br /&gt;
     projectile_speed: 0.5,&lt;br /&gt;
     shoot_speed: 35&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libraries/VanillaRecipe&amp;diff=2645</id>
		<title>InnerCore/Libraries/VanillaRecipe</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libraries/VanillaRecipe&amp;diff=2645"/>
				<updated>2026-07-14T19:47:50Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: Полностью удалено содержимое страницы&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=ID_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=2644</id>
		<title>ID блоков и предметов</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=ID_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D0%B8_%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BE%D0%B2&amp;diff=2644"/>
				<updated>2026-07-14T19:47:29Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Minecraft: Pocket Edition ==&lt;br /&gt;
[[File:Id_blocks_items.png]]&lt;br /&gt;
&lt;br /&gt;
== Minecraft: Java Edition ==&lt;br /&gt;
[[File:Id_items_blocks_pc.png]]&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=Horizon&amp;diff=2643</id>
		<title>Horizon</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=Horizon&amp;diff=2643"/>
				<updated>2026-07-14T19:46:46Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Horizon - это универсальная платформа для запуска мобильных игр с модами. На момент написания статьи он поддерживает только [[InnerCore|InnerCore]], содержащем в себе Minecraft: Bedrock Edition 1.11.4. Horizon позволяет создавать и хранить одновременно несколько независимых сборок InnerCore, что, в свою очередь, позволяет разделять разные сборки модов и миры с этими самыми сборками. Разработка может вестись на JavaScript, Java, C++ и не только.&lt;br /&gt;
&lt;br /&gt;
== Полезные ссылки ==&lt;br /&gt;
[https://vk.com/core_engine Группа ВКонтакте Horizon]&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=ofwKkRYh97k&amp;amp;t=1s Видеогайд настройки окружения для разработки]&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=ykAVJoxKTKc Видеогайд создания новых проектов и импорта старых]&lt;br /&gt;
&lt;br /&gt;
[https://icmods.mineprogramming.org/dev Инструменты разработки модов]&lt;br /&gt;
&lt;br /&gt;
[https://play.google.com/store/apps/details?id=com.zheka.horizon Сам Horizon]&lt;br /&gt;
&lt;br /&gt;
[https://vk.com/topic-134044100_41523503 Обсуждение ВКонтакте для отправки сообщений о багах]&lt;br /&gt;
&lt;br /&gt;
[https://docs.mineprogramming.org/ Документация для разработки модов]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/zheka2304/innercore-mod-toolchain Тулчейн для разработки модов]&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=Forge&amp;diff=2642</id>
		<title>Forge</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=Forge&amp;diff=2642"/>
				<updated>2026-07-14T19:45:53Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Minecraft Forge''' — [http://ru.wikipedia.org/wiki/Интерфейс_программирования_приложений API], упрощающий создание модификаций, а также позволяющая им не конфликтовать. Модификации на Forge (включая сам Forge) универсальные, и их не надо портировать под сервер. Также включает в себя ForgeModLoader (FML) для загрузки модификаций и Minecraft Coder Pack (MCP).&lt;br /&gt;
&lt;br /&gt;
== Основные модификации для Forge ==&lt;br /&gt;
*IndustrialCraft&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - классический индустриальный мод. Добавляет электричество, промышленность и агроселекцию. Существуют неофициальные&amp;amp;nbsp;порты на движках CoreEngine и BlockLauncherAddons.&lt;br /&gt;
*BuildCraft - класический пример автоматизации. Добавляет трубы, механические двигатели, нефтяную промышленность и автоматическую добычу ресурсов.&lt;br /&gt;
*Thermal Expansion - добавляет технологическую цепочку на основе энергии Redstone Flux. Позволяет перерабатывать природные ресурсы, преводить их в разные агрегатные состояния, премещать их по трубам. API RF используется во многих модификациях, связанных с индустриализацией и BuildCraft.&lt;br /&gt;
*Applied Energestic - МЕ сеть, автокрафт, квантовые мосты и прочая фигня, связанная с оцифирфкой материи.&lt;br /&gt;
*Iron Chest - мастхэв, если хоите что-то хранить и не рубить пещеры 9000x9000 только для хранения ресурсов с карьера.&lt;br /&gt;
*Forestry - если вы не хотите загрязнять природу атомными реакторами и генераторами, то этот мод для вас. Бабочки, пчелки, травка, экологически чистое топливо - все для природы и от природы.&lt;br /&gt;
*Ender IO - в плане техноцепочки идентичен TE, но знаменит своими сверхкомпактными цепочками автоматизации и магией эндер-труб.&lt;br /&gt;
*Draconic Evolution - сравнительно новый мод, делает драконов очень важной частью игры.&lt;br /&gt;
*GregTech - один из немногих упорото-хардкорных&amp;amp;nbsp;модов, не считая TFC. Здесь хардкорно все: изготовить дробилку в Греге - это означает собрать полстака бронзы, перелопатить их на детали и собрать дробилку (ах, да, еще пар нужен).&lt;br /&gt;
*Mystcraft - собран по мотивам известной серии игр &amp;quot;Myst&amp;quot; о перемещениях между мирами. Собственно, это основное назначение модификации.&lt;br /&gt;
*Twilight Forest - классический приключенческий мод. Отправляйтесь в неведомый лес, покатайтесь на оленях, погоняйте по лабиринтам гастов и минотавров, найдите Лича и Гидру и ощутите себя богатым при помощи рога!&lt;br /&gt;
*Divine RPG - классика уже RPG-тематики. 9 измерений, более 100 новых мобов, более 400 предметов и оружий. Автор пилит новый мод - Nevermine.&lt;br /&gt;
*Steve's Carts 2 - конструктор вагонеток из любого хлама. Иногда для сборки очередной машинки надо отсавлять компьютер на ночь.&lt;br /&gt;
*Not Enough Items - мастхэв при любых ситуациях. Соперничает с TMI. Знает все предметы и блоки, их крафты, получение из других вещей и много чего еще.&lt;br /&gt;
*TerraFirmaCraft - полное погружение в реализм. Без комментариев.&lt;br /&gt;
*Millenaire - французское поделие. Движок для создания своих цивилизаций, с которым можно дружить общаться, хамить и дестроить.&lt;br /&gt;
*Thaumcraft - самый известный магический мод, к которому есть более 20 аддонов.&lt;br /&gt;
*Botania - магическо-индустриальный мод в котором важную роль играют цветы.&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=Forge&amp;diff=2641</id>
		<title>Forge</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=Forge&amp;diff=2641"/>
				<updated>2026-07-14T19:44:51Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Minecraft Forge''' — [http://ru.wikipedia.org/wiki/Интерфейс_программирования_приложений API], упрощающий создание модификаций, а также позволяющая им не конфликтовать. Модификации на Forge (включая сам Forge) универсальные, и их не надо портировать под сервер. Также включает в себя ForgeModLoader (FML) для загрузки модификаций и Minecraft Coder Pack (MCP).&lt;br /&gt;
&lt;br /&gt;
== Основные модификации для Forge ==&lt;br /&gt;
*IndustrialCraft&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - классический индустриальный мод. Добавляет электричество, промышленность и агроселекцию. Существуют неофициальные&amp;amp;nbsp;порты на движках&amp;amp;nbsp;CoreEngine и BlockLauncherAddons.&lt;br /&gt;
*BuildCraft - класический пример автоматизации. Добавляет трубы, механические двигатели, нефтяную промышленность и автоматическую добычу ресурсов.&lt;br /&gt;
*Thermal Expansion - добавляет технологическую цепочку на основе энергии Redstone Flux. Позволяет перерабатывать природные ресурсы, преводить их в разные агрегатные состояния, премещать их по трубам. API RF используется во многих модификациях, связанных с индустриализацией и BuildCraft.&lt;br /&gt;
*Applied Energestic - МЕ сеть, автокрафт, квантовые мосты и прочая фигня, связанная с оцифирфкой материи.&lt;br /&gt;
*Iron Chest - мастхэв, если хоите что-то хранить и не рубить пещеры 9000x9000 только для хранения ресурсов с карьера.&lt;br /&gt;
*Forestry - если вы не хотите загрязнять природу атомными реакторами и генераторами, то этот мод для вас. Бабочки, пчелки, травка, экологически чистое топливо - все для природы и от природы.&lt;br /&gt;
*Ender IO - в плане техноцепочки идентичен TE, но знаменит своими сверхкомпактными цепочками автоматизации и магией эндер-труб.&lt;br /&gt;
*Draconic Evolution - сравнительно новый мод, делает драконов очень важной частью игры.&lt;br /&gt;
*GregTech - один из немногих упорото-хардкорных&amp;amp;nbsp;модов, не считая TFC. Здесь хардкорно все: изготовить дробилку в Греге - это означает собрать полстака бронзы, перелопатить их на детали и собрать дробилку (ах, да, еще пар нужен).&lt;br /&gt;
*Mystcraft - собран по мотивам известной серии игр &amp;quot;Myst&amp;quot; о перемещениях между мирами. Собственно, это основное назначение модификации.&lt;br /&gt;
*Twilight Forest - классический приключенческий мод. Отправляйтесь в неведомый лес, покатайтесь на оленях, погоняйте по лабиринтам гастов и минотавров, найдите Лича и Гидру и ощутите себя богатым при помощи рога!&lt;br /&gt;
*Divine RPG - классика уже RPG-тематики. 9 измерений, более 100 новых мобов, более 400 предметов и оружий. Автор пилит новый мод - Nevermine.&lt;br /&gt;
*Steve's Carts 2 - конструктор вагонеток из любого хлама. Иногда для сборки очередной машинки надо отсавлять компьютер на ночь.&lt;br /&gt;
*Not Enough Items - мастхэв при любых ситуациях. Соперничает с TMI. Знает все предметы и блоки, их крафты, получение из других вещей и много чего еще.&lt;br /&gt;
*TerraFirmaCraft - полное погружение в реализм. Без комментариев.&lt;br /&gt;
*Millenaire - французское поделие. Движок для создания своих цивилизаций, с которым можно дружить общаться, хамить и дестроить.&lt;br /&gt;
*Thaumcraft - самый известный магический мод, к которому есть более 20 аддонов.&lt;br /&gt;
*Botania - магическо-индустриальный мод в котором важную роль играют цветы.&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=Element_Zero&amp;diff=2640</id>
		<title>Element Zero</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=Element_Zero&amp;diff=2640"/>
				<updated>2026-07-14T19:42:42Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://github.com/Element-0/ElementZero Репозиторий Element Zero]&lt;br /&gt;
&lt;br /&gt;
[[Установка Element Zero в Windows]].&lt;br /&gt;
&lt;br /&gt;
[[Установка Element Zero в Docker]].&lt;br /&gt;
&lt;br /&gt;
[[Как_пользоваться_модом_audit|Как пользоваться модом audit]]&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_Element_Zero_%D0%B2_Docker&amp;diff=2638</id>
		<title>Установка Element Zero в Docker</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_Element_Zero_%D0%B2_Docker&amp;diff=2638"/>
				<updated>2026-07-14T19:42:12Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: TigerZhang переименовал страницу Установка Element Zero в Docker. в Установка Element Zero в Docker&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;
== Для начала убедитесь, что ваша система готова для установки ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;0. Убедитесь, что ваш user id равен 1000. Из-за ограничений Docker user id должен совпадать. В дистрибутивах, основанных на Debian можно проверить это командой&amp;amp;nbsp;id -u &amp;lt;username&amp;gt;.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;0.1. Убедитесь, что у вас установлен Docker. Инструкция по установке Docker по линукс [https://docs.docker.com/engine/install/ находится здесь]&amp;lt;/div&amp;gt; &lt;br /&gt;
== Установка ==&lt;br /&gt;
&amp;lt;div&amp;gt;1. Скачайте [https://www.minecraft.net/en-us/download/server/bedrock официальное ядро сервера] (обязательно версию для Windows).&amp;lt;/div&amp;gt; &amp;lt;div&amp;gt;2. Распакуйте его в любом месте.&amp;lt;/div&amp;gt; &amp;lt;div&amp;gt;3. Скачайте Element Zero со&amp;amp;nbsp;[https://github.com/codehz/wine-bdlauncher/releases/latest страницы релизов].&amp;lt;/div&amp;gt; &amp;lt;div&amp;gt;4. Распакуйте его в том же месте.&amp;lt;/div&amp;gt; &lt;br /&gt;
== Запуск ==&lt;br /&gt;
&lt;br /&gt;
Для запуска существует несколько способов. Простейший способ запустить сервер - сделать это с помощью Docker CLI. Если вы испытываете подобную потребность, вы можете сделать свой собственный Dockerfile.&lt;br /&gt;
&lt;br /&gt;
=== Docker cli ===&lt;br /&gt;
&lt;br /&gt;
Чтобы запустить сервер, введите команду&lt;br /&gt;
&amp;lt;pre&amp;gt;docker run --rm -ti --name elementzero -p 19132:19132/udp -v &amp;lt;bds folder&amp;gt;:/data codehz/wine:bdlauncher-runtime&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;Не забудьте заменить&amp;amp;nbsp;&amp;lt;bds folder&amp;gt; на свой адрес папки, содержащей официальное ядро и Element Zero.&amp;lt;br/&amp;gt; Если вы хотите использовать docker restart element zero, то удалите флаг --rm.&amp;amp;nbsp;&amp;lt;br/&amp;gt; Не забывайте, что перезапускать можно только остановленный сервер.&amp;lt;/div&amp;gt; &amp;lt;div&amp;gt;Никогда не используйте docker stop и что-то подобное, поскольку сервер не сохранит мир должным образом и это может привести к разрушению сохранения.&amp;amp;nbsp;&amp;lt;br/&amp;gt; Каждый раз, когда хотите остановить сервер, используйте docker attach elementzero и после этого вводите stop в консоли сервера.&amp;lt;/div&amp;gt; &amp;lt;div&amp;gt;Чтобы отсоединиться от контейнера используйте сочетание клавиш Ctrl+P, а затем Ctrl+Q.&amp;amp;nbsp;&amp;lt;br/&amp;gt; Если вы хотите запускать контейнер в открепленном состоянии, замените флаг -ti на -tid.&amp;lt;/div&amp;gt; &lt;br /&gt;
=== Docker compose ===&lt;br /&gt;
&amp;lt;div&amp;gt;Используйте&amp;amp;nbsp; &amp;lt;pre&amp;gt;version: &amp;quot;2&amp;quot;&lt;br /&gt;
services:&lt;br /&gt;
  bedrockmod:&lt;br /&gt;
    image: codehz/wine:bdlauncher-runtime&lt;br /&gt;
    container_name: bedrockmod&lt;br /&gt;
    volumes:&lt;br /&gt;
      - &amp;lt;bds folder&amp;gt;:/data&lt;br /&gt;
    network_mode: host&lt;br /&gt;
    restart: unless-stopped&lt;br /&gt;
    stdin_open: true&lt;br /&gt;
    tty: true&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
Q: Зачем использовать volime вместо упаковки всего этого в образ?&amp;lt;br/&amp;gt; A: Потому что файлы конфигов и данных сервера изменчивы и не могут быть просто смонтированы. Но если вы действительно хотите этого и понимаете, что делаете, просто создайте свой dockerfile.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Q: Почему сервер лагает в докере?&amp;lt;br/&amp;gt; A: Сервер до нескольких раз медленнее в wine, используйте windows.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_Element_Zero_%D0%B2_Docker.&amp;diff=2639</id>
		<title>Установка Element Zero в Docker.</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_Element_Zero_%D0%B2_Docker.&amp;diff=2639"/>
				<updated>2026-07-14T19:42:12Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: TigerZhang переименовал страницу Установка Element Zero в Docker. в Установка Element Zero в Docker&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Установка Element Zero в Docker]]&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Crafting_Table&amp;diff=2637</id>
		<title>Шаблон:Crafting Table</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Crafting_Table&amp;diff=2637"/>
				<updated>2026-07-14T19:38:59Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: Отмена правки 2634, сделанной TigerZhang (обсуждение)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke: UI | craftingTable }}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Put categories/interwiki on the documentation page --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Documentation&amp;diff=2636</id>
		<title>Шаблон:Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Documentation&amp;diff=2636"/>
				<updated>2026-07-14T19:38:48Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: Отмена правки 2635, сделанной TigerZhang (обсуждение)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke: documentation | page }}&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Documentation&amp;diff=2635</id>
		<title>Шаблон:Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Documentation&amp;diff=2635"/>
				<updated>2026-07-14T19:38:36Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke: documentation | page }}&lt;br /&gt;
1&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Crafting_Table&amp;diff=2634</id>
		<title>Шаблон:Crafting Table</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Crafting_Table&amp;diff=2634"/>
				<updated>2026-07-14T19:38:00Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke: UI | craftingTable }}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Put categories/interwiki on the documentation page --&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=CoreEngine&amp;diff=2633</id>
		<title>CoreEngine</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=CoreEngine&amp;diff=2633"/>
				<updated>2026-07-14T19:37:03Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Core Engine''' - уникальный загрузчик модов для Minecraft PE &amp;amp; Blocklauncher, разработанный [https://vk.com/zheka_smirnov Жекой Смирновым], открывающий огромные возможности для игры с модами и их разработки. Сочетает в себе загрузчик, систему обхода конфликтов и огромный API, который позволит создавать большие и сложные моды намного проще и качественнее.&lt;br /&gt;
&lt;br /&gt;
На данный момент больше не поддерживается, а все достижения CoreEngine реализованы в [[InnerCore]].&lt;br /&gt;
&lt;br /&gt;
== Документация CoreEngine ==&lt;br /&gt;
*[[CoreEngine/Структура_мода|Структура мода]]&lt;br /&gt;
*[[CoreEngine/Создание_блоков_и_предметов|Создание блоков и предметов]]&lt;br /&gt;
*[[CoreEngine/Продвинутое_создание_блоков_и_предметов|Продвинутое создание блоков и предметов]]&lt;br /&gt;
*[[CoreEngine/TILE_ENTITY|TILE ENTITY]]&lt;br /&gt;
*[[CoreEngine/Рецепты|Рецепты]]&lt;br /&gt;
*[[CoreEngine/Жидкости_и_работа_с_ними|Жидкости и работа с ними]]&lt;br /&gt;
*[[CoreEngine/Модуль_работы_с_миром|Модуль работы с миром]]&lt;br /&gt;
*[[CoreEngine/Работа_с_сущностями|Работа с сущностями]]&lt;br /&gt;
*[[CoreEngine/Игрок|Игрок]]&lt;br /&gt;
*[[CoreEngine/Броня|Броня]]&lt;br /&gt;
*[[CoreEngine/Введение_в_GUI|Введение в GUI]]&lt;br /&gt;
*[[CoreEngine/Контейнеры|Контейнеры]]&lt;br /&gt;
*[[CoreEngine/Динамичный_интерфейс|Динамичный интерфейс]]&lt;br /&gt;
*[[CoreEngine/Обмен_API_модов|Обмен API модов]]&lt;br /&gt;
*[[CoreEngine/Обновляемые_объекты|Обновляемые объекты]]&lt;br /&gt;
*[[CoreEngine/Работа_с_файлми|Работа с файлами]]&lt;br /&gt;
*[[CoreEngine/Анимации|Анимации]]&lt;br /&gt;
*[[CoreEngine/Игра|Игра]]&lt;br /&gt;
*[[CoreEngine/Лог|Лог]]&lt;br /&gt;
*[[CoreEngine/Частицы|Частицы]]&lt;br /&gt;
*[[CoreEngine/Переводы|Переводы]]&lt;br /&gt;
*[[CoreEngine/Отладка|Отладка]]&lt;br /&gt;
*[[CoreEngine/Многопоточность|Многопоточность]]&lt;br /&gt;
*[[CoreEngine/Файл_конфигурации|Файл конфигурации]]&lt;br /&gt;
*[[CoreEngine/Игровые_объекты|Игровые объекты]]&lt;br /&gt;
*[[CoreEngine/Сущности|Сущности]]&lt;br /&gt;
*[[CoreEngine/Пример_создания_моба|Пример создания моба]]&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=BlockLauncher&amp;diff=2632</id>
		<title>BlockLauncher</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=BlockLauncher&amp;diff=2632"/>
				<updated>2026-07-14T19:35:06Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''BlockLauncher''' — специальная программа для карманного издания, с помощью которой можно устанавливать различные модификации, текстуры, дополнения. Также существует платная версия программы, которая имеет несколько дополнительных возможностей. На данный момент устарела и намного более прогрессивной яляется загрузчик [[InnerCore]].&lt;br /&gt;
&lt;br /&gt;
== Функции ==&lt;br /&gt;
На данный момент в программе имеются следующие функции:&lt;br /&gt;
&lt;br /&gt;
*Установка модификаций.&lt;br /&gt;
*Установка патчей.&lt;br /&gt;
*Установка пакетов текстур.&lt;br /&gt;
*Установка пакетов ресурсов.&lt;br /&gt;
*Установка дополнений.&lt;br /&gt;
*Снимок экрана.&lt;br /&gt;
&lt;br /&gt;
=== Установка модификации ===&lt;br /&gt;
#Скачать мод.&lt;br /&gt;
#Распаковать с помощью любого архиватора (если скачанный файл является архивом).&lt;br /&gt;
#Зайти в BlockLauncher и нажать на серый ключик сверху.&lt;br /&gt;
#Выбрать «Управление скриптами Mod PE» и «Добавить».&lt;br /&gt;
#*Даётся несколько вариантов. Самые оптимальные&amp;amp;nbsp;— «Локальное хранилище» (поиск JavaScript файла) и «Официальный репозиторий Treebl» (поиск скрипта по ID). Также можно ввести URL адрес, если автор скрипта предоставляет его вместо JS файла. Если есть ID, то вводите его. А если есть сам файл JavaScript (js), то нажмите на «Локальное хранилище» и ищите свой скрипт в формате '''.js'''&lt;br /&gt;
#Зайдите в игру.&lt;br /&gt;
#2 варианта:&lt;br /&gt;
#*Скрипт может работать без всяких активаций.&lt;br /&gt;
#*Если в описании скрипта написано, что его нужно активировать, то сделайте это.&lt;br /&gt;
&lt;br /&gt;
=== Установка пакетов текстур ===&lt;br /&gt;
#Скачайте пакет текстур. Он должен быть в архиве. Его не нужно распаковывать.&lt;br /&gt;
#Переместите архив в любое место в памяти устройства.&lt;br /&gt;
#Запустите BlockLauncher.&lt;br /&gt;
#Нажмите на ключик и выберите «Настройки лаунчера» и найдите там пункт «Использовать текстур-пак». Нажмите.&lt;br /&gt;
#Чуть ниже откроется пункт «Выбрать текстурпак». Нажмите.&lt;br /&gt;
#Теперь отыщите архив с пакетом текстур и выберите его.&lt;br /&gt;
#Выйдите в главное меню.&lt;br /&gt;
&lt;br /&gt;
=== Установка патча ===&lt;br /&gt;
#Скачайте патч.&lt;br /&gt;
#Зайдите в BlockLauncher и нажмите на ключик.&lt;br /&gt;
#Нажмите на «Управление патчами» и «Добавить».&lt;br /&gt;
#Найдите файл в формате '''.mod''' и выберите его.&lt;br /&gt;
&lt;br /&gt;
=== Установка аддона ===&lt;br /&gt;
#Скачайте аддон. Он будет в формате '''.apk'''. Если он в архиве, то распакуйте архив.&lt;br /&gt;
#Установите его как обычное приложение.&lt;br /&gt;
#Теперь зайдите в BlockLauncher и активируйте «Аддоны» аналогично всем остальным дополнениям.&lt;br /&gt;
&lt;br /&gt;
=== Захват изображения ===&lt;br /&gt;
#Нажать на ключик&lt;br /&gt;
#Нажать на кнопку «Скриншот»&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=BlockLauncher&amp;diff=2631</id>
		<title>BlockLauncher</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=BlockLauncher&amp;diff=2631"/>
				<updated>2026-07-14T19:33:30Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''BlockLauncher''' — специальная программа для&amp;amp;nbsp;карманного издания, с помощью которой можно устанавливать различные модификации, текстуры, дополнения. Также существует платная версия программы, которая имеет несколько дополнительных возможностей. На данный момент устарела и намного более прогрессивной яляется загрузчик [[InnerCore|InnerCore]].&lt;br /&gt;
&lt;br /&gt;
== Функции ==&lt;br /&gt;
&lt;br /&gt;
На данный момент в программе имеются следующие функции:&lt;br /&gt;
&lt;br /&gt;
*Установка модификаций. &lt;br /&gt;
*Установка патчей. &lt;br /&gt;
*Установка пакетов текстур. &lt;br /&gt;
*Установка пакетов ресурсов. &lt;br /&gt;
*Установка дополнений. &lt;br /&gt;
*Снимок экрана. &lt;br /&gt;
&lt;br /&gt;
=== Установка модификации ===&lt;br /&gt;
&lt;br /&gt;
#Скачать мод. &lt;br /&gt;
#Распаковать с помощью любого архиватора (если скачанный файл является архивом). &lt;br /&gt;
#Зайти в BlockLauncher и нажать на серый ключик сверху. &lt;br /&gt;
#Выбрать «Управление скриптами Mod PE» и «Добавить». &lt;br /&gt;
#*Даётся несколько вариантов. Самые оптимальные&amp;amp;nbsp;— «Локальное хранилище» (поиск JavaScript файла) и «Официальный репозиторий Treebl» (поиск скрипта по ID). Также можно ввести URL адрес, если автор скрипта предоставляет его вместо JS файла. Если есть ID, то вводите его. А если есть сам файл JavaScript (js), то нажмите на «Локальное хранилище» и ищите свой скрипт в формате '''.js'''   &lt;br /&gt;
#Зайдите в игру. &lt;br /&gt;
#2 варианта: &lt;br /&gt;
#*Скрипт может работать без всяких активаций. &lt;br /&gt;
#*Если в описании скрипта написано, что его нужно активировать, то сделайте это.   &lt;br /&gt;
&lt;br /&gt;
=== Установка пакетов текстур ===&lt;br /&gt;
&lt;br /&gt;
#Скачайте пакет текстур. Он должен быть в архиве. Его не нужно распаковывать. &lt;br /&gt;
#Переместите архив в любое место в памяти устройства. &lt;br /&gt;
#Запустите BlockLauncher. &lt;br /&gt;
#Нажмите на ключик и выберите «Настройки лаунчера» и найдите там пункт «Использовать текстур-пак». Нажмите. &lt;br /&gt;
#Чуть ниже откроется пункт «Выбрать текстурпак». Нажмите. &lt;br /&gt;
#Теперь отыщите архив с пакетом текстур и выберите его. &lt;br /&gt;
#Выйдите в главное меню. &lt;br /&gt;
&lt;br /&gt;
=== Установка патча ===&lt;br /&gt;
&lt;br /&gt;
#Скачайте патч. &lt;br /&gt;
#Зайдите в BlockLauncher и нажмите на ключик. &lt;br /&gt;
#Нажмите на «Управление патчами» и «Добавить». &lt;br /&gt;
#Найдите файл в формате '''.mod''' и выберите его. &lt;br /&gt;
&lt;br /&gt;
=== Установка аддона ===&lt;br /&gt;
&lt;br /&gt;
#Скачайте аддон. Он будет в формате '''.apk'''. Если он в архиве, то распакуйте архив. &lt;br /&gt;
#Установите его как обычное приложение. &lt;br /&gt;
#Теперь зайдите в BlockLauncher и активируйте «Аддоны» аналогично всем остальным дополнениям. &lt;br /&gt;
&lt;br /&gt;
=== Захват изображения ===&lt;br /&gt;
&lt;br /&gt;
#Нажать на ключик &lt;br /&gt;
#Нажать на кнопку «Скриншот»&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore&amp;diff=2630</id>
		<title>InnerCore</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore&amp;diff=2630"/>
				<updated>2026-07-14T19:30:42Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;InnerCore был создан на базе чистого MCPE 1.0.3 и является полноценной средой для создания и игры с модами, дающей возможности куда большие, чем [[CoreEngine|CoreEngine]]&amp;amp;nbsp;&amp;amp; [[BlockLauncher]].&amp;lt;br/&amp;gt; Написанная с нуля нативная часть позволила решить абсолютное большинство проблем, связанных с моддингом на базе [[BlockLauncher]] и сделать API намного эффективнее.&lt;br /&gt;
&lt;br /&gt;
== Документация по Inner Core ==&lt;br /&gt;
*Построение модов&lt;br /&gt;
**[[InnerCore/Структура_модов|Структура модов]]&lt;br /&gt;
**[[InnerCore/Стандартный_шаблон_модов|Стандартный шаблон модов]]&lt;br /&gt;
**[[InnerCore/Ресурсы|Ресурсы]]&lt;br /&gt;
**[[InnerCore/Компиляция_в_байткод|Компиляция в байткод]]&lt;br /&gt;
**[[InnerCore/Базовые_методы_и_переменные_исполняемых_файлов|Базовые методы и переменные исполняемых файлов]]&lt;br /&gt;
**[[InnerCore/Библиотеки|Библиотеки]]&lt;br /&gt;
*[[InnerCore/Глобальные_методы_и_переменные_CoreEngine|Глобальные методы и переменные CoreEngine]]&lt;br /&gt;
*События в игре. Модуль Callback&lt;br /&gt;
**[[InnerCore/Модуль_Callback|Модуль Callback]]&lt;br /&gt;
**[[InnerCore/Список_коллбеков|Список коллбеков]]&lt;br /&gt;
**[[InnerCore/Список_назаний_ванильных_экранов|Список названий ванильных экранов]]&lt;br /&gt;
*Блоки и предметы&lt;br /&gt;
**[[InnerCore/Создание_блоков_и_предметов|Создание блоков и предметов]]&lt;br /&gt;
**[[InnerCore/Naming_Standart|Стандарт Именования Inner Core]]&lt;br /&gt;
**[[InnerCore/Продвинутое_создание_блоков_и_предметов|Продвинутое создание блоков и предметов]]&lt;br /&gt;
**[[InnerCore/ToolAPI|ToolAPI]]&lt;br /&gt;
**[[InnerCore/Рендер_блоков|Рендер блоков]]&lt;br /&gt;
**[[InnerCore/Визуальная_составляющая_ICRender|Визуальная составляющая&amp;amp;nbsp;ICRender]]&lt;br /&gt;
**[[InnerCore/Форма_блоков|Форма блоков]]&lt;br /&gt;
**[[InnerCore/Класс_RenderMesh|Класс&amp;amp;nbsp;RenderMesh]]&lt;br /&gt;
**[[InnerCore/Дополнительные_данные_предмета|Дополнительные данные предмета]]&lt;br /&gt;
**[[InnerCore/Случайные_обновления_блоков|Случайные обновления блоков]]&lt;br /&gt;
**[[InnerCore/TileEntity|TileEntity]]&lt;br /&gt;
**[[InnerCore/Рецепты|Рецепты]]&lt;br /&gt;
**[[InnerCore/Жидкости_и_работа_с_ними|Жидкости и работа с ними]]&lt;br /&gt;
**[[InnerCore/Броня|Броня]]&lt;br /&gt;
*[[InnerCore/Модуль_World|Модуль World]]&lt;br /&gt;
*Генерация&lt;br /&gt;
**[[InnerCore/Модуль_GenerationUtils|Модуль GenerationUtils]]&lt;br /&gt;
**[[InnerCore/Основы_генерации|Основы генерации]]&lt;br /&gt;
*[[InnerCore/Модуль_Game|Модуль Game]]&lt;br /&gt;
*Сущности&lt;br /&gt;
**[[InnerCore/Модуль_Entity|Модуль Entity]]&lt;br /&gt;
**[[InnerCore/Список_ванильных_рендеров|Список ванильных рендеров]]&lt;br /&gt;
**[[InnerCore/Создание_мобов|Создание мобов]]&lt;br /&gt;
**[[InnerCore/Пример_создания_моба|Пример создания моба]]&lt;br /&gt;
**[[InnerCore/Кастомные_мобы|Кастомные мобы]]&lt;br /&gt;
*[[InnerCore/Модуль_Player|Модуль Player]]&lt;br /&gt;
*GUI&lt;br /&gt;
**[[InnerCore/Модуль_UI|Модуль UI]]&lt;br /&gt;
**[[InnerCore/Введение_в_GUI|Введение в GUI]]&lt;br /&gt;
***[[InnerCore/Введение_в_GUI/Стандартный_интерфейс|Стандартный интерфейс]]&lt;br /&gt;
***[[InnerCore/Введение_в_GUI/Однооконный_интерфейс|Однооконный интерфейс]]&lt;br /&gt;
***[[InnerCore/Введение_в_GUI/Многооконный_интерфейс|Многооконный интерфейс]]&lt;br /&gt;
**[[InnerCore/Контейнеры|Контейнеры]]&lt;br /&gt;
**[[InnerCore/Динамичный_интерфейс|Динамичный интерфейс]]&lt;br /&gt;
*[[InnerCore/Модуль_ModAPI|Модуль ModAPI]]&lt;br /&gt;
*[[InnerCore/Модуль_Updatable|Модуль&amp;amp;nbsp;Updatable]]&lt;br /&gt;
*[[InnerCore/Модуль_GameObject|Модуль GameObject]]&lt;br /&gt;
*[[InnerCore/Анимации|Анимации]]&lt;br /&gt;
*Отладка&lt;br /&gt;
**[[InnerCore/Модуль_Logger|Модуль Logger]]&lt;br /&gt;
**[[InnerCore/Модуль_Debug|Модуль Debug]]&lt;br /&gt;
*[[InnerCore/Модуль_Particles|Модуль Particles]]&lt;br /&gt;
*[[InnerCore/Модуль_FileTools|Модуль FileTools]]&lt;br /&gt;
*[[InnerCore/Модуль_SaverScope|Модуль SaverScope]] &lt;br /&gt;
*[[InnerCore/Модуль_Translation|Модуль Translation]]&lt;br /&gt;
*[[InnerCore/Многопоточность|Многопоточность]]&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: 93px;&amp;quot; | '''Мод/API'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 226px;&amp;quot; | '''Автор / Официальный источник'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 100px;&amp;quot; | '''Мод в браузере'''&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 608px;&amp;quot; | '''Краткое описание'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 93px; text-align: center;&amp;quot; | &amp;lt;a href=&amp;quot;InnerCore%2FLibs%2FGuideAPI&amp;quot;&amp;gt;GuideAPI&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 226px; text-align: center;&amp;quot; | &amp;lt;a href=&amp;quot;[https://vk.com/forestry_pe https://vk.com/forestry_pe]&amp;quot; alt=&amp;quot;[https://vk.com/forestry_pe https://vk.com/forestry_pe]&amp;quot; title=&amp;quot;[https://vk.com/forestry_pe https://vk.com/forestry_pe]&amp;quot;&amp;gt;DDCompany&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 100px;&amp;quot; | &amp;lt;a href=&amp;quot;[https://icmods.mineprogramming.org/mod?id=39 https://icmods.mineprogramming.org/mod?id=39]&amp;quot; alt=&amp;quot;[https://icmods.mineprogramming.org/mod?id=39 https://icmods.mineprogramming.org/mod?id=39]&amp;quot; title=&amp;quot;[https://icmods.mineprogramming.org/mod?id=39 https://icmods.mineprogramming.org/mod?id=39]&amp;quot;&amp;gt;GuideAPI&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 608px;&amp;quot; | Мод-библиотека, предоставляющая большие возможности для создания игровых документаций .&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 93px; text-align: center;&amp;quot; | &amp;lt;a href=&amp;quot;InnerCore%2FMods%2FWaila&amp;quot;&amp;gt;Waila&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 226px; text-align: center;&amp;quot; | &amp;lt;a href=&amp;quot;[https://vk.com/forestry_pe https://vk.com/forestry_pe]&amp;quot; alt=&amp;quot;[https://vk.com/forestry_pe https://vk.com/forestry_pe]&amp;quot; title=&amp;quot;[https://vk.com/forestry_pe https://vk.com/forestry_pe]&amp;quot;&amp;gt;DDCompany&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 100px;&amp;quot; | &amp;lt;a href=&amp;quot;[https://icmods.mineprogramming.org/mod?id=144 https://icmods.mineprogramming.org/mod?id=144]&amp;quot; alt=&amp;quot;[https://icmods.mineprogramming.org/mod?id=144 https://icmods.mineprogramming.org/mod?id=144]&amp;quot; title=&amp;quot;[https://icmods.mineprogramming.org/mod?id=144 https://icmods.mineprogramming.org/mod?id=144]&amp;quot;&amp;gt;Waila&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 608px;&amp;quot; | Мод позволяет увидеть название блока, его материал, возможность сломать, здоровье и айди моба, наведя на соответствующий объект в мире.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 93px; text-align: center;&amp;quot; | &amp;lt;a href=&amp;quot;InnerCore%2FMods%2FAPO%20Craft&amp;quot;&amp;gt;A.P.O. Craft&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 226px; text-align: center;&amp;quot; | &amp;lt;a href=&amp;quot;[https://vk.com/igormelikhov https://vk.com/igormelikhov]&amp;quot; alt=&amp;quot;[https://vk.com/igormelikhov https://vk.com/igormelikhov]&amp;quot; title=&amp;quot;[https://vk.com/igormelikhov https://vk.com/igormelikhov]&amp;quot;&amp;gt;IchZerowan&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 100px;&amp;quot; | &amp;lt;a href=&amp;quot;[https://icmods.mineprogramming.org/mod?id=361 https://icmods.mineprogramming.org/mod?id=361]&amp;quot; alt=&amp;quot;[https://icmods.mineprogramming.org/mod?id=361 https://icmods.mineprogramming.org/mod?id=361]&amp;quot; title=&amp;quot;[https://icmods.mineprogramming.org/mod?id=361 https://icmods.mineprogramming.org/mod?id=361]&amp;quot;&amp;gt;A.P.O. Craft&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 608px;&amp;quot; | Мод добавляет постаппокалиптический город в игру.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 93px; text-align: center;&amp;quot; | &amp;lt;a href=&amp;quot;InnerCore%2FMods%2FOresMod&amp;quot;&amp;gt;OresMod&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 226px; text-align: center;&amp;quot; | &amp;lt;a href=&amp;quot;[https://vk.com/myrzicmur https://vk.com/myrzicmur]&amp;quot; alt=&amp;quot;[https://vk.com/myrzicmur https://vk.com/myrzicmur]&amp;quot; title=&amp;quot;[https://vk.com/myrzicmur https://vk.com/myrzicmur]&amp;quot;&amp;gt;Kotoffey23&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 100px;&amp;quot; | &amp;lt;a href=&amp;quot;[https://icmods.mineprogramming.org/mod?id=59 https://icmods.mineprogramming.org/mod?id=59]&amp;quot; alt=&amp;quot;[https://icmods.mineprogramming.org/mod?id=59 https://icmods.mineprogramming.org/mod?id=59]&amp;quot; title=&amp;quot;[https://icmods.mineprogramming.org/mod?id=59 https://icmods.mineprogramming.org/mod?id=59]&amp;quot;&amp;gt;Ores Mod&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 608px;&amp;quot; | Мод добавляет механизмы и руды. Рутинно, но почему бы и нет?&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 93px; text-align: center;&amp;quot; | &amp;lt;a href=&amp;quot;InnerCore%2FMods%2FWolfGunsMod&amp;quot;&amp;gt;WolfGunsMod&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 226px; text-align: center;&amp;quot; | &amp;lt;a href=&amp;quot;[https://vk.com/wolf___team https://vk.com/wolf___team]&amp;quot; alt=&amp;quot;[https://vk.com/wolf___team https://vk.com/wolf___team]&amp;quot; title=&amp;quot;[https://vk.com/wolf___team https://vk.com/wolf___team]&amp;quot;&amp;gt;WolfTeam&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 100px;&amp;quot; | &amp;lt;a href=&amp;quot;[https://icmods.mineprogramming.org/mod?id=397 https://icmods.mineprogramming.org/mod?id=397]&amp;quot; alt=&amp;quot;[https://icmods.mineprogramming.org/mod?id=397 https://icmods.mineprogramming.org/mod?id=397]&amp;quot; title=&amp;quot;[https://icmods.mineprogramming.org/mod?id=397 https://icmods.mineprogramming.org/mod?id=397]&amp;quot;&amp;gt;WolfGunsMod&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 608px;&amp;quot; | Мод добавляет оружие.&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width: 93px; text-align: center;&amp;quot; | &amp;lt;a href=&amp;quot;WorldLoader&amp;quot;&amp;gt;WorldLoader&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 226px; text-align: center;&amp;quot; | &amp;lt;a href=&amp;quot;[https://vk.com/wolf___team https://vk.com/wolf___team]&amp;quot; alt=&amp;quot;[https://vk.com/wolf___team https://vk.com/wolf___team]&amp;quot; title=&amp;quot;[https://vk.com/wolf___team https://vk.com/wolf___team]&amp;quot;&amp;gt;WolfTeam&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 100px;&amp;quot; | &amp;lt;a href=&amp;quot;[https://icmods.mineprogramming.org/mod.php?id=470 https://icmods.mineprogramming.org/mod.php?id=470]&amp;quot; alt=&amp;quot;[https://icmods.mineprogramming.org/mod.php?id=470 https://icmods.mineprogramming.org/mod.php?id=470]&amp;quot; title=&amp;quot;[https://icmods.mineprogramming.org/mod.php?id=470 https://icmods.mineprogramming.org/mod.php?id=470]&amp;quot;&amp;gt;WorldLoader&amp;lt;/a&amp;gt;&lt;br /&gt;
| style=&amp;quot;width: 608px;&amp;quot; | Утилита позволяющая создавать миры модификаций.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&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;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div 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 class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div 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; &lt;br /&gt;
== Список библиотек: ==&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; 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; style=&amp;quot;text-align: center; width: 121px;&amp;quot; | Библиотека&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;text-align: center; width: 214px;&amp;quot; | Автор / Официальный источник&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;width: 694px; text-align: center;&amp;quot; | Краткое описание&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Mods/AchievementsAPI|AchievementsAPI]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px; height: 20px;&amp;quot; | [https://vk.com/forestry_pe DDCompany]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека для создания достижений&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/EnergyLib|EnergyLib]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px; height: 20px;&amp;quot; | [https://vk.com/core_engine Inner Core]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека для создания и работы с различными видами энергии, проводами, генераторами и потребителями.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/EnergyNet|EnergyNet]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px; height: 20px;&amp;quot; | [https://icmods.mineprogramming.org/search?author=19 MineExplorer]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Более продвинутая версия предыдущей библиотеки, позволяющая передавать энергию пакетами и устанавливать проводам лимит на передачу энергии.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/ToolLib|ToolLib]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px; height: 20px;&amp;quot; | [https://icmods.mineprogramming.org/search?author=19 MineExplorer]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека, предоставляющая универсальные типы инструментов и добавляющая несколько вспомогательных методов.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/StorageInterface|StorageInterface]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px; height: 20px;&amp;quot; | [https://icmods.mineprogramming.org/search?author=19 MineExplorer]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека, упрощающая передачу предметов и жидкостей и позволяющая её настраивать с помощью интерфейсов хранилищ.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/Dimensions|Dimensions]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px; height: 20px;&amp;quot; | [https://vk.com/zheka_smirnov Zheka_Smirnov]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека, упрощающая создание измерений.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/modpacker|#modpacker]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px;&amp;quot; | [https://www.mineprogramming.org/ #mineprogramming]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека для создания и загрузки управляемых сборок модов.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/EntityState|EntityState]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px;&amp;quot; | [https://www.mineprogramming.org/ #mineprogramming]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека для получения текущего действия игрока (его движений).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/ScalesRPG|ScalesRPG]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px;&amp;quot; | [https://www.mineprogramming.org/ #mineprogramming]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека для регистрации различных шкал в дополнение к существующим (голода, здоровья, брони...).&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/SettingsManager|SettingsManager]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px;&amp;quot; | [https://www.mineprogramming.org/ #mineprogramming]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека для упрощения работы с настройками игры.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/BackpackAPI|BackpackAPI]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px;&amp;quot; | [https://vk.com/forestry_pe DDCompany]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека для регистрации рюкзаков.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/Baubles|Baubles]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px;&amp;quot; | [https://vk.com/forestry_pe DDCompany]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека, предоставляющая АПИ для регистрации фенечек.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/AdvancedAI|AdvancedAI]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px;&amp;quot; | [https://vk.com/trashboxbobylev TrashboxBobylev]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека, содержащая новые типы ИИ мобов.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/MobLib|MobLib]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px;&amp;quot; | [https://vk.com/wolf___team WolfTeam]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека, упращающая создание мобов.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/RecipeTELib|RecipeTELib]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px;&amp;quot; | [https://vk.com/wolf___team WolfTeam]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека, упрощающая создание верстаков и печей.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/ShootLib|ShootLib]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px;&amp;quot; | [https://vk.com/wolf___team WolfTeam]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека для создания оружия.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/SoundAPI|SoundAPI]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px;&amp;quot; | [https://vk.com/wolf___team WolfTeam]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека для работы со звуком.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/StructuresAPI|StructuresAPI]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px;&amp;quot; | [https://vk.com/wolf___team WolfTeam]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека, упрощающая работу со структурами&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/Timer|Timer]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px;&amp;quot; | [https://vk.com/tmm_corporation TooManyMods]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека, упрощающая работу с временем тика.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libs/BowLib|BowLib]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px;&amp;quot; | [https://vk.com/tmm_corporation TooManyMods]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | &lt;br /&gt;
Библиотека, упрощающая создание собственного лука&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 121px;&amp;quot; | [[InnerCore/Libraries/VanillaRecipe|VanillaRecipe]]&lt;br /&gt;
| style=&amp;quot;text-align: center; width: 214px;&amp;quot; | [https://icmods.mineprogramming.org/search?author=19 MineExplorer]&lt;br /&gt;
| style=&amp;quot;width: 694px;&amp;quot; | Библиотека, упрощающая внедрение рецептов крафта в Minecraft в формате JSON&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=2629</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=2629"/>
				<updated>2026-07-14T14:19:37Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: removing '&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;'s&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mineprogramming Wiki - уникальный проект на основе [https://www.mineprogramming.org/ mineprogramming], на котором собрано все, что нужно для программирования в среде Minecraft. Здесь вы сможете найти информацию о таких языках и технологиях, как [[InnerCore|InnerCore]], [[ModPE|ModPE]], [[CoreEngine|CoreEngine]] , [[PocketMine]], [[Forge]], [[Minecraft add-ons]] и многим другим. &lt;br /&gt;
[https://www.mineprogramming.org/ Mineprogramming] - еще более уникальный проект, посвященный программированию в Майнкрафте, при чем если на wiki вы найдете информацию по конкретным языкам и технологиям, то на [https://www.mineprogramming.org/ Mineprogramming] расположены наши программы для создания модов, наши моды, а так же различные интересные статьи, посвященные программированию в Майнкрафте!&lt;br /&gt;
&lt;br /&gt;
== Технологии Minecraft ==&lt;br /&gt;
&lt;br /&gt;
=== Для мобильных телефонов ===&lt;br /&gt;
&lt;br /&gt;
==== Актуальные ====&lt;br /&gt;
* [[Horizon]] - универсальная платформа для запуска мобильных игр с модами. &lt;br /&gt;
* [https://docs.mineprogramming.org InnerCore v2.0] - обновлённый загрузчик модов для MCBE 1.16+. Имеет совестимость со старым [[InnerCore|InnerCore v1.0+]] &lt;br /&gt;
&lt;br /&gt;
==== Устаревшие ====&lt;br /&gt;
* [[InnerCore]] - революционный загрузчик модов для MinecraftPocket Edition. Имеет схожий с [[CoreEngine]] API.&lt;br /&gt;
* [[CoreEngine]] - движок, существенно расширяющий возможности [[ModPE|ModPE]]. Может создавать интерфейс, контейнеры, обновляемые обьекты, сжимает блоки в мнимые id.&lt;br /&gt;
* [[ModPE]] - простейшее линейное API моддинга MCPE. Поддерживает создание предметов и блоков, работу с мобами, окружением, игроком.&lt;br /&gt;
&lt;br /&gt;
=== Для всех платформ ===&lt;br /&gt;
* [[Minecraft_add-ons|Minecraft add-ons]] - официальное API для моддинга Minecraft PE.&lt;br /&gt;
* [[Minecraft_Script_Engine|Minecraft Script Engine]] - новый движок от [https://mojang.com/ Mojang], позволяющий создавать дополнения к игре без установки вспомагательного программного обеспечения.&lt;br /&gt;
*[[Командные_блоки|Командные_блоки]] - блоки-терминалы, работающие от редстоуна. Простейший способ запрограммировать что-либо в Minecraft.&lt;br /&gt;
&lt;br /&gt;
=== Для ПК ===&lt;br /&gt;
* [[Forge]] - открытое API для моддинга Minecraft Java Edition.&lt;br /&gt;
&lt;br /&gt;
=== Серверные ядра для ПК ===&lt;br /&gt;
* [[Element_Zero]] - революционный мод над Vanilla Bedrock Dedicated Server ядром. Позволяет использовать плагины, Scripting API и имеет расширенные возможности администрирования.&lt;br /&gt;
* [[PocketMine]] - серверное ядро для Minecraft PE. . Является основой для большинства современных серверных движков на ПЕ, сам по себе устарел и не обновляется.&lt;br /&gt;
*[[Nukkit]] - серверное ядро для Minecraft PE, разработанное на Java.&lt;br /&gt;
*[[Bukkit]] - серверное ядро для Minecraft PC. Является основой для большинства современных серверных движков на ПК, сам по себе устарел и не обновляется.&lt;br /&gt;
*[[Vanillia]] - официальное серверное ядро Minecraft PC.&lt;br /&gt;
&lt;br /&gt;
== Програмное обеспечение ==&lt;br /&gt;
*[[NIDE]] - интегрированная среда разработки для разработки модов под Inner Core, Core Engine и ModPE&lt;br /&gt;
&lt;br /&gt;
== Теория и практика программирования в Minecraft ==&lt;br /&gt;
*[[ID блоков и предметов]]&lt;br /&gt;
*[[Форматирование текста|Форматирование текста в чате]]&lt;br /&gt;
*[https://ru.minecraft.wiki/w/Цикл_дня_и_ночи Время]&lt;/div&gt;</summary>
		<author><name>TigerZhang</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:TigerZhang&amp;diff=2628</id>
		<title>Участник:TigerZhang</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:TigerZhang&amp;diff=2628"/>
				<updated>2026-07-14T14:10:02Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: Новая страница: «== My userpages == {{Служебная:Указатель по началу названия/{{SUBST:FULLPAGENAME}}}}»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== My userpages ==&lt;br /&gt;
{{Служебная:Указатель по началу названия/Участник:TigerZhang}}&lt;/div&gt;</summary>
		<author><name>TigerZhang</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:TigerZhang/stats&amp;diff=2627</id>
		<title>Участник:TigerZhang/stats</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:TigerZhang/stats&amp;diff=2627"/>
				<updated>2026-07-14T14:07:43Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: Новая страница: «Revisions: {{REVISIONID}}  Articles: {{NUMBEROFARTICLES}}»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Revisions: {{REVISIONID}}&lt;br /&gt;
&lt;br /&gt;
Articles: {{NUMBEROFARTICLES}}&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=2626</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=2626"/>
				<updated>2026-07-14T14:03:48Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &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;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;Mineprogramming Wiki - уникальный проект на основе [https://www.mineprogramming.org/ mineprogramming ], на котором собрано все, что нужно для программирования в среде Minecraft. Здесь вы сможете найти информацию о таких языках и технологиях, как [[InnerCore|InnerCore]], [[ModPE|ModPE]], [[CoreEngine|CoreEngine]] , [[PocketMine|PocketMine]], [[Forge|Forge]], [[Minecraft_add-ons|Minecraft_add-ons]] и многим другим. &lt;br /&gt;
[https://www.mineprogramming.org/ Mineprogramming] - еще более уникальный проект, посвященный программированию в Майнкрафте, при чем если на wiki вы найдете информацию по конкретным языкам и технологиям, то на [https://www.mineprogramming.org/ Mineprogramming] расположены наши программы для создания модов, наши моды, а так же различные интересные статьи, посвященные программированию в Майнкрафте!&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Технологии Minecraft ==&lt;br /&gt;
&lt;br /&gt;
=== Для мобильных телефонов ===&lt;br /&gt;
&lt;br /&gt;
==== Актуальные ====&lt;br /&gt;
&lt;br /&gt;
*[[Horizon|Horizon]] - универсальная платформа для запуска мобильных игр с модами. &lt;br /&gt;
*[https://docs.mineprogramming.org InnerCore v2.0 ] - обновлённый загрузчик модов для MCBE 1.16+. Имеет совестимость со старым [[InnerCore|InnerCore v1.0+]] &lt;br /&gt;
&lt;br /&gt;
==== Устаревшие ====&lt;br /&gt;
&lt;br /&gt;
*[[InnerCore|InnerCore]] - революционный загрузчик модов для MinecraftPocket Edition. Имеет схожий с [[CoreEngine|CoreEngine ]]API &lt;br /&gt;
*[[CoreEngine|CoreEngine]] - движок, существенно расширяющий возможности [[ModPE|ModPE ]]. Может создавать интерфейс, контейнеры, обновляемые обьекты, сжимает блоки в мнимые id. &lt;br /&gt;
*[[ModPE|ModPE]] - простейшее линейное API моддинга MCPE. Поддерживает создание предметов и блоков, работу с мобами, окружением, игроком. &lt;br /&gt;
&lt;br /&gt;
=== Для всех платформ ===&lt;br /&gt;
&lt;br /&gt;
*[[Minecraft_add-ons|Minecraft add-ons]] - официальное API для моддинга Minecraft PE. &lt;br /&gt;
*[[Minecraft_Script_Engine|Minecraft Script Engine]] - новый движок от [https://mojang.com/ Mojang], позволяющий создавать дополнения к игре без установки вспомагательного программного обеспечения. &lt;br /&gt;
*[[Командные_блоки|Командные_блоки]] - блоки-терминалы, работающие от редстоуна. Простейший способ запрограммировать что-либо в Minecraft. &lt;br /&gt;
&lt;br /&gt;
=== Для ПК ===&lt;br /&gt;
&lt;br /&gt;
*[[Forge|Forge]] - открытое API для моддинга Minecraft Java Edition. &lt;br /&gt;
&lt;br /&gt;
=== Серверные ядра для ПК ===&lt;br /&gt;
&lt;br /&gt;
*[[Element_Zero|Element_Zero]] - революционный мод над Vanilla Bedrock Dedicated Server ядром. Позволяет использовать плагины, Scripting API и имеет расширенные возможности администрирования. &lt;br /&gt;
*[[PocketMine|PocketMine]] - серверное ядро для Minecraft PE. . Является основой для большинства современных серверных движков на ПЕ, сам по себе устарел и не обновляется. &lt;br /&gt;
*[[Nukkit|Nukkit]] - серверное ядро для Minecraft PE, разработанное на Java. &lt;br /&gt;
*[[Bukkit|Bukkit]] - серверное ядро для Minecraft PC. Является основой для большинства современных серверных движков на ПК, сам по себе устарел и не обновляется. &lt;br /&gt;
*[[Vanillia|Vanillia]] - официальное серверное ядро Minecraft PC. &lt;br /&gt;
&lt;br /&gt;
== Програмное обеспечение ==&lt;br /&gt;
&lt;br /&gt;
*[[NIDE|NIDE ]]- интегрированная среда разработки для разработки модов под Inner Core, Core Engine и ModPE &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
== Теория и практика программирования в Minecraft ==&lt;br /&gt;
&lt;br /&gt;
*[[ID_блоков_и_предметов|ID блоков и предметов]] &lt;br /&gt;
*[[Форматирование_текста|Форматирование текста в чате]] &lt;br /&gt;
*[https://minecraft-ru.gamepedia.com/Цикл_дня_и_ночи Время] &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; &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>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=2625</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=2625"/>
				<updated>2026-07-14T14:01:27Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &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;Mineprogramming Wiki - уникальный проект на основе [https://www.mineprogramming.org/ mineprogramming ], на котором собрано все, что нужно для программирования в среде Minecraft. Здесь вы сможете найти информацию о таких языках и технологиях, как [[InnerCore]], [[ModPE]], [[CoreEngine]] , [[PocketMine]], [[Forge]], [[Minecraft_add-ons]] и многим другим. &lt;br /&gt;
[https://www.mineprogramming.org/ Mineprogramming ]- еще более уникальный проект, посвященный программированию в Майнкрафте, при чем если на wiki вы найдете информацию по конкретным языкам и технологиям, то на&amp;amp;nbsp;[https://www.mineprogramming.org/ Mineprogramming ]расположены наши программы для создания модов, наши моды, а так же различные интересные статьи, посвященные программированию в Майнкрафте!&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Технологии Minecraft ==&lt;br /&gt;
&lt;br /&gt;
=== Для мобильных телефонов ===&lt;br /&gt;
&lt;br /&gt;
==== Актуальные ====&lt;br /&gt;
&lt;br /&gt;
*[[Horizon|Horizon ]]- универсальная платформа для запуска мобильных игр с модами. &lt;br /&gt;
*[https://docs.mineprogramming.org InnerCore v2.0 ] - обновлённый загрузчик модов для MCBE 1.16+. Имеет совестимость со старым [[InnerCore|InnerCore v1.0+]] &lt;br /&gt;
&lt;br /&gt;
==== Устаревшие ====&lt;br /&gt;
&lt;br /&gt;
*[[InnerCore|InnerCore ]] - революционный загрузчик модов для MinecraftPocket Edition. Имеет схожий с [[CoreEngine|CoreEngine ]]API &lt;br /&gt;
*[[CoreEngine|CoreEngine ]]- движок, существенно расширяющий возможности [[ModPE|ModPE ]]. Может создавать интерфейс, контейнеры, обновляемые обьекты, сжимает блоки в мнимые id. &lt;br /&gt;
*[[ModPE|ModPE ]]- простейшее линейное API моддинга MCPE. Поддерживает создание предметов и блоков, работу с мобами, окружением, игроком. &lt;br /&gt;
&lt;br /&gt;
=== Для всех платформ ===&lt;br /&gt;
&lt;br /&gt;
*[[Minecraft_add-ons|Minecraft add-ons ]]- официальное API для моддинга Minecraft PE. &lt;br /&gt;
*[[Minecraft_Script_Engine|Minecraft Script Engine]] - новый движок от [https://mojang.com/ Mojang], позволяющий создавать дополнения к игре без установки вспомагательного программного обеспечения. &lt;br /&gt;
*[[Командные_блоки|Командные блоки ]]- блоки-терминалы, работающие от редстоуна. Простейший способ запрограммировать что-либо в Minecraft. &lt;br /&gt;
&lt;br /&gt;
=== Для ПК ===&lt;br /&gt;
&lt;br /&gt;
*[[Forge]] - открытое API для моддинга Minecraft Java Edition. &lt;br /&gt;
&lt;br /&gt;
=== Серверные ядра для ПК ===&lt;br /&gt;
&lt;br /&gt;
*[[Element_Zero|Element Zero]] - революционный мод над Vanilla Bedrock Dedicated Server ядром. Позволяет использовать плагины, Scripting API и имеет расширенные возможности администрирования. &lt;br /&gt;
*[[PocketMine|PocketMine ]]- серверное ядро для Minecraft PE. . Является основой для большинства современных серверных движков на ПЕ, сам по себе устарел и не обновляется. &lt;br /&gt;
*[[Nukkit|Nukkit ]] - серверное ядро для Minecraft PE, разработанное на Java. &lt;br /&gt;
*[[Bukkit|Bukkit ]]- серверное ядро для Minecraft PC. Является основой для большинства современных серверных движков на ПК, сам по себе устарел и не обновляется. &lt;br /&gt;
*[[Vanillia|Vanilla ]]- официальное серверное ядро Minecraft PC. &lt;br /&gt;
&lt;br /&gt;
== Програмное обеспечение ==&lt;br /&gt;
&lt;br /&gt;
*[[NIDE|NIDE ]]- интегрированная среда разработки для разработки модов под Inner Core, Core Engine и ModPE &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
== Теория и практика программирования в Minecraft ==&lt;br /&gt;
&lt;br /&gt;
*[[ID_блоков_и_предметов|ID блоков и предметов]] &lt;br /&gt;
*[[Форматирование_текста|Форматирование текста в чате]] &lt;br /&gt;
*[https://minecraft-ru.gamepedia.com/Цикл_дня_и_ночи Время] &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; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:Admin&amp;diff=2622</id>
		<title>Обсуждение участника:Admin</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:Admin&amp;diff=2622"/>
				<updated>2026-07-02T01:54:59Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Upgrade to MediaWiki 1.46? ==&lt;br /&gt;
&lt;br /&gt;
This wiki is still using 1.30.0, which is very outdated. I propose to upgrade this wiki to MediaWiki 1.46. [[Участник:TigerZhang|TigerZhang]] ([[Обсуждение_участника:TigerZhang|обсуждение]]) 04:54, 2 июля 2026 (EEST)&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:Admin&amp;diff=2621</id>
		<title>Обсуждение участника:Admin</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:Admin&amp;diff=2621"/>
				<updated>2026-07-02T01:54:19Z</updated>
		
		<summary type="html">&lt;p&gt;TigerZhang: /* Upgrade to MediaWiki 1.46? */ новая тема&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Upgrade to MediaWiki 1.46? ==&lt;br /&gt;
&lt;br /&gt;
This wiki is still using 1.30.0, which is very outdated. I propose to upgrade this wiki to MediaWiki 1.46. [[Участник:TigerZhang|TigerZhang]] ([[Обсуждение участника:TigerZhang|обсуждение]]) 04:54, 2 июля 2026 (EEST)&lt;/div&gt;</summary>
		<author><name>TigerZhang</name></author>	</entry>

	</feed>