<?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=2.94.154.182&amp;*</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=2.94.154.182&amp;*"/>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=%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/2.94.154.182"/>
		<updated>2026-09-11T19:11:28Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StorageInterface&amp;diff=2401</id>
		<title>InnerCore/Libs/StorageInterface</title>
		<link rel="alternate" type="text/html" href="https://wiki.mineprogramming.org/index.php?title=InnerCore/Libs/StorageInterface&amp;diff=2401"/>
				<updated>2020-03-08T21:19:46Z</updated>
		
		<summary type="html">&lt;p&gt;2.94.154.182: &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;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
Данная библиотека для Inner Core позволяет описать взаимодействие блоков с трубами, воронками и прочими предметами для транспортировки предметов и жидкостей с помощью&amp;amp;nbsp;интерфейсов хранилищ, а так же добавляет методы для извлечения и загрузки предметов и жидкостей.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Загрузка ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Версия&lt;br /&gt;
| Ссылка&lt;br /&gt;
| style=&amp;quot;width: 280px;&amp;quot; | Список изменений&lt;br /&gt;
| style=&amp;quot;width: 350px;&amp;quot; | Дата релиза&lt;br /&gt;
|-&lt;br /&gt;
| '''5'''&lt;br /&gt;
| [https://yadi.sk/d/Om5TRGdlhylfQA Скачать]&lt;br /&gt;
| style=&amp;quot;width: 280px;&amp;quot; | - Исправлена ошибка взаимодействия с tile entity без интерфейса хранилища в методе StorageInterface.transportLiquid&lt;br /&gt;
| style=&amp;quot;width: 350px;&amp;quot; | 09.03.2020&lt;br /&gt;
|-&lt;br /&gt;
| '''4'''&lt;br /&gt;
| [https://yadi.sk/d/1gBu4a-fEme-jA Скачать]&lt;br /&gt;
| style=&amp;quot;width: 280px;&amp;quot; | &lt;br /&gt;
- Улучшена работа с жидкостями&amp;lt;br/&amp;gt; - В интерфейс добавлено поле liquidStorage&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width: 350px;&amp;quot; | 05.03.2020&lt;br /&gt;
|-&lt;br /&gt;
| '''3'''&lt;br /&gt;
| [https://drive.google.com/file/d/1Hsp2nLIER0wF-ZzDvdsy1btxWFhnebv1/view?usp=sharing Скачать]&lt;br /&gt;
| style=&amp;quot;width: 280px;&amp;quot; | релиз библиотеки&lt;br /&gt;
| style=&amp;quot;width: 350px;&amp;quot; | 02.02.2020&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Импорт ==&lt;br /&gt;
&lt;br /&gt;
Для добавления библиотеки в мод ее файл ''([https://github.com/MineExplorer/IndustrialCraft_2/blob/master/IndustrialCraft²/lib/StorageInterface.js StorageInterface.js])'' нужно добавить в директорию ''lib/'' в директории мода (если таковой нету, то ее нужно создать).&lt;br /&gt;
&lt;br /&gt;
Для импорта библиотеки в мод в заголовочном файле (или если он остутвует в первом файле кода) следует добавить строку:&lt;br /&gt;
&amp;lt;pre&amp;gt;IMPORT(&amp;quot;StorageInterface&amp;quot;);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&lt;br /&gt;
== Интерфейсы хранилищ блоков ==&lt;br /&gt;
&lt;br /&gt;
На данный момент интерфейсы привязываются только к tile entity, но в будущем по умолчанию интерфейсы будут прописаны у контейнеров из Майнкрафта, прежде всего печки.&lt;br /&gt;
&lt;br /&gt;
Интерфейс для хранилища добавляется с помощью метода&amp;amp;nbsp;''StorageInterface.createInterface(id блока, объект интерфейса).''&amp;lt;br/&amp;gt; Регистрация слотов в интерфейсе выглядит так:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StorageInterface.createInterface(id блока, {&lt;br /&gt;
    slots: {&lt;br /&gt;
        &amp;quot;slot1&amp;quot;: {&lt;br /&gt;
            input: true/false, // может ли слот принимать предметы&lt;br /&gt;
            output: true/false, // может ли слот отдавать предметы&lt;br /&gt;
            isValid: function(item, side, tileEntity){ // может ли слот принять предмет item со стороны side&lt;br /&gt;
                return true/false;&lt;br /&gt;
            },&lt;br /&gt;
            canOutput: function(item, side, tileEntity){ // можно ли извлечь предмет из слота (item - предмет в слоте)&lt;br /&gt;
                return true/false;&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;slot2&amp;quot;: {&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;
&amp;lt;br/&amp;gt; Так же интерфейс хранилища обладает следующими функциями, которые могут быть перезаписаны в объекте интерфейса:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Название&lt;br /&gt;
| Аргументы&lt;br /&gt;
| Описание&lt;br /&gt;
|-&lt;br /&gt;
| '''isValidInput'''&lt;br /&gt;
| item, side, tileEntity&lt;br /&gt;
| Аналогична функции isValid слота, но действует на все слоты контейнера. По умолчанию возвращает true.&lt;br /&gt;
|-&lt;br /&gt;
| '''addItem'''&lt;br /&gt;
| item, side, maxCount&lt;br /&gt;
| Функция добавления предмета, может быть перезаписана. Возвращает количество добавленных предметов.&lt;br /&gt;
|-&lt;br /&gt;
| '''getOutputSlots'''&lt;br /&gt;
| side&lt;br /&gt;
| Возвращяет слоты выхода, с которыми возможна работа с определённой стороны.&lt;br /&gt;
|-&lt;br /&gt;
| '''canReceiveLiquid'''&lt;br /&gt;
| liquid, side&lt;br /&gt;
| Может ли tile entity принять жидкость с именем ''liquid ''со стороны ''side''. По умолчанию возвращает false.&lt;br /&gt;
|-&lt;br /&gt;
| '''canTransportLiquid'''&lt;br /&gt;
| liquid, side&lt;br /&gt;
| Может ли tile entity отдать жидкость с именем ''liquid ''со стороны ''side''.&amp;amp;nbsp;По умолчанию возвращает false.&lt;br /&gt;
|-&lt;br /&gt;
| '''addLiquid'''&lt;br /&gt;
| liquid, amount&lt;br /&gt;
| Функция добавление жидкости. По умолчанию работает с liquidStorage.&lt;br /&gt;
|-&lt;br /&gt;
| '''getLiquid'''&lt;br /&gt;
| liquid, amount&lt;br /&gt;
| Функция извлечения жидкости.&amp;amp;nbsp;По умолчанию работает с liquidStorage.&amp;amp;nbsp;В функциях StorageInterface для передачи жидкости сначала извлекается весь возможный объём жидкости, а потом функция вызывается повторно с отрицательным ''amount&amp;amp;nbsp;''для возвращения жидкости, которую не удалось передать.&lt;br /&gt;
|-&lt;br /&gt;
| '''getLiquidStored'''&lt;br /&gt;
| storage, side&lt;br /&gt;
| Функция получения жидкости, хранящейся в tile entity. В функциях StorageInterface аргумент ''storage&amp;amp;nbsp;''равен ''&amp;quot;input&amp;quot; ''если проверяется жидкость для добавления, и''&amp;quot;output&amp;quot;'' если для извлечения.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;Интерфейс хранилища&amp;amp;nbsp;сохраняется в поле ''interface ''объекта&amp;amp;nbsp;tile entity. В экземпляре интерфейса есть следующие указатели:&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;''tileEntity ''- на tile entity, к которому он привязан;&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;''container ''- на контейнер tile entity;&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;''liquidStorage ''- на хранилище жидкости tileEntity.&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;Добавление интерфейса для tile entity на примере железной печки из мода IndustrialCraft 2&amp;lt;/div&amp;gt; &amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;StorageInterface.createInterface(BlockID.ironFurnace, {&lt;br /&gt;
    slots: {&lt;br /&gt;
        &amp;quot;slotSource&amp;quot;: {&lt;br /&gt;
            input: true,&lt;br /&gt;
            isValid: function(item, side){&lt;br /&gt;
                return side != 0 &amp;amp;&amp;amp; Recipes.getFurnaceRecipeResult(item.id, &amp;quot;iron&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;slotFuel&amp;quot;: {&lt;br /&gt;
            input: true, &lt;br /&gt;
            isValid: function(item, side){&lt;br /&gt;
                return side != 1 &amp;amp;&amp;amp; Recipes.getFuelBurnDuration(item.id, item.data) &amp;gt; 0;&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;slotResult&amp;quot;: {output: true}&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;
== Методы для передачи предметов и жидкостей ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Название&lt;br /&gt;
| Аргументы&lt;br /&gt;
| Описание&lt;br /&gt;
|-&lt;br /&gt;
| '''getNearestContainers'''&lt;br /&gt;
| coords, side, sideExcluded&lt;br /&gt;
| Возвращает соседние с блоком на координатах ''coords ''контейнеры в виде массива. Если указан параметр ''side'', то вернёт контейнер с этой стороны. Если ''sideExcluded ''равен ''true'', то наоборот, все контейнеры кроме контейнера с указанной стороны.&lt;br /&gt;
|-&lt;br /&gt;
| '''getNearestLiquidStorages'''&lt;br /&gt;
| coords, side, sideExcluded&lt;br /&gt;
| Аналогична предыдущей, но возвращает все соседние tile entity, имеющие хранилища жидкостей.&lt;br /&gt;
|-&lt;br /&gt;
| '''putItems'''&lt;br /&gt;
| items, containers&lt;br /&gt;
| Добавляет предметы из массива items в контейнеры из массива containers. Удобно использовать в связке с методом&amp;amp;nbsp;''getNearestContainers'''''.'''&lt;br /&gt;
|-&lt;br /&gt;
| '''putItemToContainer'''&lt;br /&gt;
| item, container, side, maxCount&lt;br /&gt;
| Метод более низкого уровня, на котором основана работа предыдущего метода. Добавляет стак предметов в контейнер, но позволяет также указать максимальное количество предметов, которое может быть передано за раз.&lt;br /&gt;
|-&lt;br /&gt;
| '''extractItemsFromContainer'''&lt;br /&gt;
| inputTile, container, side, maxCount, oneStack&lt;br /&gt;
| &lt;br /&gt;
Позволяет извлечь предмет из контейнера и добавить его в tile entity.&amp;lt;br/&amp;gt; '''inputTile&amp;amp;nbsp;'''- tile entity, в который будут добавлены предметы&amp;lt;br/&amp;gt; '''container '''- контейнер, из которого будут извлечены предметы&amp;lt;br/&amp;gt; '''maxCount '''- сколько предметов извлечь [опционально]&amp;lt;br/&amp;gt; '''oneStack '''- если true, то будет извлечён только один стак предметов.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''transportLiquid'''&lt;br /&gt;
| liquid, maxAmount, outputTile, inputTile, outputSide&lt;br /&gt;
| &lt;br /&gt;
Передаёт жидкость из одного tile entity в другой.&amp;lt;br/&amp;gt; '''liquid&amp;amp;nbsp;'''- название жидкости&amp;lt;br/&amp;gt; '''maxAmount&amp;amp;nbsp;'''- максимальное количество, которое будет передано&amp;lt;br/&amp;gt; '''outputTile&amp;amp;nbsp;'''- tile entity, из которого будет передана жидкость&amp;lt;br/&amp;gt; '''inputTile&amp;amp;nbsp;'''- tile entity, в который будет передана жидкость&amp;lt;br/&amp;gt; '''outputSide&amp;amp;nbsp;'''- сторона, через которую передаётся жидкость&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''extractLiquid'''&lt;br /&gt;
| liquid, maxAmount, inputTile, outputTile, inputSide&lt;br /&gt;
| &lt;br /&gt;
Похож на предыдущий, но позволяет извлечь жидкость из tile entity&amp;lt;br/&amp;gt; '''liquid '''- в отличие от предыдущего метода жидкость может быть не указана, тогда извлечёт жидкость, которая хранится в&amp;amp;nbsp;''outputTile''.&amp;lt;br/&amp;gt; '''inputSide '''- сторона, в&amp;amp;nbsp;которую будет поступать жидкость&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''checkHoppers'''&lt;br /&gt;
| tileEntity&lt;br /&gt;
| Позволяет tile entity взаимодействовать с воронками. Для этого должна выполняться в функции тика tile entity. Требует интерфейса хранилища у tile entity для работы.&lt;br /&gt;
|-&lt;br /&gt;
| '''addItemToSlot'''&lt;br /&gt;
| item, slot, count&lt;br /&gt;
| Внутренний метод библиотеки для добавления предмета в слот. При использовании на нативном контейнере нужно также установить слот, используя&amp;amp;nbsp;''container.setSlot.''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;mw-parser-output&amp;quot;&amp;gt;&amp;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; &lt;br /&gt;
== Обратная совместимость ==&lt;br /&gt;
&lt;br /&gt;
Данная библиотека совместима с модами, использующими старый стандарт описания слотов tile entity&amp;amp;nbsp;через функцию&amp;amp;nbsp;''getTransportSlots'', а так же&amp;amp;nbsp;добавляет эту функцию&amp;amp;nbsp;и функцию ''addTransportedItem ''для tile entity при создании его интерфейса.&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;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>2.94.154.182</name></author>	</entry>

	</feed>