Редактирование:StorageInterface

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

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
<div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output">Данная библиотека для Inner Core позволяет описать взаимодействие блоков с трубами, воронками и прочими предметами для транспортировки предметов и жидкостей с помощью&nbsp;интерфейсов хранилищ, а так же добавляет методы для извлечения и загрузки предметов и жидкостей. <div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output">
+
<div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output">
 +
Данная библиотека для Inner Core позволяет описать взаимодействие блоков с трубами, воронками и прочими предметами для транспортировки предметов и жидкостей с помощью&nbsp;интерфейсов хранилищ, а так же добавляет методы для извлечения и загрузки предметов и жидкостей.
 +
 
 +
<div class="mw-parser-output"><div class="mw-parser-output">
 
== Загрузка ==
 
== Загрузка ==
  
Строка 5: Строка 8:
 
|-
 
|-
 
| Версия
 
| Версия
| style="width: 36px;" | Ссылка
+
| Ссылка
| style="width: 393px;" | Список изменений
+
| style="width: 280px;" | Список изменений
| style="width: 250px;" | Дата релиза
+
| style="width: 350px;" | Дата релиза
|-
 
| '''12'''
 
| style="width: 36px;" | [https://github.com/MineExplorer/IC_Libraries/releases/tag/storage-interface-v12 Скачать]
 
| style="width: 393px;" |
 
*getOutputSlots возвращает пустые слоты tile entity
 
 
 
| style="width: 250px;" | 07.08.2021
 
|-
 
| '''11'''
 
| style="width: 36px;" | [https://github.com/MineExplorer/IC_Libraries/releases/tag/storage-interface-v11 Скачать]
 
| style="width: 393px;" |
 
*Библиотека поддерживает&nbsp;предметы с отрицательными ид
 
*В интерфейс хранилища добавлены следующие поля:<br/> -&nbsp;liquidUnitRatio<br/> -&nbsp;getInputTank(side)<br/> -&nbsp;getOutputTank(side)<br/> -&nbsp;receiveLiquid(liquidStorage, liquid, amount)<br/> -&nbsp;extractLiquid(liquidStorage, liquid, amount)<br/> И удалены поля: addLiquid. getLiquid, getLiquidStored, getLiquidStorage
 
 
 
| style="width: 250px;" | 01.04.2021
 
|-
 
| '''10'''
 
| style="width: 36px;" | [https://github.com/MineExplorer/IC_Libraries/releases/tag/storage-interface-v10 Скачать]
 
| style="width: 393px;" |
 
*Метод newStorage переименован в getInterface
 
*Исправлен стак предметов при использовании функций валидации и макс. стака в ItemContainer из библиотеки
 
 
 
| style="width: 250px;" | 09.01.2021
 
|-
 
| '''9'''
 
| style="width: 36px;" | [https://github.com/MineExplorer/IC_Libraries/releases/tag/storage-interface-v9 Скачать]
 
| style="width: 393px;" |
 
*Новые методы для интерфейсов хранилищ:<br/> - getContainerSlots()<br/> -&nbsp;getInputSlots(side)<br/> -&nbsp;getReceivingItemCount(item, side)<br/> -&nbsp;addItemToSlot(name, item, maxCount)<br/> -&nbsp;clearContainer()
 
*Исправлен стандартный интерфейс TIleEntity
 
 
 
| style="width: 250px;" | 14.12.2020
 
|-
 
| '''8'''
 
| style="width: 36px;" | [https://github.com/MineExplorer/IC_Libraries/releases/tag/storage-interface-v8 Скачать]
 
| style="width: 393px;" |
 
*Поддержка мультиплеера
 
*Добавлены стандартные интерфейсы для всех видов контейнеров
 
*Добавлены методы для получение интерфейсов хранилищ
 
*Добавлены методы для установки валидации предметов и макс стака&nbsp;слотов в ItemContainer
 
 
 
| style="width: 250px;" | 10.12.2020
 
|-
 
| '''7'''
 
| style="text-align: center; width: 36px;" | -
 
| style="width: 393px;" |
 
- В описании слота в интерфейсе хранилища теперь можно указать стороны, через которые с ним можно взаимодействовать
 
 
 
| style="width: 250px;" | 10.06.2020
 
|-
 
| '''6'''
 
| style="width: 36px;" | [https://yadi.sk/d/TITakdpdsjIGug Скачать]
 
| style="width: 393px;" | - Библиотека обновлена на InnerCore для Horizon: добавлена поддержка новых ванильных контейнеров.
 
| style="width: 250px;" | 18.04.2020
 
|-
 
| '''5'''
 
| style="width: 36px;" | [https://yadi.sk/d/Om5TRGdlhylfQA Скачать]
 
| style="width: 393px;" | - Исправлена ошибка взаимодействия с tile entity без интерфейса хранилища в методе StorageInterface.transportLiquid
 
| style="width: 250px;" | 09.03.2020
 
 
|-
 
|-
| '''4'''
+
| 4
| style="width: 36px;" | [https://yadi.sk/d/1gBu4a-fEme-jA Скачать]
+
| [https://yadi.sk/d/ayrPIjyJdjX-HQ Скачать]
| style="width: 393px;" |  
+
| style="width: 280px;" |  
*Улучшена работа с жидкостями  
+
- Улучшена работа с жидкостями<br/> -&nbsp;extractItemsFromContainer теперь принимает первым аргументом контейнер, а не tileEntity
*В интерфейс добавлено поле liquidStorage
 
  
| style="width: 250px;" | 05.03.2020
+
| style="width: 350px;" | 04.03.2020
 
|-
 
|-
 
| '''3'''
 
| '''3'''
| style="width: 36px;" | [https://drive.google.com/file/d/1Hsp2nLIER0wF-ZzDvdsy1btxWFhnebv1/view?usp=sharing Скачать]
+
| [https://drive.google.com/file/d/1Hsp2nLIER0wF-ZzDvdsy1btxWFhnebv1/view?usp=sharing Скачать]
| style="width: 393px;" | - Релиз библиотеки
+
| style="width: 280px;" | релиз библиотеки
| style="width: 250px;" | 02.02.2020
+
| style="width: 350px;" | 02.02.2020
 
|}
 
|}
</div> <div class="mw-parser-output">&nbsp;</div> </div> </div> </div> </div>  
+
</div> </div>
 +
 
 
== Импорт ==
 
== Импорт ==
  
Для добавления библиотеки в мод ее файл ''([https://github.com/MineExplorer/IC_Libraries/blob/master/library/StorageInterface.js StorageInterface.js])'' нужно добавить в директорию ''lib/'' в директории мода (если таковой нету, то ее нужно создать).
+
Для добавления библиотеки в мод ее файл ''([https://github.com/MineExplorer/IndustrialCraft_2/blob/master/IndustrialCraft²/lib/StorageInterface.js StorageInterface.js])'' нужно добавить в директорию ''lib/'' в директории мода (если таковой нету, то ее нужно создать).
  
Для импорта библиотеки в мод в заголовочном файле (или если он отсутствует в первом файле кода) следует добавить строку:
+
Для импорта библиотеки в мод в заголовочном файле (или если он остутвует в первом файле кода) следует добавить строку:
<pre>IMPORT("StorageInterface");
+
<pre>IMPORT("StorageInterface");</pre>
</pre>
 
  
 +
<div class="mw-parser-output">
 
== Интерфейсы хранилищ блоков ==
 
== Интерфейсы хранилищ блоков ==
  
Интерфейсы хранилищ объединяют в себе функции для работы с контейнерами и хранилищем жидкости и позволяют описать логику передачи предметов и жидкостей. В библиотеке есть стандартные интерфейсы для ванильных контейнеров и TileEntity, но вы можете зарегистрировать свой собственный для вашего TileEntity.
+
На данный момент интерфейсы привязываются только к tile entity, но в будущем по умолчанию интерфейсы будут прописаны у контейнеров из Майнкрафта, прежде всего печки.
<div class="mw-parser-output"><div class="mw-parser-output">
 
=== Регистрация интерфейса&nbsp;хранилища ===
 
  
''StorageInterface.createInterface(id блока, прототип интерфейса).''
+
Интерфейс для хранилища добавляется с помощью метода&nbsp;''StorageInterface.createInterface(id блока, объект интерфейса)''&nbsp;и в общем виде выглядит так:
 +
<div style="background:#eeeeee;border:1px solid #cccccc;padding:5px 10px;">StorageInterface.createInterface(id блока, {<br/> &nbsp;&nbsp;&nbsp;&nbsp;slots: {<br/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"slot1": {<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;input: bool, // может ли слот принимать предметы<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;output: bool, // может ли слот отдавать предметы<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;isValid: function(item, side, tileEntity){ // может ли слот принять предмет item со стороны side<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return bool;<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;},<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;canOutput: function(item, side, tileEntity){ // можно ли извлечь предмет из слота (item - предмет в слоте)<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return bool;<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;},<br/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"slot2": {<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;...<br/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;...<br/> &nbsp;&nbsp;&nbsp;&nbsp;},<br/> &nbsp;&nbsp; &nbsp;isValidInput: function(item, side, tileEntity){ // аналогична функции isValid слота, но действует на все слоты контейнера<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return true;<br/> &nbsp;&nbsp; &nbsp;},<br/> &nbsp;&nbsp; &nbsp;addItem: function(item, side, maxCount){&nbsp;return int; }, // функция добавления предмета<br/> &nbsp;&nbsp; &nbsp;getItems: function(side){ return []; }, // кастомная функция получения предметов для извлечения<br/> &nbsp;&nbsp; &nbsp;<br/> &nbsp;&nbsp; &nbsp;// методы работы с хранилищем жидкости<br/> &nbsp;&nbsp; &nbsp;canReceiveLiquid: function(liquid, side){ return false; }, // может ли tile entity принять жидкость (liquid - название жидкости)<br/> &nbsp;&nbsp; &nbsp;canTransportLiquid: function(liquid, side){ return false; }, // может ли tile entity отдать жидкость (liquid - название жидкости)<br/> &nbsp;&nbsp; &nbsp;addLiquid: function(liquid, amount){&nbsp;// функция добавление жидкости<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return this.tileEntity.liquidStorage.addLiquid(luquid, amount);<br/> &nbsp;&nbsp; &nbsp;}<br/> &nbsp;&nbsp; &nbsp;getLiquid: function(liquid, amount){ // функция извлечения жидкости<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return this.tileEntity.liquidStorage.getLiquid(luquid, amount);<br/> &nbsp;&nbsp; &nbsp;}<br/> });</div>
 +
Здесь указаны все функции объекта интерфейса, которые можно задать этим методом. При их отсутствии добавляются функции по умолчанию, и для некоторых функций приведёт их код.
  
Все параметры слотов и функции прототипа интерфейса опциональны.<br/> Прототип интерфейса выглядит так:
+
Добавление интерфейса для tile entity на примере железной печки из мода IndustrialCraft 2
<syntaxhighlight lang="JavaScript">StorageInterface.createInterface(id блока, {
+
<div style="background:#eeeeee;border:1px solid #cccccc;padding:5px 10px;">StorageInterface.createInterface(BlockID.ironFurnace, {<br/> &nbsp;&nbsp; &nbsp;slots: {<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;"slotSource": {<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; input: true,<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;isValid: function(item, side){<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return side&nbsp;!= 0 && Recipes.getFurnaceRecipeResult(item.id, "iron");<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;},<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;"slotFuel": {<br/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;input: true,&nbsp;<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;isValid: function(item, side){<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return side&nbsp;!= 1 && Recipes.getFuelBurnDuration(item.id, item.data) > 0;<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;},<br/> &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;"slotResult": {output: true}<br/> &nbsp;&nbsp; &nbsp;}<br/> });</div> <div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output">&nbsp;</div> </div> </div> </div> </div> </div> </div> </div>
    slots: {
 
        "slot1": {
 
            input: boolean, // может ли слот принимать предметы
 
            output: boolean, // может ли слот отдавать предметы
 
            // Сторона блока, через которую доступен слот.
 
            // Значение - число или одна из настроек: "horizontal", "verctical", "down", "up".
 
            side: int | string,
 
            // Максимальное количество предметов в слоте
 
           maxStack: int,
 
            // Может ли слот принять предмет item со стороны side
 
            isValid: function(item, side, tileEntity) {
 
                return boolean;
 
            },
 
            // Можно ли извлечь предмет из слота (item - предмет в слоте)
 
            canOutput: function(item, side, tileEntity) {
 
                return boolean;
 
            }
 
        },
 
        // Все слоты с именем slot и индексами от 2 до 10 (slot2, ..., slot10).
 
        "slot^2-10": {
 
            ...
 
        },
 
        ...
 
    },
 
   liquidUnitRatio: 1, // количество вёдер жидкости в базовом юните жидкости
 
   // функции интерфейса
 
});</syntaxhighlight>
 
</div> </div>  
 
=== <br/> Функции интерфейса хранилища ===
 
  
Интерфейс хранилища обладает следующими функциями. Вы можете заменить их на свои в прототипе интерфейса при регистрации.
+
<div class="mw-parser-output">
 +
<div class="mw-parser-output">
 +
== Методы для передачи предметов и жидкостей ==
  
 
{| border="1" cellpadding="1" cellspacing="1"
 
{| border="1" cellpadding="1" cellspacing="1"
Строка 137: Строка 55:
 
| Описание
 
| Описание
 
|-
 
|-
| '''getSlot'''
+
| '''getNearestContainers'''
| name
+
| coords, side, sideExcluded
| Возвращает слот контейнера.
+
| Возвращает соседние с блоком на координатах ''coords ''контейнеры в виде массива. Если указан параметр ''side'', то вернёт контейнер с этой стороны. Если ''sideExcluded ''равен ''true'', то наоборот, все контейнеры кроме контейнера с указанной стороны.
 
|-
 
|-
| '''setSlot'''
+
| '''getNearestLiquidStorages'''
| name, id, count, data, extra
+
| coords, side, sideExcluded
| Устанавливает предмет в слот контейнера.
+
| Аналогична предыдущей, но возвращает все соседние tile entity, имеющие хранилища жидкостей.
 
|-
 
|-
| '''isValidInput'''
+
| '''putItems'''
| item, side, tileEntity
+
| items, containers
| Аналогична функции isValid слота, но действует на все слоты контейнера. По умолчанию возвращает true.
+
| Добавляет предметы из массива items в контейнеры из массива containers. Удобно использовать в связке с методом&nbsp;''getNearestContainers'''''.'''
 
|-
 
|-
| '''addItem'''
+
| '''putItemToContainer'''
| item, side, maxCount
+
| item, container, side, maxCount
| Функция добавления предмета. Возвращает количество добавленных предметов.
+
| Метод более низкого уровня, на котором основана работа предыдущего метода. Добавляет стак предметов в контейнер, но позволяет также указать максимальное количество предметов, которое может быть передано за раз.
|-
 
| '''addItemToSlot'''
 
| name, item, maxCount
 
| Добавляет предмет в слот контейнера, maxCount - максимальное количество предмета, которое будет добавлено.
 
 
|-
 
|-
 +
| '''extractItemsFromContainer'''
 +
| inputContainer, container, side, maxCount, oneStack
 
|  
 
|  
'''getReceivingItemCount'''
+
Позволяет извлечь предмет из контейнера и добавить его в tile entity.<br/> '''inputContainer '''- контейнер, в который будут добавлены предметы<br/> '''container '''- контейнер, из которого будут извлечены предметы<br/> '''maxCount '''- сколько предметов извлечь [опционально]<br/> '''oneStack '''- если true, то будет извлечён только один стак предметов.
  
| item, side
 
| Возвращает сколько предметов из стака контейнер может принять.
 
 
|-
 
|-
 +
| '''transportLiquid'''
 +
| liquid, maxAmount, outputTile, inputTile, outputSide
 
|  
 
|  
'''getContainerSlots'''
+
Передаёт жидкость из одного tile entity в другой.<br/> '''liquid&nbsp;'''- название жидкости<br/> '''maxAmount&nbsp;'''- максимальное количество, которое будет передано<br/> '''outputTile&nbsp;'''- tile entity, из которого будет передана жидкость<br/> '''inputTile&nbsp;'''- tile entity, в который будет передана жидкость<br/> '''outputSide&nbsp;'''- сторона, через которую передаётся жидкость
  
| -
 
| Возвращает все слоты контейнера
 
 
|-
 
|-
| '''getInputSlots'''
+
| '''extractLiquid'''
| side
+
| liquid, maxAmount, inputTile, outputTile, inputSide
| Возвращяет названия слотов входа,&nbsp;доступных со стороны ''side''.
 
|-
 
| '''getOutputSlots'''
 
| side
 
| Возвращает названия слотов выхода,&nbsp;доступных со стороны ''side''.
 
|-
 
| '''clearContainer'''
 
| -
 
| Очищает содержимое контейнера
 
|-
 
| '''canReceiveLiquid'''
 
| liquid, side
 
| Может ли&nbsp;TileEntity принять жидкость с именем ''liquid ''со стороны ''side''. По умолчанию возвращает true если в liquidStorage установлен лимит для этой жидкости.
 
|-
 
| '''canTransportLiquid'''
 
| liquid, side
 
| Может ли TileEntity отдать жидкость с именем ''liquid ''со стороны ''side''.&nbsp;По умолчанию возвращает true.
 
|-
 
| '''receiveLiquid'''
 
| liquidStorage, liquid, amount
 
 
|  
 
|  
Функция добавление жидкости в хранилище.<br/> '''liquidStorage'''&nbsp;- хранилище, принимающее жидкость<br/> '''liquid '''- название жидкости<br/> '''amount '''- количество жидкости
+
Похож на предыдущий, но позволяет извлечь жидкость из tile entity<br/> '''liquid '''- в отличие от предыдущего метода жидкость может быть не указана, тогда извлечёт жидкость, которая хранится в&nbsp;''outputTile''.<br/> '''inputSide '''- сторона, в&nbsp;которую будет поступать жидкость
  
 
|-
 
|-
| '''extractLiquid'''
+
| '''checkHoppers'''
| liquidStorage, liquid, amount
+
| tileEntity
| Функция извлечения жидкости из хранилища.
+
| Позволяет tile entity взаимодействовать с воронками. Для этого должна выполняться в функции тика tile entity. Требует интерфейса хранилища у tile entity для работы.
 
|-
 
|-
| '''getInputTank'''
+
| '''addItemToSlot'''
| side
+
| item, slot, count
|  
+
| Внутренний метод библиотеки для добавления предмета в слот. При использовании на нативном контейнере нужно также установить слот, используя&nbsp;''container.setSlot.''
Возвращает входное&nbsp;хранилище жидкости TileEntity. По умолчанию возвращает&nbsp;liquidStorage.<br/> '''side&nbsp;'''- сторона с которой будет производиться работа
 
 
 
|-
 
| '''getOutputTank'''
 
| side
 
|
 
Возвращает выходное хранилище жидкости TileEntity.&nbsp;По умолчанию возвращает&nbsp;liquidStorage.<br/> '''side&nbsp;'''- сторона с которой будет производиться работа
 
 
 
 
|}
 
|}
<div class="mw-parser-output"><br/> В экземпляре интерфейса также есть следующие поля:</div> <div class="mw-parser-output">''isNativeContainer ''- true если контейнер является ванильным, false если&nbsp;из TileEntity.</div> <div class="mw-parser-output">''container ''- контейнер;<br/> ''tileEntity ''- если создан для TileEntity.</div> <div class="mw-parser-output">&nbsp;</div> <div class="mw-parser-output">Регистрация интерфейса для TileEntity&nbsp;на примере железной печки из мода IndustrialCraft 2</div> <syntaxhighlight lang="JavaScript">StorageInterface.createInterface(BlockID.ironFurnace, {
+
<div class="mw-parser-output">&nbsp;</div> <div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output">&nbsp;</div> </div> </div> </div></div>
    slots: {
 
        "slotSource": {
 
            input: true,
 
            side: "up",
 
            isValid: function(item, side){
 
                return Recipes.getFurnaceRecipeResult(item.id, "iron");
 
            }
 
        },
 
        "slotFuel": {
 
            input: true,
 
            side: "horizontal",
 
            isValid: function(item, side){
 
                return Recipes.getFuelBurnDuration(item.id, item.data) > 0;
 
            }
 
        },
 
        "slotResult": {output: true}
 
    }
 
});</syntaxhighlight>
 
<div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output"><div class="mw-parser-output">
 
=== Методы для получения&nbsp;интерфесов хранилищ ===
 
 
 
*'''StorageInterface.getInterface('''''container ''или ''tileEntity''''')''' - возвращает интерфейс хранилища для TileEntity или контейнера.
 
*'''StorageInterface.getStorage('''''blockSource, x, y, z''''')''' - возвращает интерфейс хранилища для контейнера на координатах
 
*'''StorageInterface.getLiquidStorage('''''blockSource, x, y, z''''')''' - возвращает интерфейс для TileEntity,&nbsp;хранящего жидкости,&nbsp;по&nbsp;координатам.
 
*'''StorageInterface.getNeighbourStorage('''''blockSource, coords, side''''')''' - возвращает интерфейс хранилища для соседнего блока со стороны side.
 
*'''StorageInterface.getNeighbourLiquidStorage('''''blockSource, coords, side''''')''' - возвращает интерфейс для соседнего TileEntity, хранящего жидкости,&nbsp;со стороны side
 
</div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div>
 
== Остальные методы StorageInterface ==
 
 
 
{| border="1" cellpadding="1" cellspacing="1"
 
|-
 
| style="width: 178px;" | Название
 
| style="width: 114px;" | Аргументы
 
| style="width: 458px;" | Описание
 
|-
 
| style="width: 178px;" | '''getNearestContainers'''
 
| style="width: 114px;" | coords, blockSource
 
| style="width: 458px;" | Возвращает соседние контейнеры относительно блока на координатах ''coords ''в виде объекта, где ключами являются стороны блока.
 
|-
 
| style="width: 178px;" | '''getNearestLiquidStorages'''
 
| style="width: 114px;" | coords, blockSource
 
| style="width: 458px;" | Работает аналогично предыдущему, но возвращает интерфейсы хранилищ для всех соседних TileEntity, имеющих хранилища жидкостей.
 
|-
 
| style="width: 178px;" | '''putItems'''
 
| style="width: 114px;" | items, containers
 
| style="width: 458px;" | Добавляет предметы из массива items в контейнеры из объекта, возвращаемого методом&nbsp;''getNearestContainers'''''.'''
 
|-
 
| style="width: 178px;" | '''putItemToContainer'''
 
| style="width: 114px;" | item, container, side, maxCount
 
| style="width: 458px;" |
 
Добавляет стак предметов в контейнер.<br/> '''maxCount '''- максимальное количество предметов, которое может быть передано за раз&nbsp;(по умолчанию 64).
 
 
 
Возвращает количество переданных предметов.
 
 
 
|-
 
| style="width: 178px;" | '''extractItemsFromContainer'''
 
| style="width: 114px;" | inputСontainer , outputContainer, side, maxCount, oneStack
 
| style="width: 458px;" |
 
Позволяет извлечь предмет из контейнера и добавить его в tile entity или контейнер.<br/> '''inputStorage&nbsp;'''- TileEntity или контейнер, в который будут добавлены предметы<br/> '''outputContainer '''- контейнер, из которого будут извлечены предметы<br/> '''maxCount '''- сколько предметов может быть извлечено (по умолчанию не ограничено)<br/> '''oneStack '''- если true, то извлечёт&nbsp;только один стак предметов.
 
 
 
Возвращает количество переданных предметов.
 
 
 
|-
 
| style="width: 178px;" | '''extractItemsFromStorage'''
 
| style="width: 114px;" | inputStorage, outputStorage, side, maxCount, oneStack
 
| style="width: 458px;" | Аналогичен предыдущему, но принимает аргументами интерфейсы хранилищ.
 
|-
 
| style="width: 178px;" | '''transportLiquid'''
 
| style="width: 114px;" | liquid, maxAmount, outputStorage, inputStorage, outputSide
 
| style="width: 458px;" |
 
Передаёт жидкость из одного TileEntity в другой.<br/> '''liquid&nbsp;'''- название жидкости<br/> '''maxAmount&nbsp;'''- максимальное количество, которое будет передано<br/> '''outputStorage&nbsp;'''- интерфейс хранилища или TileEntity, из которого будет передана жидкость<br/> '''inputStorage&nbsp;'''- интерфейс хранилища, принимающего жидкость<br/> '''outputSide&nbsp;'''- сторона блока, через которую передаётся жидкость.
 
 
 
Возвращает количество переданной жидкости.
 
 
 
|-
 
| style="width: 178px;" | '''extractLiquid'''
 
| style="width: 114px;" | liquid, maxAmount, inputStorage, outputStorage, inputSide
 
| style="width: 458px;" |
 
Похож на предыдущий, но позволяет извлечь жидкость из TileEntity<br/> '''liquid '''- название жидкости. Если не указано, то извлечёт любую жидкость&nbsp;из&nbsp;''outputStorage'',&nbsp;если она может быть принята в&nbsp;''inputStorage.''<br/> '''inputStorage&nbsp;'''- интерфейс хранилища или TileEntity,&nbsp;принимающий жидкость<br/> '''outputStorage&nbsp;'''- интерфейс хранилища, из которого будет извлечена жидкость<br/> '''inputSide '''- сторона блока, которая будет принимать жидкость.
 
  
Возвращает количество переданной жидкости.
+
== Обратная совместимость ==
  
|-
+
Данная библиотека совместима с модами, использующими старый стандарт описания слотов tile entity&nbsp;через функцию&nbsp;''getTransportSlots'', а так же&nbsp;добавляет эту функцию&nbsp;и функцию ''addTransportedItem ''для tile entity при создании его интерфейса.
| style="width: 178px;" | '''checkHoppers'''
+
</div>
| style="width: 114px;" | tileEntity
 
| style="width: 458px;" | Позволяет TileEntity взаимодействовать с воронками. Для этого должен вызываться в функции тика TileEntity .
 
|-
 
| style="width: 178px;" | '''addItemToSlot'''
 
| style="width: 114px;" | item, slot, maxCount
 
| style="width: 458px;" |
 
Добавляет стак предметов&nbsp;в слот. Изменяет только объект слота, для корректной работы требуется установить слот через&nbsp;''container.setSlot.''<br/> '''maxCount '''- максимальное количество, которое будет передано в слот&nbsp;(по умолчанию 64).
 
 
 
Возвращает количество переданных предметов.
 
 
 
|}
 
</div> </div> </div> </div>
 

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